You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by yu...@apache.org on 2017/06/15 02:52:31 UTC

[01/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Repository: incubator-rocketmq-externals
Updated Branches:
  refs/heads/release-rocketmq-console-1.0.0 [created] e218eef94


http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_os-ge.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_os-ge.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_os-ge.js
new file mode 100644
index 0000000..45f5634
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_os-ge.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u04d5\u043c\u0431\u0438\u0441\u0431\u043e\u043d\u044b \u0440\u0430\u0437\u043c\u04d5",
+      "\u04d5\u043c\u0431\u0438\u0441\u0431\u043e\u043d\u044b \u0444\u04d5\u0441\u0442\u04d5"
+    ],
+    "DAY": [
+      "\u0445\u0443\u044b\u0446\u0430\u0443\u0431\u043e\u043d",
+      "\u043a\u044a\u0443\u044b\u0440\u0438\u0441\u04d5\u0440",
+      "\u0434\u044b\u0446\u0446\u04d5\u0433",
+      "\u04d5\u0440\u0442\u044b\u0446\u0446\u04d5\u0433",
+      "\u0446\u044b\u043f\u043f\u04d5\u0440\u04d5\u043c",
+      "\u043c\u0430\u0439\u0440\u04d5\u043c\u0431\u043e\u043d",
+      "\u0441\u0430\u0431\u0430\u0442"
+    ],
+    "ERANAMES": [
+      "\u043d.\u0434.\u0430.",
+      "\u043d.\u0434."
+    ],
+    "ERAS": [
+      "\u043d.\u0434.\u0430.",
+      "\u043d.\u0434."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u044f\u043d\u0432\u0430\u0440\u044b",
+      "\u0444\u0435\u0432\u0440\u0430\u043b\u044b",
+      "\u043c\u0430\u0440\u0442\u044a\u0438\u0439\u044b",
+      "\u0430\u043f\u0440\u0435\u043b\u044b",
+      "\u043c\u0430\u0439\u044b",
+      "\u0438\u044e\u043d\u044b",
+      "\u0438\u044e\u043b\u044b",
+      "\u0430\u0432\u0433\u0443\u0441\u0442\u044b",
+      "\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044b",
+      "\u043e\u043a\u0442\u044f\u0431\u0440\u044b",
+      "\u043d\u043e\u044f\u0431\u0440\u044b",
+      "\u0434\u0435\u043a\u0430\u0431\u0440\u044b"
+    ],
+    "SHORTDAY": [
+      "\u0445\u0446\u0431",
+      "\u043a\u0440\u0441",
+      "\u0434\u0446\u0433",
+      "\u04d5\u0440\u0442",
+      "\u0446\u043f\u0440",
+      "\u043c\u0440\u0431",
+      "\u0441\u0431\u0442"
+    ],
+    "SHORTMONTH": [
+      "\u044f\u043d\u0432.",
+      "\u0444\u0435\u0432.",
+      "\u043c\u0430\u0440.",
+      "\u0430\u043f\u0440.",
+      "\u043c\u0430\u044f",
+      "\u0438\u044e\u043d\u044b",
+      "\u0438\u044e\u043b\u044b",
+      "\u0430\u0432\u0433.",
+      "\u0441\u0435\u043d.",
+      "\u043e\u043a\u0442.",
+      "\u043d\u043e\u044f.",
+      "\u0434\u0435\u043a."
+    ],
+    "STANDALONEMONTH": [
+      "\u042f\u043d\u0432\u0430\u0440\u044c",
+      "\u0424\u0435\u0432\u0440\u0430\u043b\u044c",
+      "\u041c\u0430\u0440\u0442\u044a\u0438",
+      "\u0410\u043f\u0440\u0435\u043b\u044c",
+      "\u041c\u0430\u0439",
+      "\u0418\u044e\u043d\u044c",
+      "\u0418\u044e\u043b\u044c",
+      "\u0410\u0432\u0433\u0443\u0441\u0442",
+      "\u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c",
+      "\u041e\u043a\u0442\u044f\u0431\u0440\u044c",
+      "\u041d\u043e\u044f\u0431\u0440\u044c",
+      "\u0414\u0435\u043a\u0430\u0431\u0440\u044c"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM, y '\u0430\u0437'",
+    "longDate": "d MMMM, y '\u0430\u0437'",
+    "medium": "dd MMM y '\u0430\u0437' HH:mm:ss",
+    "mediumDate": "dd MMM y '\u0430\u0437'",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.yy HH:mm",
+    "shortDate": "dd.MM.yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "GEL",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "os-ge",
+  "localeID": "os_GE",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);


[11/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-ht.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-ht.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-ht.js
new file mode 100644
index 0000000..7b3de3d
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-ht.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "HTG",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-ht",
+  "localeID": "fr_HT",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-km.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-km.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-km.js
new file mode 100644
index 0000000..3e2880e
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-km.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "CF",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-km",
+  "localeID": "fr_KM",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-lu.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-lu.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-lu.js
new file mode 100644
index 0000000..7dd9fa4
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-lu.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-lu",
+  "localeID": "fr_LU",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-ma.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-ma.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-ma.js
new file mode 100644
index 0000000..bc69704
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-ma.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 5,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      5
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "dh",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-ma",
+  "localeID": "fr_MA",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-mc.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-mc.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-mc.js
new file mode 100644
index 0000000..db81a80
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-mc.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-mc",
+  "localeID": "fr_MC",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-mf.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-mf.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-mf.js
new file mode 100644
index 0000000..ff06ac7
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-mf.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-mf",
+  "localeID": "fr_MF",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-mg.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-mg.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-mg.js
new file mode 100644
index 0000000..1c40fe5
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-mg.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Ar",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-mg",
+  "localeID": "fr_MG",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-ml.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-ml.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-ml.js
new file mode 100644
index 0000000..1cead4c
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-ml.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "CFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-ml",
+  "localeID": "fr_ML",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-mq.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-mq.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-mq.js
new file mode 100644
index 0000000..120873b
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-mq.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-mq",
+  "localeID": "fr_MQ",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-mr.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-mr.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-mr.js
new file mode 100644
index 0000000..e2077a6
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-mr.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "MRO",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-mr",
+  "localeID": "fr_MR",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-mu.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-mu.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-mu.js
new file mode 100644
index 0000000..49d3369
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-mu.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "MURs",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-mu",
+  "localeID": "fr_MU",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-nc.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-nc.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-nc.js
new file mode 100644
index 0000000..c24e82a
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-nc.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFP",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-nc",
+  "localeID": "fr_NC",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-ne.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-ne.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-ne.js
new file mode 100644
index 0000000..0b605a2
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-ne.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "CFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-ne",
+  "localeID": "fr_NE",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-pf.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-pf.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-pf.js
new file mode 100644
index 0000000..6ff4bcc
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-pf.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFP",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-pf",
+  "localeID": "fr_PF",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-pm.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-pm.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-pm.js
new file mode 100644
index 0000000..4b715dc
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-pm.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-pm",
+  "localeID": "fr_PM",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-re.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-re.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-re.js
new file mode 100644
index 0000000..d25850c
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-re.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-re",
+  "localeID": "fr_RE",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-rw.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-rw.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-rw.js
new file mode 100644
index 0000000..1ecd2a0
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-rw.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "RF",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-rw",
+  "localeID": "fr_RW",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-sc.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-sc.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-sc.js
new file mode 100644
index 0000000..4cbc714
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-sc.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "SCR",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-sc",
+  "localeID": "fr_SC",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-sn.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-sn.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-sn.js
new file mode 100644
index 0000000..89ba8ed
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-sn.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "CFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-sn",
+  "localeID": "fr_SN",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-sy.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-sy.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-sy.js
new file mode 100644
index 0000000..d551707
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-sy.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 5,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      5
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u00a3",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-sy",
+  "localeID": "fr_SY",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-td.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-td.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-td.js
new file mode 100644
index 0000000..09753ea
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-td.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-td",
+  "localeID": "fr_TD",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-tg.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-tg.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-tg.js
new file mode 100644
index 0000000..ae0123f
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-tg.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "CFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-tg",
+  "localeID": "fr_TG",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-tn.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-tn.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-tn.js
new file mode 100644
index 0000000..0dec1f1
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-tn.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      5
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "din",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-tn",
+  "localeID": "fr_TN",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-vu.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-vu.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-vu.js
new file mode 100644
index 0000000..6553fe4
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-vu.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "VUV",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-vu",
+  "localeID": "fr_VU",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-wf.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-wf.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-wf.js
new file mode 100644
index 0000000..3b4d376
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-wf.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFP",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-wf",
+  "localeID": "fr_WF",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-yt.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-yt.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-yt.js
new file mode 100644
index 0000000..e4651cd
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-yt.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-yt",
+  "localeID": "fr_YT",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr.js
new file mode 100644
index 0000000..895c9ac
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr",
+  "localeID": "fr",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fur-it.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fur-it.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fur-it.js
new file mode 100644
index 0000000..4b5472c
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fur-it.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a.",
+      "p."
+    ],
+    "DAY": [
+      "domenie",
+      "lunis",
+      "martars",
+      "miercus",
+      "joibe",
+      "vinars",
+      "sabide"
+    ],
+    "ERANAMES": [
+      "pdC",
+      "ddC"
+    ],
+    "ERAS": [
+      "pdC",
+      "ddC"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Zen\u00e2r",
+      "Fevr\u00e2r",
+      "Mar\u00e7",
+      "Avr\u00eel",
+      "Mai",
+      "Jugn",
+      "Lui",
+      "Avost",
+      "Setembar",
+      "Otubar",
+      "Novembar",
+      "Dicembar"
+    ],
+    "SHORTDAY": [
+      "dom",
+      "lun",
+      "mar",
+      "mie",
+      "joi",
+      "vin",
+      "sab"
+    ],
+    "SHORTMONTH": [
+      "Zen",
+      "Fev",
+      "Mar",
+      "Avr",
+      "Mai",
+      "Jug",
+      "Lui",
+      "Avo",
+      "Set",
+      "Otu",
+      "Nov",
+      "Dic"
+    ],
+    "STANDALONEMONTH": [
+      "Zen\u00e2r",
+      "Fevr\u00e2r",
+      "Mar\u00e7",
+      "Avr\u00eel",
+      "Mai",
+      "Jugn",
+      "Lui",
+      "Avost",
+      "Setembar",
+      "Otubar",
+      "Novembar",
+      "Dicembar"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d 'di' MMMM 'dal' y",
+    "longDate": "d 'di' MMMM 'dal' y",
+    "medium": "dd/MM/y HH:mm:ss",
+    "mediumDate": "dd/MM/y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/yy HH:mm",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "fur-it",
+  "localeID": "fur_IT",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);



[40/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-animate.min.js.map
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-animate.min.js.map b/rocketmq-console/src/main/resources/static/vendor/angular/angular-animate.min.js.map
new file mode 100644
index 0000000..4311854
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-animate.min.js.map
@@ -0,0 +1,8 @@
+{
+"version":3,
+"file":"angular-animate.min.js",
+"lineCount":55,
+"mappings":"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",
+"sources":["angular-animate.js"],
+"names":["window","angular","assertArg","arg","name","reason","ngMinErr","mergeClasses","a","b","isArray","join","packageStyles","options","styles","to","from","pendClasses","classes","fix","isPrefix","className","isString","length","split","forEach","klass","i","stripCommentsFromElement","element","jqLite","ELEMENT_NODE","nodeType","extractElementNode","elm","$$addClass","$$jqLite","addClass","$$removeClass","removeClass","applyAnimationClassesFactory","prepareAnimationOptions","$$prepared","domOperation","noop","options.domOperation","$$domOperationFired","applyAnimationStyles","applyAnimationFromStyles","applyAnimationToStyles","css","mergeAnimationDetails","oldAnimation","newAnimation","target","newOptions","toAdd","toRemove","resolveElementClasses","attr","preparationClasses","concatWithSpace","realDomOperation","extend","existing","splitClassesToLookup","obj","flags","value","key","ADD_CLASS","REMOVE_CLASS","val","prop","allow","getDomNode","applyGeneratedPreparationClasses","
 event","EVENT_CLASS_PREFIX","ADD_CLASS_SUFFIX","REMOVE_CLASS_SUFFIX","blockTransitions","node","duration","applyInlineStyle","TRANSITION_DELAY_PROP","blockKeyframeAnimations","applyBlock","ANIMATION_PROP","ANIMATION_PLAYSTATE_KEY","styleTuple","style","computeCssStyles","$window","properties","Object","create","detectedStyles","getComputedStyle","formalStyleName","actualStyleName","c","charAt","parseMaxTime","str","maxValue","values","substring","parseFloat","Math","max","truthyTimingValue","getCssTransitionDurationStyle","applyOnlyDuration","TRANSITION_PROP","DURATION_KEY","createLocalCacheLookup","cache","flush","count","entry","total","get","put","registerRestorableStyles","backup","isDefined","getPropertyValue","copy","isObject","isUndefined","isFunction","isElement","TRANSITIONEND_EVENT","ANIMATIONEND_EVENT","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","ANIMATION_DELAY_PROP","DELAY_KEY","ANIMATION_DURATION_PROP","TRANSITION_DURATION_PROP","$
 $minErr","DETECT_CSS_PROPERTIES","transitionDuration","transitionDelay","transitionProperty","PROPERTY_KEY","animationDuration","animationDelay","animationIterationCount","ANIMATION_ITERATION_COUNT_KEY","DETECT_STAGGER_CSS_PROPERTIES","module","directive","ngAnimateSwapDirective","$animate","$rootScope","restrict","transclude","terminal","priority","link","scope","$element","attrs","ctrl","$transclude","previousElement","previousScope","$watchCollection","ngAnimateSwap","leave","$destroy","$new","enter","$$AnimateChildrenDirective","$interpolate","setData","data","NG_ANIMATE_CHILDREN_DATA","ngAnimateChildren","$observe","factory","$$rAFSchedulerFactory","$$rAF","scheduler","tasks","queue","concat","nextTick","items","shift","cancelFn","waitUntilQuiet","scheduler.waitUntilQuiet","fn","provider","$$AnimateQueueProvider","$animateProvider","makeTruthyCssClassMap","classString","keys","ONE_SPACE","map","hasMatchingClasses","newClassString","currentClassString","currentClassMap","some","
 isAllowed","ruleType","currentAnimation","previousAnimation","rules","hasAnimationClasses","animation","and","skip","cancel","push","structural","RUNNING_STATE","state","nA","nR","cA","cR","$get","$rootElement","$document","$$HashMap","$$animation","$$AnimateRunner","$templateRequest","$$forceReflow","postDigestTaskFactory","postDigestCalled","$$postDigest","findCallbacks","parent","targetNode","targetParentNode","matches","entries","callbackRegistry","contains","call","callback","filterFromRegistry","list","matchContainer","matchCallback","containerNode","filter","queueAnimation","initialOptions","notifyProgress","runner","phase","runInNextPostDigestOrNow","callbacks","parentNode","off","progress","close","reject","activeClasses","applyAnimationClasses","complete","isAnimatableClassName","isStructural","indexOf","documentHidden","hidden","skipAnimations","animationsEnabled","disabledElementsLookup","existingAnimation","activeAnimationsLookup","hasExistingAnimation","PRE_DIGEST_STAT
 E","areAnimationsAllowed","closeChildAnimations","skipAnimationFlag","cancelAnimationFlag","end","joinAnimationFlag","isValidAnimation","clearElementAnimationState","counter","markElementAnimationState","animationDetails","animationCancelled","realRunner","setHost","done","status","children","querySelectorAll","child","parseInt","getAttribute","NG_ANIMATE_ATTR_NAME","remove","removeAttribute","isMatchingElement","nodeOrElmA","nodeOrElmB","parentElement","bodyElement","body","bodyElementDetected","nodeName","rootElementDetected","parentAnimationDetected","animateChildren","elementDisabled","parentHost","NG_ANIMATE_PIN_DATA","details","parentElementDisabled","setAttribute","newValue","oldValue","deregisterWatch","$watch","totalPendingRequests","isEmpty","classNameFilter","test","Node","prototype","compareDocumentPosition","on","container","arguments","eventType","pin","enabled","bool","argCount","hasElement","recordExists","$$AnimationProvider","drivers","$injector","$$rAFScheduler","
 sortAnimations","animations","processNode","processed","elementNode","domNode","lookup","parentEntry","tree","flatten","result","remainingLevelEntries","nextLevelEntries","row","childEntry","animationQueue","getAnchorNodes","hasAttribute","NG_ANIMATE_REF_ATTR","SELECTOR","anchors","groupAnimations","preparedAnimations","refLookup","index","enterOrMove","anchorNodes","direction","anchor","animationID","usedIndicesLookup","anchorGroups","operations","fromAnimation","toAnimation","lookupKey","toString","group","beforeStart","cssClassesIntersection","indexKey","aa","j","invokeFirstDriver","driverName","has","driver","updateAnimationRunners","newRunner","update","RUNNER_STORAGE_KEY","handleDestroyedElement","rejected","removeData","tempClasses","NG_ANIMATE_CLASSNAME","prepareClassName","PREPARE_CLASS_SUFFIX","groupedAnimations","toBeSortedAnimations","animationEntry","triggerAnimationStart","startAnimationFn","closeFn","targetElement","operation","start","animationRunner","$AnimateCssPro
 vider","gcsLookup","gcsStaggerLookup","$timeout","$sniffer","$$animateQueue","gcsHashFn","extraClasses","parentCounter","computeCachedCssStaggerStyles","cacheKey","stagger","staggerClassName","rafWaitQueue","pageWidth","computeTimings","timings","aD","tD","maxDelay","maxDuration","init","endFn","animationClosed","animationCompleted","animationPaused","$$skipPreparationClasses","temporaryStyles","restoreStyles","setProperty","removeProperty","onDone","events","onAnimationProgress","animationTimerData","ANIMATE_TIMER_KEY","timer","applyBlocking","blockTransition","blockKeyframeAnimation","closeAndReturnNoopAnimator","$$willAnimate","stopPropagation","ev","originalEvent","timeStamp","$manualTimeStamp","Date","now","elapsedTime","toFixed","ELAPSED_TIME_MAX_DECIMAL_PLACES","startTime","maxDelayTime","recalculateTimingStyles","fullClassName","relativeDelay","hasTransitions","hasAnimations","applyAnimationDelay","delay","delayStyle","ONE_SECOND","maxDurationTime","easing","easeProp","easeV
 al","TIMING_KEY","timerTime","CLOSING_TIME_BUFFER","endTime","animationsData","setupFallbackTimer","currentTimerData","expectedEndTime","onAnimationExpired","cleanupStyles","playPause","playAnimation","arr","splice","maxStagger","itemIndex","floor","runnerHost","resume","runnerHost.resume","pause","runnerHost.pause","transitions","method","structuralClassName","addRemoveClassName","applyClassesEarly","trim","ACTIVE_CLASS_SUFFIX","hasToStyles","keyframeStyle","staggerVal","transitionStyle","durationStyle","staggerIndex","isFirst","skipBlocking","SAFE_FAST_FORWARD_DURATION_VALUE","hasTransitionAll","applyTransitionDuration","applyAnimationDuration","applyTransitionDelay","$$AnimateCssDriverProvider","$$animationProvider","$animateCss","filterCssClasses","replace","getUniqueValues","prepareAnchoredAnimation","outAnchor","inAnchor","calculateAnchorStyles","coords","getBoundingClientRect","bodyNode","scrollTop","scrollLeft","prepareInAnimation","endingClasses","startingClasses","animator
 ","clone","NG_ANIMATE_SHIM_CLASS_NAME","cloneNode","NG_ANIMATE_ANCHOR_CLASS_NAME","rootBodyElement","append","animatorIn","animatorOut","prepareOutAnimation","NG_OUT_ANCHOR_CLASS_NAME","startingAnimator","prepareFromToAnchorAnimation","prepareRegularAnimation","anchorAnimations","outElement","inElement","animationRunners","all","rootNode","initDriverFn","$$AnimateJsProvider","lookupAnimations","flagMap","animationFactory","$$registeredAnimations","applyOptions","executeAnimationFn","args","classesToAdd","classesToRemove","apply","groupEventedAnimations","fnName","ani","endProgressCb","resolved","onAnimationComplete","packageAnimations","startAnimation","runners","animateFn","before","after","afterFn","beforeFn","toUpperCase","substr","onComplete","success","closeActiveAnimations","chain","cancelled","$$AnimateJsDriverProvider","$$animateJs","prepareAnimation","endFnFactory"]
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-aria.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-aria.js b/rocketmq-console/src/main/resources/static/vendor/angular/angular-aria.js
new file mode 100644
index 0000000..7fd56a5
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-aria.js
@@ -0,0 +1,405 @@
+/**
+ * @license AngularJS v1.5.6
+ * (c) 2010-2016 Google, Inc. http://angularjs.org
+ * License: MIT
+ */
+(function(window, angular) {'use strict';
+
+/**
+ * @ngdoc module
+ * @name ngAria
+ * @description
+ *
+ * The `ngAria` module provides support for common
+ * [<abbr title="Accessible Rich Internet Applications">ARIA</abbr>](http://www.w3.org/TR/wai-aria/)
+ * attributes that convey state or semantic information about the application for users
+ * of assistive technologies, such as screen readers.
+ *
+ * <div doc-module-components="ngAria"></div>
+ *
+ * ## Usage
+ *
+ * For ngAria to do its magic, simply include the module `ngAria` as a dependency. The following
+ * directives are supported:
+ * `ngModel`, `ngChecked`, `ngReadonly`, `ngRequired`, `ngValue`, `ngDisabled`, `ngShow`, `ngHide`, `ngClick`,
+ * `ngDblClick`, and `ngMessages`.
+ *
+ * Below is a more detailed breakdown of the attributes handled by ngAria:
+ *
+ * | Directive                                   | Supported Attributes                                                                   |
+ * |---------------------------------------------|----------------------------------------------------------------------------------------|
+ * | {@link ng.directive:ngModel ngModel}        | aria-checked, aria-valuemin, aria-valuemax, aria-valuenow, aria-invalid, aria-required, input roles |
+ * | {@link ng.directive:ngDisabled ngDisabled}  | aria-disabled                                                                          |
+ * | {@link ng.directive:ngRequired ngRequired}  | aria-required
+ * | {@link ng.directive:ngChecked ngChecked}    | aria-checked
+ * | {@link ng.directive:ngReadonly ngReadonly}  | aria-readonly                                                                          |
+ * | {@link ng.directive:ngValue ngValue}        | aria-checked                                                                           |
+ * | {@link ng.directive:ngShow ngShow}          | aria-hidden                                                                            |
+ * | {@link ng.directive:ngHide ngHide}          | aria-hidden                                                                            |
+ * | {@link ng.directive:ngDblclick ngDblclick}  | tabindex                                                                               |
+ * | {@link module:ngMessages ngMessages}        | aria-live                                                                              |
+ * | {@link ng.directive:ngClick ngClick}        | tabindex, keypress event, button role                                                  |
+ *
+ * Find out more information about each directive by reading the
+ * {@link guide/accessibility ngAria Developer Guide}.
+ *
+ * ## Example
+ * Using ngDisabled with ngAria:
+ * ```html
+ * <md-checkbox ng-disabled="disabled">
+ * ```
+ * Becomes:
+ * ```html
+ * <md-checkbox ng-disabled="disabled" aria-disabled="true">
+ * ```
+ *
+ * ## Disabling Attributes
+ * It's possible to disable individual attributes added by ngAria with the
+ * {@link ngAria.$ariaProvider#config config} method. For more details, see the
+ * {@link guide/accessibility Developer Guide}.
+ */
+ /* global -ngAriaModule */
+var ngAriaModule = angular.module('ngAria', ['ng']).
+                        provider('$aria', $AriaProvider);
+
+/**
+* Internal Utilities
+*/
+var nodeBlackList = ['BUTTON', 'A', 'INPUT', 'TEXTAREA', 'SELECT', 'DETAILS', 'SUMMARY'];
+
+var isNodeOneOf = function(elem, nodeTypeArray) {
+  if (nodeTypeArray.indexOf(elem[0].nodeName) !== -1) {
+    return true;
+  }
+};
+/**
+ * @ngdoc provider
+ * @name $ariaProvider
+ *
+ * @description
+ *
+ * Used for configuring the ARIA attributes injected and managed by ngAria.
+ *
+ * ```js
+ * angular.module('myApp', ['ngAria'], function config($ariaProvider) {
+ *   $ariaProvider.config({
+ *     ariaValue: true,
+ *     tabindex: false
+ *   });
+ * });
+ *```
+ *
+ * ## Dependencies
+ * Requires the {@link ngAria} module to be installed.
+ *
+ */
+function $AriaProvider() {
+  var config = {
+    ariaHidden: true,
+    ariaChecked: true,
+    ariaReadonly: true,
+    ariaDisabled: true,
+    ariaRequired: true,
+    ariaInvalid: true,
+    ariaValue: true,
+    tabindex: true,
+    bindKeypress: true,
+    bindRoleForClick: true
+  };
+
+  /**
+   * @ngdoc method
+   * @name $ariaProvider#config
+   *
+   * @param {object} config object to enable/disable specific ARIA attributes
+   *
+   *  - **ariaHidden** – `{boolean}` – Enables/disables aria-hidden tags
+   *  - **ariaChecked** – `{boolean}` – Enables/disables aria-checked tags
+   *  - **ariaReadonly** – `{boolean}` – Enables/disables aria-readonly tags
+   *  - **ariaDisabled** – `{boolean}` – Enables/disables aria-disabled tags
+   *  - **ariaRequired** – `{boolean}` – Enables/disables aria-required tags
+   *  - **ariaInvalid** – `{boolean}` – Enables/disables aria-invalid tags
+   *  - **ariaValue** – `{boolean}` – Enables/disables aria-valuemin, aria-valuemax and aria-valuenow tags
+   *  - **tabindex** – `{boolean}` – Enables/disables tabindex tags
+   *  - **bindKeypress** – `{boolean}` – Enables/disables keypress event binding on `div` and
+   *    `li` elements with ng-click
+   *  - **bindRoleForClick** – `{boolean}` – Adds role=button to non-interactive elements like `div`
+   *    using ng-click, making them more accessible to users of assistive technologies
+   *
+   * @description
+   * Enables/disables various ARIA attributes
+   */
+  this.config = function(newConfig) {
+    config = angular.extend(config, newConfig);
+  };
+
+  function watchExpr(attrName, ariaAttr, nodeBlackList, negate) {
+    return function(scope, elem, attr) {
+      var ariaCamelName = attr.$normalize(ariaAttr);
+      if (config[ariaCamelName] && !isNodeOneOf(elem, nodeBlackList) && !attr[ariaCamelName]) {
+        scope.$watch(attr[attrName], function(boolVal) {
+          // ensure boolean value
+          boolVal = negate ? !boolVal : !!boolVal;
+          elem.attr(ariaAttr, boolVal);
+        });
+      }
+    };
+  }
+  /**
+   * @ngdoc service
+   * @name $aria
+   *
+   * @description
+   * @priority 200
+   *
+   * The $aria service contains helper methods for applying common
+   * [ARIA](http://www.w3.org/TR/wai-aria/) attributes to HTML directives.
+   *
+   * ngAria injects common accessibility attributes that tell assistive technologies when HTML
+   * elements are enabled, selected, hidden, and more. To see how this is performed with ngAria,
+   * let's review a code snippet from ngAria itself:
+   *
+   *```js
+   * ngAriaModule.directive('ngDisabled', ['$aria', function($aria) {
+   *   return $aria.$$watchExpr('ngDisabled', 'aria-disabled', nodeBlackList, false);
+   * }])
+   *```
+   * Shown above, the ngAria module creates a directive with the same signature as the
+   * traditional `ng-disabled` directive. But this ngAria version is dedicated to
+   * solely managing accessibility attributes on custom elements. The internal `$aria` service is
+   * used to watch the boolean attribute `ngDisabled`. If it has not been explicitly set by the
+   * developer, `aria-disabled` is injected as an attribute with its value synchronized to the
+   * value in `ngDisabled`.
+   *
+   * Because ngAria hooks into the `ng-disabled` directive, developers do not have to do
+   * anything to enable this feature. The `aria-disabled` attribute is automatically managed
+   * simply as a silent side-effect of using `ng-disabled` with the ngAria module.
+   *
+   * The full list of directives that interface with ngAria:
+   * * **ngModel**
+   * * **ngChecked**
+   * * **ngReadonly**
+   * * **ngRequired**
+   * * **ngDisabled**
+   * * **ngValue**
+   * * **ngShow**
+   * * **ngHide**
+   * * **ngClick**
+   * * **ngDblclick**
+   * * **ngMessages**
+   *
+   * Read the {@link guide/accessibility ngAria Developer Guide} for a thorough explanation of each
+   * directive.
+   *
+   *
+   * ## Dependencies
+   * Requires the {@link ngAria} module to be installed.
+   */
+  this.$get = function() {
+    return {
+      config: function(key) {
+        return config[key];
+      },
+      $$watchExpr: watchExpr
+    };
+  };
+}
+
+
+ngAriaModule.directive('ngShow', ['$aria', function($aria) {
+  return $aria.$$watchExpr('ngShow', 'aria-hidden', [], true);
+}])
+.directive('ngHide', ['$aria', function($aria) {
+  return $aria.$$watchExpr('ngHide', 'aria-hidden', [], false);
+}])
+.directive('ngValue', ['$aria', function($aria) {
+  return $aria.$$watchExpr('ngValue', 'aria-checked', nodeBlackList, false);
+}])
+.directive('ngChecked', ['$aria', function($aria) {
+  return $aria.$$watchExpr('ngChecked', 'aria-checked', nodeBlackList, false);
+}])
+.directive('ngReadonly', ['$aria', function($aria) {
+  return $aria.$$watchExpr('ngReadonly', 'aria-readonly', nodeBlackList, false);
+}])
+.directive('ngRequired', ['$aria', function($aria) {
+  return $aria.$$watchExpr('ngRequired', 'aria-required', nodeBlackList, false);
+}])
+.directive('ngModel', ['$aria', function($aria) {
+
+  function shouldAttachAttr(attr, normalizedAttr, elem, allowBlacklistEls) {
+    return $aria.config(normalizedAttr) && !elem.attr(attr) && (allowBlacklistEls || !isNodeOneOf(elem, nodeBlackList));
+  }
+
+  function shouldAttachRole(role, elem) {
+    // if element does not have role attribute
+    // AND element type is equal to role (if custom element has a type equaling shape) <-- remove?
+    // AND element is not INPUT
+    return !elem.attr('role') && (elem.attr('type') === role) && (elem[0].nodeName !== 'INPUT');
+  }
+
+  function getShape(attr, elem) {
+    var type = attr.type,
+        role = attr.role;
+
+    return ((type || role) === 'checkbox' || role === 'menuitemcheckbox') ? 'checkbox' :
+           ((type || role) === 'radio'    || role === 'menuitemradio') ? 'radio' :
+           (type === 'range'              || role === 'progressbar' || role === 'slider') ? 'range' : '';
+  }
+
+  return {
+    restrict: 'A',
+    require: 'ngModel',
+    priority: 200, //Make sure watches are fired after any other directives that affect the ngModel value
+    compile: function(elem, attr) {
+      var shape = getShape(attr, elem);
+
+      return {
+        pre: function(scope, elem, attr, ngModel) {
+          if (shape === 'checkbox') {
+            //Use the input[checkbox] $isEmpty implementation for elements with checkbox roles
+            ngModel.$isEmpty = function(value) {
+              return value === false;
+            };
+          }
+        },
+        post: function(scope, elem, attr, ngModel) {
+          var needsTabIndex = shouldAttachAttr('tabindex', 'tabindex', elem, false);
+
+          function ngAriaWatchModelValue() {
+            return ngModel.$modelValue;
+          }
+
+          function getRadioReaction(newVal) {
+            var boolVal = (attr.value == ngModel.$viewValue);
+            elem.attr('aria-checked', boolVal);
+          }
+
+          function getCheckboxReaction() {
+            elem.attr('aria-checked', !ngModel.$isEmpty(ngModel.$viewValue));
+          }
+
+          switch (shape) {
+            case 'radio':
+            case 'checkbox':
+              if (shouldAttachRole(shape, elem)) {
+                elem.attr('role', shape);
+              }
+              if (shouldAttachAttr('aria-checked', 'ariaChecked', elem, false)) {
+                scope.$watch(ngAriaWatchModelValue, shape === 'radio' ?
+                    getRadioReaction : getCheckboxReaction);
+              }
+              if (needsTabIndex) {
+                elem.attr('tabindex', 0);
+              }
+              break;
+            case 'range':
+              if (shouldAttachRole(shape, elem)) {
+                elem.attr('role', 'slider');
+              }
+              if ($aria.config('ariaValue')) {
+                var needsAriaValuemin = !elem.attr('aria-valuemin') &&
+                    (attr.hasOwnProperty('min') || attr.hasOwnProperty('ngMin'));
+                var needsAriaValuemax = !elem.attr('aria-valuemax') &&
+                    (attr.hasOwnProperty('max') || attr.hasOwnProperty('ngMax'));
+                var needsAriaValuenow = !elem.attr('aria-valuenow');
+
+                if (needsAriaValuemin) {
+                  attr.$observe('min', function ngAriaValueMinReaction(newVal) {
+                    elem.attr('aria-valuemin', newVal);
+                  });
+                }
+                if (needsAriaValuemax) {
+                  attr.$observe('max', function ngAriaValueMinReaction(newVal) {
+                    elem.attr('aria-valuemax', newVal);
+                  });
+                }
+                if (needsAriaValuenow) {
+                  scope.$watch(ngAriaWatchModelValue, function ngAriaValueNowReaction(newVal) {
+                    elem.attr('aria-valuenow', newVal);
+                  });
+                }
+              }
+              if (needsTabIndex) {
+                elem.attr('tabindex', 0);
+              }
+              break;
+          }
+
+          if (!attr.hasOwnProperty('ngRequired') && ngModel.$validators.required
+            && shouldAttachAttr('aria-required', 'ariaRequired', elem, false)) {
+            // ngModel.$error.required is undefined on custom controls
+            attr.$observe('required', function() {
+              elem.attr('aria-required', !!attr['required']);
+            });
+          }
+
+          if (shouldAttachAttr('aria-invalid', 'ariaInvalid', elem, true)) {
+            scope.$watch(function ngAriaInvalidWatch() {
+              return ngModel.$invalid;
+            }, function ngAriaInvalidReaction(newVal) {
+              elem.attr('aria-invalid', !!newVal);
+            });
+          }
+        }
+      };
+    }
+  };
+}])
+.directive('ngDisabled', ['$aria', function($aria) {
+  return $aria.$$watchExpr('ngDisabled', 'aria-disabled', nodeBlackList, false);
+}])
+.directive('ngMessages', function() {
+  return {
+    restrict: 'A',
+    require: '?ngMessages',
+    link: function(scope, elem, attr, ngMessages) {
+      if (!elem.attr('aria-live')) {
+        elem.attr('aria-live', 'assertive');
+      }
+    }
+  };
+})
+.directive('ngClick',['$aria', '$parse', function($aria, $parse) {
+  return {
+    restrict: 'A',
+    compile: function(elem, attr) {
+      var fn = $parse(attr.ngClick, /* interceptorFn */ null, /* expensiveChecks */ true);
+      return function(scope, elem, attr) {
+
+        if (!isNodeOneOf(elem, nodeBlackList)) {
+
+          if ($aria.config('bindRoleForClick') && !elem.attr('role')) {
+            elem.attr('role', 'button');
+          }
+
+          if ($aria.config('tabindex') && !elem.attr('tabindex')) {
+            elem.attr('tabindex', 0);
+          }
+
+          if ($aria.config('bindKeypress') && !attr.ngKeypress) {
+            elem.on('keypress', function(event) {
+              var keyCode = event.which || event.keyCode;
+              if (keyCode === 32 || keyCode === 13) {
+                scope.$apply(callback);
+              }
+
+              function callback() {
+                fn(scope, { $event: event });
+              }
+            });
+          }
+        }
+      };
+    }
+  };
+}])
+.directive('ngDblclick', ['$aria', function($aria) {
+  return function(scope, elem, attr) {
+    if ($aria.config('tabindex') && !elem.attr('tabindex') && !isNodeOneOf(elem, nodeBlackList)) {
+      elem.attr('tabindex', 0);
+    }
+  };
+}]);
+
+
+})(window, window.angular);


[27/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular.js b/rocketmq-console/src/main/resources/static/vendor/angular/angular.js
new file mode 100644
index 0000000..9028e01
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular.js
@@ -0,0 +1,31023 @@
+/**
+ * @license AngularJS v1.5.6
+ * (c) 2010-2016 Google, Inc. http://angularjs.org
+ * License: MIT
+ */
+(function(window) {'use strict';
+
+/**
+ * @description
+ *
+ * This object provides a utility for producing rich Error messages within
+ * Angular. It can be called as follows:
+ *
+ * var exampleMinErr = minErr('example');
+ * throw exampleMinErr('one', 'This {0} is {1}', foo, bar);
+ *
+ * The above creates an instance of minErr in the example namespace. The
+ * resulting error will have a namespaced error code of example.one.  The
+ * resulting error will replace {0} with the value of foo, and {1} with the
+ * value of bar. The object is not restricted in the number of arguments it can
+ * take.
+ *
+ * If fewer arguments are specified than necessary for interpolation, the extra
+ * interpolation markers will be preserved in the final string.
+ *
+ * Since data will be parsed statically during a build step, some restrictions
+ * are applied with respect to how minErr instances are created and called.
+ * Instances should have names of the form namespaceMinErr for a minErr created
+ * using minErr('namespace') . Error codes, namespaces and template strings
+ * should all be static strings, not variables or general expressions.
+ *
+ * @param {string} module The namespace to use for the new minErr instance.
+ * @param {function} ErrorConstructor Custom error constructor to be instantiated when returning
+ *   error from returned function, for cases when a particular type of error is useful.
+ * @returns {function(code:string, template:string, ...templateArgs): Error} minErr instance
+ */
+
+function minErr(module, ErrorConstructor) {
+  ErrorConstructor = ErrorConstructor || Error;
+  return function() {
+    var SKIP_INDEXES = 2;
+
+    var templateArgs = arguments,
+      code = templateArgs[0],
+      message = '[' + (module ? module + ':' : '') + code + '] ',
+      template = templateArgs[1],
+      paramPrefix, i;
+
+    message += template.replace(/\{\d+\}/g, function(match) {
+      var index = +match.slice(1, -1),
+        shiftedIndex = index + SKIP_INDEXES;
+
+      if (shiftedIndex < templateArgs.length) {
+        return toDebugString(templateArgs[shiftedIndex]);
+      }
+
+      return match;
+    });
+
+    message += '\nhttp://errors.angularjs.org/1.5.6/' +
+      (module ? module + '/' : '') + code;
+
+    for (i = SKIP_INDEXES, paramPrefix = '?'; i < templateArgs.length; i++, paramPrefix = '&') {
+      message += paramPrefix + 'p' + (i - SKIP_INDEXES) + '=' +
+        encodeURIComponent(toDebugString(templateArgs[i]));
+    }
+
+    return new ErrorConstructor(message);
+  };
+}
+
+/* We need to tell jshint what variables are being exported */
+/* global angular: true,
+  msie: true,
+  jqLite: true,
+  jQuery: true,
+  slice: true,
+  splice: true,
+  push: true,
+  toString: true,
+  ngMinErr: true,
+  angularModule: true,
+  uid: true,
+  REGEX_STRING_REGEXP: true,
+  VALIDITY_STATE_PROPERTY: true,
+
+  lowercase: true,
+  uppercase: true,
+  manualLowercase: true,
+  manualUppercase: true,
+  nodeName_: true,
+  isArrayLike: true,
+  forEach: true,
+  forEachSorted: true,
+  reverseParams: true,
+  nextUid: true,
+  setHashKey: true,
+  extend: true,
+  toInt: true,
+  inherit: true,
+  merge: true,
+  noop: true,
+  identity: true,
+  valueFn: true,
+  isUndefined: true,
+  isDefined: true,
+  isObject: true,
+  isBlankObject: true,
+  isString: true,
+  isNumber: true,
+  isDate: true,
+  isArray: true,
+  isFunction: true,
+  isRegExp: true,
+  isWindow: true,
+  isScope: true,
+  isFile: true,
+  isFormData: true,
+  isBlob: true,
+  isBoolean: true,
+  isPromiseLike: true,
+  trim: true,
+  escapeForRegexp: true,
+  isElement: true,
+  makeMap: true,
+  includes: true,
+  arrayRemove: true,
+  copy: true,
+  shallowCopy: true,
+  equals: true,
+  csp: true,
+  jq: true,
+  concat: true,
+  sliceArgs: true,
+  bind: true,
+  toJsonReplacer: true,
+  toJson: true,
+  fromJson: true,
+  convertTimezoneToLocal: true,
+  timezoneToOffset: true,
+  startingTag: true,
+  tryDecodeURIComponent: true,
+  parseKeyValue: true,
+  toKeyValue: true,
+  encodeUriSegment: true,
+  encodeUriQuery: true,
+  angularInit: true,
+  bootstrap: true,
+  getTestability: true,
+  snake_case: true,
+  bindJQuery: true,
+  assertArg: true,
+  assertArgFn: true,
+  assertNotHasOwnProperty: true,
+  getter: true,
+  getBlockNodes: true,
+  hasOwnProperty: true,
+  createMap: true,
+
+  NODE_TYPE_ELEMENT: true,
+  NODE_TYPE_ATTRIBUTE: true,
+  NODE_TYPE_TEXT: true,
+  NODE_TYPE_COMMENT: true,
+  NODE_TYPE_DOCUMENT: true,
+  NODE_TYPE_DOCUMENT_FRAGMENT: true,
+*/
+
+////////////////////////////////////
+
+/**
+ * @ngdoc module
+ * @name ng
+ * @module ng
+ * @installation
+ * @description
+ *
+ * # ng (core module)
+ * The ng module is loaded by default when an AngularJS application is started. The module itself
+ * contains the essential components for an AngularJS application to function. The table below
+ * lists a high level breakdown of each of the services/factories, filters, directives and testing
+ * components available within this core module.
+ *
+ * <div doc-module-components="ng"></div>
+ */
+
+var REGEX_STRING_REGEXP = /^\/(.+)\/([a-z]*)$/;
+
+// The name of a form control's ValidityState property.
+// This is used so that it's possible for internal tests to create mock ValidityStates.
+var VALIDITY_STATE_PROPERTY = 'validity';
+
+var hasOwnProperty = Object.prototype.hasOwnProperty;
+
+var lowercase = function(string) {return isString(string) ? string.toLowerCase() : string;};
+var uppercase = function(string) {return isString(string) ? string.toUpperCase() : string;};
+
+
+var manualLowercase = function(s) {
+  /* jshint bitwise: false */
+  return isString(s)
+      ? s.replace(/[A-Z]/g, function(ch) {return String.fromCharCode(ch.charCodeAt(0) | 32);})
+      : s;
+};
+var manualUppercase = function(s) {
+  /* jshint bitwise: false */
+  return isString(s)
+      ? s.replace(/[a-z]/g, function(ch) {return String.fromCharCode(ch.charCodeAt(0) & ~32);})
+      : s;
+};
+
+
+// String#toLowerCase and String#toUpperCase don't produce correct results in browsers with Turkish
+// locale, for this reason we need to detect this case and redefine lowercase/uppercase methods
+// with correct but slower alternatives. See https://github.com/angular/angular.js/issues/11387
+if ('i' !== 'I'.toLowerCase()) {
+  lowercase = manualLowercase;
+  uppercase = manualUppercase;
+}
+
+
+var
+    msie,             // holds major version number for IE, or NaN if UA is not IE.
+    jqLite,           // delay binding since jQuery could be loaded after us.
+    jQuery,           // delay binding
+    slice             = [].slice,
+    splice            = [].splice,
+    push              = [].push,
+    toString          = Object.prototype.toString,
+    getPrototypeOf    = Object.getPrototypeOf,
+    ngMinErr          = minErr('ng'),
+
+    /** @name angular */
+    angular           = window.angular || (window.angular = {}),
+    angularModule,
+    uid               = 0;
+
+/**
+ * documentMode is an IE-only property
+ * http://msdn.microsoft.com/en-us/library/ie/cc196988(v=vs.85).aspx
+ */
+msie = window.document.documentMode;
+
+
+/**
+ * @private
+ * @param {*} obj
+ * @return {boolean} Returns true if `obj` is an array or array-like object (NodeList, Arguments,
+ *                   String ...)
+ */
+function isArrayLike(obj) {
+
+  // `null`, `undefined` and `window` are not array-like
+  if (obj == null || isWindow(obj)) return false;
+
+  // arrays, strings and jQuery/jqLite objects are array like
+  // * jqLite is either the jQuery or jqLite constructor function
+  // * we have to check the existence of jqLite first as this method is called
+  //   via the forEach method when constructing the jqLite object in the first place
+  if (isArray(obj) || isString(obj) || (jqLite && obj instanceof jqLite)) return true;
+
+  // Support: iOS 8.2 (not reproducible in simulator)
+  // "length" in obj used to prevent JIT error (gh-11508)
+  var length = "length" in Object(obj) && obj.length;
+
+  // NodeList objects (with `item` method) and
+  // other objects with suitable length characteristics are array-like
+  return isNumber(length) &&
+    (length >= 0 && ((length - 1) in obj || obj instanceof Array) || typeof obj.item == 'function');
+
+}
+
+/**
+ * @ngdoc function
+ * @name angular.forEach
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Invokes the `iterator` function once for each item in `obj` collection, which can be either an
+ * object or an array. The `iterator` function is invoked with `iterator(value, key, obj)`, where `value`
+ * is the value of an object property or an array element, `key` is the object property key or
+ * array element index and obj is the `obj` itself. Specifying a `context` for the function is optional.
+ *
+ * It is worth noting that `.forEach` does not iterate over inherited properties because it filters
+ * using the `hasOwnProperty` method.
+ *
+ * Unlike ES262's
+ * [Array.prototype.forEach](http://www.ecma-international.org/ecma-262/5.1/#sec-15.4.4.18),
+ * providing 'undefined' or 'null' values for `obj` will not throw a TypeError, but rather just
+ * return the value provided.
+ *
+   ```js
+     var values = {name: 'misko', gender: 'male'};
+     var log = [];
+     angular.forEach(values, function(value, key) {
+       this.push(key + ': ' + value);
+     }, log);
+     expect(log).toEqual(['name: misko', 'gender: male']);
+   ```
+ *
+ * @param {Object|Array} obj Object to iterate over.
+ * @param {Function} iterator Iterator function.
+ * @param {Object=} context Object to become context (`this`) for the iterator function.
+ * @returns {Object|Array} Reference to `obj`.
+ */
+
+function forEach(obj, iterator, context) {
+  var key, length;
+  if (obj) {
+    if (isFunction(obj)) {
+      for (key in obj) {
+        // Need to check if hasOwnProperty exists,
+        // as on IE8 the result of querySelectorAll is an object without a hasOwnProperty function
+        if (key != 'prototype' && key != 'length' && key != 'name' && (!obj.hasOwnProperty || obj.hasOwnProperty(key))) {
+          iterator.call(context, obj[key], key, obj);
+        }
+      }
+    } else if (isArray(obj) || isArrayLike(obj)) {
+      var isPrimitive = typeof obj !== 'object';
+      for (key = 0, length = obj.length; key < length; key++) {
+        if (isPrimitive || key in obj) {
+          iterator.call(context, obj[key], key, obj);
+        }
+      }
+    } else if (obj.forEach && obj.forEach !== forEach) {
+        obj.forEach(iterator, context, obj);
+    } else if (isBlankObject(obj)) {
+      // createMap() fast path --- Safe to avoid hasOwnProperty check because prototype chain is empty
+      for (key in obj) {
+        iterator.call(context, obj[key], key, obj);
+      }
+    } else if (typeof obj.hasOwnProperty === 'function') {
+      // Slow path for objects inheriting Object.prototype, hasOwnProperty check needed
+      for (key in obj) {
+        if (obj.hasOwnProperty(key)) {
+          iterator.call(context, obj[key], key, obj);
+        }
+      }
+    } else {
+      // Slow path for objects which do not have a method `hasOwnProperty`
+      for (key in obj) {
+        if (hasOwnProperty.call(obj, key)) {
+          iterator.call(context, obj[key], key, obj);
+        }
+      }
+    }
+  }
+  return obj;
+}
+
+function forEachSorted(obj, iterator, context) {
+  var keys = Object.keys(obj).sort();
+  for (var i = 0; i < keys.length; i++) {
+    iterator.call(context, obj[keys[i]], keys[i]);
+  }
+  return keys;
+}
+
+
+/**
+ * when using forEach the params are value, key, but it is often useful to have key, value.
+ * @param {function(string, *)} iteratorFn
+ * @returns {function(*, string)}
+ */
+function reverseParams(iteratorFn) {
+  return function(value, key) {iteratorFn(key, value);};
+}
+
+/**
+ * A consistent way of creating unique IDs in angular.
+ *
+ * Using simple numbers allows us to generate 28.6 million unique ids per second for 10 years before
+ * we hit number precision issues in JavaScript.
+ *
+ * Math.pow(2,53) / 60 / 60 / 24 / 365 / 10 = 28.6M
+ *
+ * @returns {number} an unique alpha-numeric string
+ */
+function nextUid() {
+  return ++uid;
+}
+
+
+/**
+ * Set or clear the hashkey for an object.
+ * @param obj object
+ * @param h the hashkey (!truthy to delete the hashkey)
+ */
+function setHashKey(obj, h) {
+  if (h) {
+    obj.$$hashKey = h;
+  } else {
+    delete obj.$$hashKey;
+  }
+}
+
+
+function baseExtend(dst, objs, deep) {
+  var h = dst.$$hashKey;
+
+  for (var i = 0, ii = objs.length; i < ii; ++i) {
+    var obj = objs[i];
+    if (!isObject(obj) && !isFunction(obj)) continue;
+    var keys = Object.keys(obj);
+    for (var j = 0, jj = keys.length; j < jj; j++) {
+      var key = keys[j];
+      var src = obj[key];
+
+      if (deep && isObject(src)) {
+        if (isDate(src)) {
+          dst[key] = new Date(src.valueOf());
+        } else if (isRegExp(src)) {
+          dst[key] = new RegExp(src);
+        } else if (src.nodeName) {
+          dst[key] = src.cloneNode(true);
+        } else if (isElement(src)) {
+          dst[key] = src.clone();
+        } else {
+          if (!isObject(dst[key])) dst[key] = isArray(src) ? [] : {};
+          baseExtend(dst[key], [src], true);
+        }
+      } else {
+        dst[key] = src;
+      }
+    }
+  }
+
+  setHashKey(dst, h);
+  return dst;
+}
+
+/**
+ * @ngdoc function
+ * @name angular.extend
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Extends the destination object `dst` by copying own enumerable properties from the `src` object(s)
+ * to `dst`. You can specify multiple `src` objects. If you want to preserve original objects, you can do so
+ * by passing an empty object as the target: `var object = angular.extend({}, object1, object2)`.
+ *
+ * **Note:** Keep in mind that `angular.extend` does not support recursive merge (deep copy). Use
+ * {@link angular.merge} for this.
+ *
+ * @param {Object} dst Destination object.
+ * @param {...Object} src Source object(s).
+ * @returns {Object} Reference to `dst`.
+ */
+function extend(dst) {
+  return baseExtend(dst, slice.call(arguments, 1), false);
+}
+
+
+/**
+* @ngdoc function
+* @name angular.merge
+* @module ng
+* @kind function
+*
+* @description
+* Deeply extends the destination object `dst` by copying own enumerable properties from the `src` object(s)
+* to `dst`. You can specify multiple `src` objects. If you want to preserve original objects, you can do so
+* by passing an empty object as the target: `var object = angular.merge({}, object1, object2)`.
+*
+* Unlike {@link angular.extend extend()}, `merge()` recursively descends into object properties of source
+* objects, performing a deep copy.
+*
+* @param {Object} dst Destination object.
+* @param {...Object} src Source object(s).
+* @returns {Object} Reference to `dst`.
+*/
+function merge(dst) {
+  return baseExtend(dst, slice.call(arguments, 1), true);
+}
+
+
+
+function toInt(str) {
+  return parseInt(str, 10);
+}
+
+
+function inherit(parent, extra) {
+  return extend(Object.create(parent), extra);
+}
+
+/**
+ * @ngdoc function
+ * @name angular.noop
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * A function that performs no operations. This function can be useful when writing code in the
+ * functional style.
+   ```js
+     function foo(callback) {
+       var result = calculateResult();
+       (callback || angular.noop)(result);
+     }
+   ```
+ */
+function noop() {}
+noop.$inject = [];
+
+
+/**
+ * @ngdoc function
+ * @name angular.identity
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * A function that returns its first argument. This function is useful when writing code in the
+ * functional style.
+ *
+   ```js
+   function transformer(transformationFn, value) {
+     return (transformationFn || angular.identity)(value);
+   };
+
+   // E.g.
+   function getResult(fn, input) {
+     return (fn || angular.identity)(input);
+   };
+
+   getResult(function(n) { return n * 2; }, 21);   // returns 42
+   getResult(null, 21);                            // returns 21
+   getResult(undefined, 21);                       // returns 21
+   ```
+ *
+ * @param {*} value to be returned.
+ * @returns {*} the value passed in.
+ */
+function identity($) {return $;}
+identity.$inject = [];
+
+
+function valueFn(value) {return function valueRef() {return value;};}
+
+function hasCustomToString(obj) {
+  return isFunction(obj.toString) && obj.toString !== toString;
+}
+
+
+/**
+ * @ngdoc function
+ * @name angular.isUndefined
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Determines if a reference is undefined.
+ *
+ * @param {*} value Reference to check.
+ * @returns {boolean} True if `value` is undefined.
+ */
+function isUndefined(value) {return typeof value === 'undefined';}
+
+
+/**
+ * @ngdoc function
+ * @name angular.isDefined
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Determines if a reference is defined.
+ *
+ * @param {*} value Reference to check.
+ * @returns {boolean} True if `value` is defined.
+ */
+function isDefined(value) {return typeof value !== 'undefined';}
+
+
+/**
+ * @ngdoc function
+ * @name angular.isObject
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Determines if a reference is an `Object`. Unlike `typeof` in JavaScript, `null`s are not
+ * considered to be objects. Note that JavaScript arrays are objects.
+ *
+ * @param {*} value Reference to check.
+ * @returns {boolean} True if `value` is an `Object` but not `null`.
+ */
+function isObject(value) {
+  // http://jsperf.com/isobject4
+  return value !== null && typeof value === 'object';
+}
+
+
+/**
+ * Determine if a value is an object with a null prototype
+ *
+ * @returns {boolean} True if `value` is an `Object` with a null prototype
+ */
+function isBlankObject(value) {
+  return value !== null && typeof value === 'object' && !getPrototypeOf(value);
+}
+
+
+/**
+ * @ngdoc function
+ * @name angular.isString
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Determines if a reference is a `String`.
+ *
+ * @param {*} value Reference to check.
+ * @returns {boolean} True if `value` is a `String`.
+ */
+function isString(value) {return typeof value === 'string';}
+
+
+/**
+ * @ngdoc function
+ * @name angular.isNumber
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Determines if a reference is a `Number`.
+ *
+ * This includes the "special" numbers `NaN`, `+Infinity` and `-Infinity`.
+ *
+ * If you wish to exclude these then you can use the native
+ * [`isFinite'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isFinite)
+ * method.
+ *
+ * @param {*} value Reference to check.
+ * @returns {boolean} True if `value` is a `Number`.
+ */
+function isNumber(value) {return typeof value === 'number';}
+
+
+/**
+ * @ngdoc function
+ * @name angular.isDate
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Determines if a value is a date.
+ *
+ * @param {*} value Reference to check.
+ * @returns {boolean} True if `value` is a `Date`.
+ */
+function isDate(value) {
+  return toString.call(value) === '[object Date]';
+}
+
+
+/**
+ * @ngdoc function
+ * @name angular.isArray
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Determines if a reference is an `Array`.
+ *
+ * @param {*} value Reference to check.
+ * @returns {boolean} True if `value` is an `Array`.
+ */
+var isArray = Array.isArray;
+
+/**
+ * @ngdoc function
+ * @name angular.isFunction
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Determines if a reference is a `Function`.
+ *
+ * @param {*} value Reference to check.
+ * @returns {boolean} True if `value` is a `Function`.
+ */
+function isFunction(value) {return typeof value === 'function';}
+
+
+/**
+ * Determines if a value is a regular expression object.
+ *
+ * @private
+ * @param {*} value Reference to check.
+ * @returns {boolean} True if `value` is a `RegExp`.
+ */
+function isRegExp(value) {
+  return toString.call(value) === '[object RegExp]';
+}
+
+
+/**
+ * Checks if `obj` is a window object.
+ *
+ * @private
+ * @param {*} obj Object to check
+ * @returns {boolean} True if `obj` is a window obj.
+ */
+function isWindow(obj) {
+  return obj && obj.window === obj;
+}
+
+
+function isScope(obj) {
+  return obj && obj.$evalAsync && obj.$watch;
+}
+
+
+function isFile(obj) {
+  return toString.call(obj) === '[object File]';
+}
+
+
+function isFormData(obj) {
+  return toString.call(obj) === '[object FormData]';
+}
+
+
+function isBlob(obj) {
+  return toString.call(obj) === '[object Blob]';
+}
+
+
+function isBoolean(value) {
+  return typeof value === 'boolean';
+}
+
+
+function isPromiseLike(obj) {
+  return obj && isFunction(obj.then);
+}
+
+
+var TYPED_ARRAY_REGEXP = /^\[object (?:Uint8|Uint8Clamped|Uint16|Uint32|Int8|Int16|Int32|Float32|Float64)Array\]$/;
+function isTypedArray(value) {
+  return value && isNumber(value.length) && TYPED_ARRAY_REGEXP.test(toString.call(value));
+}
+
+function isArrayBuffer(obj) {
+  return toString.call(obj) === '[object ArrayBuffer]';
+}
+
+
+var trim = function(value) {
+  return isString(value) ? value.trim() : value;
+};
+
+// Copied from:
+// http://docs.closure-library.googlecode.com/git/local_closure_goog_string_string.js.source.html#line1021
+// Prereq: s is a string.
+var escapeForRegexp = function(s) {
+  return s.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g, '\\$1').
+           replace(/\x08/g, '\\x08');
+};
+
+
+/**
+ * @ngdoc function
+ * @name angular.isElement
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Determines if a reference is a DOM element (or wrapped jQuery element).
+ *
+ * @param {*} value Reference to check.
+ * @returns {boolean} True if `value` is a DOM element (or wrapped jQuery element).
+ */
+function isElement(node) {
+  return !!(node &&
+    (node.nodeName  // We are a direct element.
+    || (node.prop && node.attr && node.find)));  // We have an on and find method part of jQuery API.
+}
+
+/**
+ * @param str 'key1,key2,...'
+ * @returns {object} in the form of {key1:true, key2:true, ...}
+ */
+function makeMap(str) {
+  var obj = {}, items = str.split(','), i;
+  for (i = 0; i < items.length; i++) {
+    obj[items[i]] = true;
+  }
+  return obj;
+}
+
+
+function nodeName_(element) {
+  return lowercase(element.nodeName || (element[0] && element[0].nodeName));
+}
+
+function includes(array, obj) {
+  return Array.prototype.indexOf.call(array, obj) != -1;
+}
+
+function arrayRemove(array, value) {
+  var index = array.indexOf(value);
+  if (index >= 0) {
+    array.splice(index, 1);
+  }
+  return index;
+}
+
+/**
+ * @ngdoc function
+ * @name angular.copy
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Creates a deep copy of `source`, which should be an object or an array.
+ *
+ * * If no destination is supplied, a copy of the object or array is created.
+ * * If a destination is provided, all of its elements (for arrays) or properties (for objects)
+ *   are deleted and then all elements/properties from the source are copied to it.
+ * * If `source` is not an object or array (inc. `null` and `undefined`), `source` is returned.
+ * * If `source` is identical to 'destination' an exception will be thrown.
+ *
+ * @param {*} source The source that will be used to make a copy.
+ *                   Can be any type, including primitives, `null`, and `undefined`.
+ * @param {(Object|Array)=} destination Destination into which the source is copied. If
+ *     provided, must be of the same type as `source`.
+ * @returns {*} The copy or updated `destination`, if `destination` was specified.
+ *
+ * @example
+ <example module="copyExample">
+ <file name="index.html">
+ <div ng-controller="ExampleController">
+ <form novalidate class="simple-form">
+ Name: <input type="text" ng-model="user.name" /><br />
+ E-mail: <input type="email" ng-model="user.email" /><br />
+ Gender: <input type="radio" ng-model="user.gender" value="male" />male
+ <input type="radio" ng-model="user.gender" value="female" />female<br />
+ <button ng-click="reset()">RESET</button>
+ <button ng-click="update(user)">SAVE</button>
+ </form>
+ <pre>form = {{user | json}}</pre>
+ <pre>master = {{master | json}}</pre>
+ </div>
+
+ <script>
+  angular.module('copyExample', [])
+    .controller('ExampleController', ['$scope', function($scope) {
+      $scope.master= {};
+
+      $scope.update = function(user) {
+        // Example with 1 argument
+        $scope.master= angular.copy(user);
+      };
+
+      $scope.reset = function() {
+        // Example with 2 arguments
+        angular.copy($scope.master, $scope.user);
+      };
+
+      $scope.reset();
+    }]);
+ </script>
+ </file>
+ </example>
+ */
+function copy(source, destination) {
+  var stackSource = [];
+  var stackDest = [];
+
+  if (destination) {
+    if (isTypedArray(destination) || isArrayBuffer(destination)) {
+      throw ngMinErr('cpta', "Can't copy! TypedArray destination cannot be mutated.");
+    }
+    if (source === destination) {
+      throw ngMinErr('cpi', "Can't copy! Source and destination are identical.");
+    }
+
+    // Empty the destination object
+    if (isArray(destination)) {
+      destination.length = 0;
+    } else {
+      forEach(destination, function(value, key) {
+        if (key !== '$$hashKey') {
+          delete destination[key];
+        }
+      });
+    }
+
+    stackSource.push(source);
+    stackDest.push(destination);
+    return copyRecurse(source, destination);
+  }
+
+  return copyElement(source);
+
+  function copyRecurse(source, destination) {
+    var h = destination.$$hashKey;
+    var key;
+    if (isArray(source)) {
+      for (var i = 0, ii = source.length; i < ii; i++) {
+        destination.push(copyElement(source[i]));
+      }
+    } else if (isBlankObject(source)) {
+      // createMap() fast path --- Safe to avoid hasOwnProperty check because prototype chain is empty
+      for (key in source) {
+        destination[key] = copyElement(source[key]);
+      }
+    } else if (source && typeof source.hasOwnProperty === 'function') {
+      // Slow path, which must rely on hasOwnProperty
+      for (key in source) {
+        if (source.hasOwnProperty(key)) {
+          destination[key] = copyElement(source[key]);
+        }
+      }
+    } else {
+      // Slowest path --- hasOwnProperty can't be called as a method
+      for (key in source) {
+        if (hasOwnProperty.call(source, key)) {
+          destination[key] = copyElement(source[key]);
+        }
+      }
+    }
+    setHashKey(destination, h);
+    return destination;
+  }
+
+  function copyElement(source) {
+    // Simple values
+    if (!isObject(source)) {
+      return source;
+    }
+
+    // Already copied values
+    var index = stackSource.indexOf(source);
+    if (index !== -1) {
+      return stackDest[index];
+    }
+
+    if (isWindow(source) || isScope(source)) {
+      throw ngMinErr('cpws',
+        "Can't copy! Making copies of Window or Scope instances is not supported.");
+    }
+
+    var needsRecurse = false;
+    var destination = copyType(source);
+
+    if (destination === undefined) {
+      destination = isArray(source) ? [] : Object.create(getPrototypeOf(source));
+      needsRecurse = true;
+    }
+
+    stackSource.push(source);
+    stackDest.push(destination);
+
+    return needsRecurse
+      ? copyRecurse(source, destination)
+      : destination;
+  }
+
+  function copyType(source) {
+    switch (toString.call(source)) {
+      case '[object Int8Array]':
+      case '[object Int16Array]':
+      case '[object Int32Array]':
+      case '[object Float32Array]':
+      case '[object Float64Array]':
+      case '[object Uint8Array]':
+      case '[object Uint8ClampedArray]':
+      case '[object Uint16Array]':
+      case '[object Uint32Array]':
+        return new source.constructor(copyElement(source.buffer));
+
+      case '[object ArrayBuffer]':
+        //Support: IE10
+        if (!source.slice) {
+          var copied = new ArrayBuffer(source.byteLength);
+          new Uint8Array(copied).set(new Uint8Array(source));
+          return copied;
+        }
+        return source.slice(0);
+
+      case '[object Boolean]':
+      case '[object Number]':
+      case '[object String]':
+      case '[object Date]':
+        return new source.constructor(source.valueOf());
+
+      case '[object RegExp]':
+        var re = new RegExp(source.source, source.toString().match(/[^\/]*$/)[0]);
+        re.lastIndex = source.lastIndex;
+        return re;
+
+      case '[object Blob]':
+        return new source.constructor([source], {type: source.type});
+    }
+
+    if (isFunction(source.cloneNode)) {
+      return source.cloneNode(true);
+    }
+  }
+}
+
+/**
+ * Creates a shallow copy of an object, an array or a primitive.
+ *
+ * Assumes that there are no proto properties for objects.
+ */
+function shallowCopy(src, dst) {
+  if (isArray(src)) {
+    dst = dst || [];
+
+    for (var i = 0, ii = src.length; i < ii; i++) {
+      dst[i] = src[i];
+    }
+  } else if (isObject(src)) {
+    dst = dst || {};
+
+    for (var key in src) {
+      if (!(key.charAt(0) === '$' && key.charAt(1) === '$')) {
+        dst[key] = src[key];
+      }
+    }
+  }
+
+  return dst || src;
+}
+
+
+/**
+ * @ngdoc function
+ * @name angular.equals
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Determines if two objects or two values are equivalent. Supports value types, regular
+ * expressions, arrays and objects.
+ *
+ * Two objects or values are considered equivalent if at least one of the following is true:
+ *
+ * * Both objects or values pass `===` comparison.
+ * * Both objects or values are of the same type and all of their properties are equal by
+ *   comparing them with `angular.equals`.
+ * * Both values are NaN. (In JavaScript, NaN == NaN => false. But we consider two NaN as equal)
+ * * Both values represent the same regular expression (In JavaScript,
+ *   /abc/ == /abc/ => false. But we consider two regular expressions as equal when their textual
+ *   representation matches).
+ *
+ * During a property comparison, properties of `function` type and properties with names
+ * that begin with `$` are ignored.
+ *
+ * Scope and DOMWindow objects are being compared only by identify (`===`).
+ *
+ * @param {*} o1 Object or value to compare.
+ * @param {*} o2 Object or value to compare.
+ * @returns {boolean} True if arguments are equal.
+ *
+ * @example
+   <example module="equalsExample" name="equalsExample">
+     <file name="index.html">
+      <div ng-controller="ExampleController">
+        <form novalidate>
+          <h3>User 1</h3>
+          Name: <input type="text" ng-model="user1.name">
+          Age: <input type="number" ng-model="user1.age">
+
+          <h3>User 2</h3>
+          Name: <input type="text" ng-model="user2.name">
+          Age: <input type="number" ng-model="user2.age">
+
+          <div>
+            <br/>
+            <input type="button" value="Compare" ng-click="compare()">
+          </div>
+          User 1: <pre>{{user1 | json}}</pre>
+          User 2: <pre>{{user2 | json}}</pre>
+          Equal: <pre>{{result}}</pre>
+        </form>
+      </div>
+    </file>
+    <file name="script.js">
+        angular.module('equalsExample', []).controller('ExampleController', ['$scope', function($scope) {
+          $scope.user1 = {};
+          $scope.user2 = {};
+          $scope.result;
+          $scope.compare = function() {
+            $scope.result = angular.equals($scope.user1, $scope.user2);
+          };
+        }]);
+    </file>
+  </example>
+ */
+function equals(o1, o2) {
+  if (o1 === o2) return true;
+  if (o1 === null || o2 === null) return false;
+  if (o1 !== o1 && o2 !== o2) return true; // NaN === NaN
+  var t1 = typeof o1, t2 = typeof o2, length, key, keySet;
+  if (t1 == t2 && t1 == 'object') {
+    if (isArray(o1)) {
+      if (!isArray(o2)) return false;
+      if ((length = o1.length) == o2.length) {
+        for (key = 0; key < length; key++) {
+          if (!equals(o1[key], o2[key])) return false;
+        }
+        return true;
+      }
+    } else if (isDate(o1)) {
+      if (!isDate(o2)) return false;
+      return equals(o1.getTime(), o2.getTime());
+    } else if (isRegExp(o1)) {
+      if (!isRegExp(o2)) return false;
+      return o1.toString() == o2.toString();
+    } else {
+      if (isScope(o1) || isScope(o2) || isWindow(o1) || isWindow(o2) ||
+        isArray(o2) || isDate(o2) || isRegExp(o2)) return false;
+      keySet = createMap();
+      for (key in o1) {
+        if (key.charAt(0) === '$' || isFunction(o1[key])) continue;
+        if (!equals(o1[key], o2[key])) return false;
+        keySet[key] = true;
+      }
+      for (key in o2) {
+        if (!(key in keySet) &&
+            key.charAt(0) !== '$' &&
+            isDefined(o2[key]) &&
+            !isFunction(o2[key])) return false;
+      }
+      return true;
+    }
+  }
+  return false;
+}
+
+var csp = function() {
+  if (!isDefined(csp.rules)) {
+
+
+    var ngCspElement = (window.document.querySelector('[ng-csp]') ||
+                    window.document.querySelector('[data-ng-csp]'));
+
+    if (ngCspElement) {
+      var ngCspAttribute = ngCspElement.getAttribute('ng-csp') ||
+                    ngCspElement.getAttribute('data-ng-csp');
+      csp.rules = {
+        noUnsafeEval: !ngCspAttribute || (ngCspAttribute.indexOf('no-unsafe-eval') !== -1),
+        noInlineStyle: !ngCspAttribute || (ngCspAttribute.indexOf('no-inline-style') !== -1)
+      };
+    } else {
+      csp.rules = {
+        noUnsafeEval: noUnsafeEval(),
+        noInlineStyle: false
+      };
+    }
+  }
+
+  return csp.rules;
+
+  function noUnsafeEval() {
+    try {
+      /* jshint -W031, -W054 */
+      new Function('');
+      /* jshint +W031, +W054 */
+      return false;
+    } catch (e) {
+      return true;
+    }
+  }
+};
+
+/**
+ * @ngdoc directive
+ * @module ng
+ * @name ngJq
+ *
+ * @element ANY
+ * @param {string=} ngJq the name of the library available under `window`
+ * to be used for angular.element
+ * @description
+ * Use this directive to force the angular.element library.  This should be
+ * used to force either jqLite by leaving ng-jq blank or setting the name of
+ * the jquery variable under window (eg. jQuery).
+ *
+ * Since angular looks for this directive when it is loaded (doesn't wait for the
+ * DOMContentLoaded event), it must be placed on an element that comes before the script
+ * which loads angular. Also, only the first instance of `ng-jq` will be used and all
+ * others ignored.
+ *
+ * @example
+ * This example shows how to force jqLite using the `ngJq` directive to the `html` tag.
+ ```html
+ <!doctype html>
+ <html ng-app ng-jq>
+ ...
+ ...
+ </html>
+ ```
+ * @example
+ * This example shows how to use a jQuery based library of a different name.
+ * The library name must be available at the top most 'window'.
+ ```html
+ <!doctype html>
+ <html ng-app ng-jq="jQueryLib">
+ ...
+ ...
+ </html>
+ ```
+ */
+var jq = function() {
+  if (isDefined(jq.name_)) return jq.name_;
+  var el;
+  var i, ii = ngAttrPrefixes.length, prefix, name;
+  for (i = 0; i < ii; ++i) {
+    prefix = ngAttrPrefixes[i];
+    if (el = window.document.querySelector('[' + prefix.replace(':', '\\:') + 'jq]')) {
+      name = el.getAttribute(prefix + 'jq');
+      break;
+    }
+  }
+
+  return (jq.name_ = name);
+};
+
+function concat(array1, array2, index) {
+  return array1.concat(slice.call(array2, index));
+}
+
+function sliceArgs(args, startIndex) {
+  return slice.call(args, startIndex || 0);
+}
+
+
+/* jshint -W101 */
+/**
+ * @ngdoc function
+ * @name angular.bind
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Returns a function which calls function `fn` bound to `self` (`self` becomes the `this` for
+ * `fn`). You can supply optional `args` that are prebound to the function. This feature is also
+ * known as [partial application](http://en.wikipedia.org/wiki/Partial_application), as
+ * distinguished from [function currying](http://en.wikipedia.org/wiki/Currying#Contrast_with_partial_function_application).
+ *
+ * @param {Object} self Context which `fn` should be evaluated in.
+ * @param {function()} fn Function to be bound.
+ * @param {...*} args Optional arguments to be prebound to the `fn` function call.
+ * @returns {function()} Function that wraps the `fn` with all the specified bindings.
+ */
+/* jshint +W101 */
+function bind(self, fn) {
+  var curryArgs = arguments.length > 2 ? sliceArgs(arguments, 2) : [];
+  if (isFunction(fn) && !(fn instanceof RegExp)) {
+    return curryArgs.length
+      ? function() {
+          return arguments.length
+            ? fn.apply(self, concat(curryArgs, arguments, 0))
+            : fn.apply(self, curryArgs);
+        }
+      : function() {
+          return arguments.length
+            ? fn.apply(self, arguments)
+            : fn.call(self);
+        };
+  } else {
+    // In IE, native methods are not functions so they cannot be bound (note: they don't need to be).
+    return fn;
+  }
+}
+
+
+function toJsonReplacer(key, value) {
+  var val = value;
+
+  if (typeof key === 'string' && key.charAt(0) === '$' && key.charAt(1) === '$') {
+    val = undefined;
+  } else if (isWindow(value)) {
+    val = '$WINDOW';
+  } else if (value &&  window.document === value) {
+    val = '$DOCUMENT';
+  } else if (isScope(value)) {
+    val = '$SCOPE';
+  }
+
+  return val;
+}
+
+
+/**
+ * @ngdoc function
+ * @name angular.toJson
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Serializes input into a JSON-formatted string. Properties with leading $$ characters will be
+ * stripped since angular uses this notation internally.
+ *
+ * @param {Object|Array|Date|string|number} obj Input to be serialized into JSON.
+ * @param {boolean|number} [pretty=2] If set to true, the JSON output will contain newlines and whitespace.
+ *    If set to an integer, the JSON output will contain that many spaces per indentation.
+ * @returns {string|undefined} JSON-ified string representing `obj`.
+ * @knownIssue
+ *
+ * The Safari browser throws a `RangeError` instead of returning `null` when it tries to stringify a `Date`
+ * object with an invalid date value. The only reliable way to prevent this is to monkeypatch the
+ * `Date.prototype.toJSON` method as follows:
+ *
+ * ```
+ * var _DatetoJSON = Date.prototype.toJSON;
+ * Date.prototype.toJSON = function() {
+ *   try {
+ *     return _DatetoJSON.call(this);
+ *   } catch(e) {
+ *     if (e instanceof RangeError) {
+ *       return null;
+ *     }
+ *     throw e;
+ *   }
+ * };
+ * ```
+ *
+ * See https://github.com/angular/angular.js/pull/14221 for more information.
+ */
+function toJson(obj, pretty) {
+  if (isUndefined(obj)) return undefined;
+  if (!isNumber(pretty)) {
+    pretty = pretty ? 2 : null;
+  }
+  return JSON.stringify(obj, toJsonReplacer, pretty);
+}
+
+
+/**
+ * @ngdoc function
+ * @name angular.fromJson
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Deserializes a JSON string.
+ *
+ * @param {string} json JSON string to deserialize.
+ * @returns {Object|Array|string|number} Deserialized JSON string.
+ */
+function fromJson(json) {
+  return isString(json)
+      ? JSON.parse(json)
+      : json;
+}
+
+
+var ALL_COLONS = /:/g;
+function timezoneToOffset(timezone, fallback) {
+  // IE/Edge do not "understand" colon (`:`) in timezone
+  timezone = timezone.replace(ALL_COLONS, '');
+  var requestedTimezoneOffset = Date.parse('Jan 01, 1970 00:00:00 ' + timezone) / 60000;
+  return isNaN(requestedTimezoneOffset) ? fallback : requestedTimezoneOffset;
+}
+
+
+function addDateMinutes(date, minutes) {
+  date = new Date(date.getTime());
+  date.setMinutes(date.getMinutes() + minutes);
+  return date;
+}
+
+
+function convertTimezoneToLocal(date, timezone, reverse) {
+  reverse = reverse ? -1 : 1;
+  var dateTimezoneOffset = date.getTimezoneOffset();
+  var timezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);
+  return addDateMinutes(date, reverse * (timezoneOffset - dateTimezoneOffset));
+}
+
+
+/**
+ * @returns {string} Returns the string representation of the element.
+ */
+function startingTag(element) {
+  element = jqLite(element).clone();
+  try {
+    // turns out IE does not let you set .html() on elements which
+    // are not allowed to have children. So we just ignore it.
+    element.empty();
+  } catch (e) {}
+  var elemHtml = jqLite('<div>').append(element).html();
+  try {
+    return element[0].nodeType === NODE_TYPE_TEXT ? lowercase(elemHtml) :
+        elemHtml.
+          match(/^(<[^>]+>)/)[1].
+          replace(/^<([\w\-]+)/, function(match, nodeName) {return '<' + lowercase(nodeName);});
+  } catch (e) {
+    return lowercase(elemHtml);
+  }
+
+}
+
+
+/////////////////////////////////////////////////
+
+/**
+ * Tries to decode the URI component without throwing an exception.
+ *
+ * @private
+ * @param str value potential URI component to check.
+ * @returns {boolean} True if `value` can be decoded
+ * with the decodeURIComponent function.
+ */
+function tryDecodeURIComponent(value) {
+  try {
+    return decodeURIComponent(value);
+  } catch (e) {
+    // Ignore any invalid uri component.
+  }
+}
+
+
+/**
+ * Parses an escaped url query string into key-value pairs.
+ * @returns {Object.<string,boolean|Array>}
+ */
+function parseKeyValue(/**string*/keyValue) {
+  var obj = {};
+  forEach((keyValue || "").split('&'), function(keyValue) {
+    var splitPoint, key, val;
+    if (keyValue) {
+      key = keyValue = keyValue.replace(/\+/g,'%20');
+      splitPoint = keyValue.indexOf('=');
+      if (splitPoint !== -1) {
+        key = keyValue.substring(0, splitPoint);
+        val = keyValue.substring(splitPoint + 1);
+      }
+      key = tryDecodeURIComponent(key);
+      if (isDefined(key)) {
+        val = isDefined(val) ? tryDecodeURIComponent(val) : true;
+        if (!hasOwnProperty.call(obj, key)) {
+          obj[key] = val;
+        } else if (isArray(obj[key])) {
+          obj[key].push(val);
+        } else {
+          obj[key] = [obj[key],val];
+        }
+      }
+    }
+  });
+  return obj;
+}
+
+function toKeyValue(obj) {
+  var parts = [];
+  forEach(obj, function(value, key) {
+    if (isArray(value)) {
+      forEach(value, function(arrayValue) {
+        parts.push(encodeUriQuery(key, true) +
+                   (arrayValue === true ? '' : '=' + encodeUriQuery(arrayValue, true)));
+      });
+    } else {
+    parts.push(encodeUriQuery(key, true) +
+               (value === true ? '' : '=' + encodeUriQuery(value, true)));
+    }
+  });
+  return parts.length ? parts.join('&') : '';
+}
+
+
+/**
+ * We need our custom method because encodeURIComponent is too aggressive and doesn't follow
+ * http://www.ietf.org/rfc/rfc3986.txt with regards to the character set (pchar) allowed in path
+ * segments:
+ *    segment       = *pchar
+ *    pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"
+ *    pct-encoded   = "%" HEXDIG HEXDIG
+ *    unreserved    = ALPHA / DIGIT / "-" / "." / "_" / "~"
+ *    sub-delims    = "!" / "$" / "&" / "'" / "(" / ")"
+ *                     / "*" / "+" / "," / ";" / "="
+ */
+function encodeUriSegment(val) {
+  return encodeUriQuery(val, true).
+             replace(/%26/gi, '&').
+             replace(/%3D/gi, '=').
+             replace(/%2B/gi, '+');
+}
+
+
+/**
+ * This method is intended for encoding *key* or *value* parts of query component. We need a custom
+ * method because encodeURIComponent is too aggressive and encodes stuff that doesn't have to be
+ * encoded per http://tools.ietf.org/html/rfc3986:
+ *    query       = *( pchar / "/" / "?" )
+ *    pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"
+ *    unreserved    = ALPHA / DIGIT / "-" / "." / "_" / "~"
+ *    pct-encoded   = "%" HEXDIG HEXDIG
+ *    sub-delims    = "!" / "$" / "&" / "'" / "(" / ")"
+ *                     / "*" / "+" / "," / ";" / "="
+ */
+function encodeUriQuery(val, pctEncodeSpaces) {
+  return encodeURIComponent(val).
+             replace(/%40/gi, '@').
+             replace(/%3A/gi, ':').
+             replace(/%24/g, '$').
+             replace(/%2C/gi, ',').
+             replace(/%3B/gi, ';').
+             replace(/%20/g, (pctEncodeSpaces ? '%20' : '+'));
+}
+
+var ngAttrPrefixes = ['ng-', 'data-ng-', 'ng:', 'x-ng-'];
+
+function getNgAttribute(element, ngAttr) {
+  var attr, i, ii = ngAttrPrefixes.length;
+  for (i = 0; i < ii; ++i) {
+    attr = ngAttrPrefixes[i] + ngAttr;
+    if (isString(attr = element.getAttribute(attr))) {
+      return attr;
+    }
+  }
+  return null;
+}
+
+/**
+ * @ngdoc directive
+ * @name ngApp
+ * @module ng
+ *
+ * @element ANY
+ * @param {angular.Module} ngApp an optional application
+ *   {@link angular.module module} name to load.
+ * @param {boolean=} ngStrictDi if this attribute is present on the app element, the injector will be
+ *   created in "strict-di" mode. This means that the application will fail to invoke functions which
+ *   do not use explicit function annotation (and are thus unsuitable for minification), as described
+ *   in {@link guide/di the Dependency Injection guide}, and useful debugging info will assist in
+ *   tracking down the root of these bugs.
+ *
+ * @description
+ *
+ * Use this directive to **auto-bootstrap** an AngularJS application. The `ngApp` directive
+ * designates the **root element** of the application and is typically placed near the root element
+ * of the page - e.g. on the `<body>` or `<html>` tags.
+ *
+ * There are a few things to keep in mind when using `ngApp`:
+ * - only one AngularJS application can be auto-bootstrapped per HTML document. The first `ngApp`
+ *   found in the document will be used to define the root element to auto-bootstrap as an
+ *   application. To run multiple applications in an HTML document you must manually bootstrap them using
+ *   {@link angular.bootstrap} instead.
+ * - AngularJS applications cannot be nested within each other.
+ * - Do not use a directive that uses {@link ng.$compile#transclusion transclusion} on the same element as `ngApp`.
+ *   This includes directives such as {@link ng.ngIf `ngIf`}, {@link ng.ngInclude `ngInclude`} and
+ *   {@link ngRoute.ngView `ngView`}.
+ *   Doing this misplaces the app {@link ng.$rootElement `$rootElement`} and the app's {@link auto.$injector injector},
+ *   causing animations to stop working and making the injector inaccessible from outside the app.
+ *
+ * You can specify an **AngularJS module** to be used as the root module for the application.  This
+ * module will be loaded into the {@link auto.$injector} when the application is bootstrapped. It
+ * should contain the application code needed or have dependencies on other modules that will
+ * contain the code. See {@link angular.module} for more information.
+ *
+ * In the example below if the `ngApp` directive were not placed on the `html` element then the
+ * document would not be compiled, the `AppController` would not be instantiated and the `{{ a+b }}`
+ * would not be resolved to `3`.
+ *
+ * `ngApp` is the easiest, and most common way to bootstrap an application.
+ *
+ <example module="ngAppDemo">
+   <file name="index.html">
+   <div ng-controller="ngAppDemoController">
+     I can add: {{a}} + {{b}} =  {{ a+b }}
+   </div>
+   </file>
+   <file name="script.js">
+   angular.module('ngAppDemo', []).controller('ngAppDemoController', function($scope) {
+     $scope.a = 1;
+     $scope.b = 2;
+   });
+   </file>
+ </example>
+ *
+ * Using `ngStrictDi`, you would see something like this:
+ *
+ <example ng-app-included="true">
+   <file name="index.html">
+   <div ng-app="ngAppStrictDemo" ng-strict-di>
+       <div ng-controller="GoodController1">
+           I can add: {{a}} + {{b}} =  {{ a+b }}
+
+           <p>This renders because the controller does not fail to
+              instantiate, by using explicit annotation style (see
+              script.js for details)
+           </p>
+       </div>
+
+       <div ng-controller="GoodController2">
+           Name: <input ng-model="name"><br />
+           Hello, {{name}}!
+
+           <p>This renders because the controller does not fail to
+              instantiate, by using explicit annotation style
+              (see script.js for details)
+           </p>
+       </div>
+
+       <div ng-controller="BadController">
+           I can add: {{a}} + {{b}} =  {{ a+b }}
+
+           <p>The controller could not be instantiated, due to relying
+              on automatic function annotations (which are disabled in
+              strict mode). As such, the content of this section is not
+              interpolated, and there should be an error in your web console.
+           </p>
+       </div>
+   </div>
+   </file>
+   <file name="script.js">
+   angular.module('ngAppStrictDemo', [])
+     // BadController will fail to instantiate, due to relying on automatic function annotation,
+     // rather than an explicit annotation
+     .controller('BadController', function($scope) {
+       $scope.a = 1;
+       $scope.b = 2;
+     })
+     // Unlike BadController, GoodController1 and GoodController2 will not fail to be instantiated,
+     // due to using explicit annotations using the array style and $inject property, respectively.
+     .controller('GoodController1', ['$scope', function($scope) {
+       $scope.a = 1;
+       $scope.b = 2;
+     }])
+     .controller('GoodController2', GoodController2);
+     function GoodController2($scope) {
+       $scope.name = "World";
+     }
+     GoodController2.$inject = ['$scope'];
+   </file>
+   <file name="style.css">
+   div[ng-controller] {
+       margin-bottom: 1em;
+       -webkit-border-radius: 4px;
+       border-radius: 4px;
+       border: 1px solid;
+       padding: .5em;
+   }
+   div[ng-controller^=Good] {
+       border-color: #d6e9c6;
+       background-color: #dff0d8;
+       color: #3c763d;
+   }
+   div[ng-controller^=Bad] {
+       border-color: #ebccd1;
+       background-color: #f2dede;
+       color: #a94442;
+       margin-bottom: 0;
+   }
+   </file>
+ </example>
+ */
+function angularInit(element, bootstrap) {
+  var appElement,
+      module,
+      config = {};
+
+  // The element `element` has priority over any other element.
+  forEach(ngAttrPrefixes, function(prefix) {
+    var name = prefix + 'app';
+
+    if (!appElement && element.hasAttribute && element.hasAttribute(name)) {
+      appElement = element;
+      module = element.getAttribute(name);
+    }
+  });
+  forEach(ngAttrPrefixes, function(prefix) {
+    var name = prefix + 'app';
+    var candidate;
+
+    if (!appElement && (candidate = element.querySelector('[' + name.replace(':', '\\:') + ']'))) {
+      appElement = candidate;
+      module = candidate.getAttribute(name);
+    }
+  });
+  if (appElement) {
+    config.strictDi = getNgAttribute(appElement, "strict-di") !== null;
+    bootstrap(appElement, module ? [module] : [], config);
+  }
+}
+
+/**
+ * @ngdoc function
+ * @name angular.bootstrap
+ * @module ng
+ * @description
+ * Use this function to manually start up angular application.
+ *
+ * For more information, see the {@link guide/bootstrap Bootstrap guide}.
+ *
+ * Angular will detect if it has been loaded into the browser more than once and only allow the
+ * first loaded script to be bootstrapped and will report a warning to the browser console for
+ * each of the subsequent scripts. This prevents strange results in applications, where otherwise
+ * multiple instances of Angular try to work on the DOM.
+ *
+ * <div class="alert alert-warning">
+ * **Note:** Protractor based end-to-end tests cannot use this function to bootstrap manually.
+ * They must use {@link ng.directive:ngApp ngApp}.
+ * </div>
+ *
+ * <div class="alert alert-warning">
+ * **Note:** Do not bootstrap the app on an element with a directive that uses {@link ng.$compile#transclusion transclusion},
+ * such as {@link ng.ngIf `ngIf`}, {@link ng.ngInclude `ngInclude`} and {@link ngRoute.ngView `ngView`}.
+ * Doing this misplaces the app {@link ng.$rootElement `$rootElement`} and the app's {@link auto.$injector injector},
+ * causing animations to stop working and making the injector inaccessible from outside the app.
+ * </div>
+ *
+ * ```html
+ * <!doctype html>
+ * <html>
+ * <body>
+ * <div ng-controller="WelcomeController">
+ *   {{greeting}}
+ * </div>
+ *
+ * <script src="angular.js"></script>
+ * <script>
+ *   var app = angular.module('demo', [])
+ *   .controller('WelcomeController', function($scope) {
+ *       $scope.greeting = 'Welcome!';
+ *   });
+ *   angular.bootstrap(document, ['demo']);
+ * </script>
+ * </body>
+ * </html>
+ * ```
+ *
+ * @param {DOMElement} element DOM element which is the root of angular application.
+ * @param {Array<String|Function|Array>=} modules an array of modules to load into the application.
+ *     Each item in the array should be the name of a predefined module or a (DI annotated)
+ *     function that will be invoked by the injector as a `config` block.
+ *     See: {@link angular.module modules}
+ * @param {Object=} config an object for defining configuration options for the application. The
+ *     following keys are supported:
+ *
+ * * `strictDi` - disable automatic function annotation for the application. This is meant to
+ *   assist in finding bugs which break minified code. Defaults to `false`.
+ *
+ * @returns {auto.$injector} Returns the newly created injector for this app.
+ */
+function bootstrap(element, modules, config) {
+  if (!isObject(config)) config = {};
+  var defaultConfig = {
+    strictDi: false
+  };
+  config = extend(defaultConfig, config);
+  var doBootstrap = function() {
+    element = jqLite(element);
+
+    if (element.injector()) {
+      var tag = (element[0] === window.document) ? 'document' : startingTag(element);
+      // Encode angle brackets to prevent input from being sanitized to empty string #8683.
+      throw ngMinErr(
+          'btstrpd',
+          "App already bootstrapped with this element '{0}'",
+          tag.replace(/</,'&lt;').replace(/>/,'&gt;'));
+    }
+
+    modules = modules || [];
+    modules.unshift(['$provide', function($provide) {
+      $provide.value('$rootElement', element);
+    }]);
+
+    if (config.debugInfoEnabled) {
+      // Pushing so that this overrides `debugInfoEnabled` setting defined in user's `modules`.
+      modules.push(['$compileProvider', function($compileProvider) {
+        $compileProvider.debugInfoEnabled(true);
+      }]);
+    }
+
+    modules.unshift('ng');
+    var injector = createInjector(modules, config.strictDi);
+    injector.invoke(['$rootScope', '$rootElement', '$compile', '$injector',
+       function bootstrapApply(scope, element, compile, injector) {
+        scope.$apply(function() {
+          element.data('$injector', injector);
+          compile(element)(scope);
+        });
+      }]
+    );
+    return injector;
+  };
+
+  var NG_ENABLE_DEBUG_INFO = /^NG_ENABLE_DEBUG_INFO!/;
+  var NG_DEFER_BOOTSTRAP = /^NG_DEFER_BOOTSTRAP!/;
+
+  if (window && NG_ENABLE_DEBUG_INFO.test(window.name)) {
+    config.debugInfoEnabled = true;
+    window.name = window.name.replace(NG_ENABLE_DEBUG_INFO, '');
+  }
+
+  if (window && !NG_DEFER_BOOTSTRAP.test(window.name)) {
+    return doBootstrap();
+  }
+
+  window.name = window.name.replace(NG_DEFER_BOOTSTRAP, '');
+  angular.resumeBootstrap = function(extraModules) {
+    forEach(extraModules, function(module) {
+      modules.push(module);
+    });
+    return doBootstrap();
+  };
+
+  if (isFunction(angular.resumeDeferredBootstrap)) {
+    angular.resumeDeferredBootstrap();
+  }
+}
+
+/**
+ * @ngdoc function
+ * @name angular.reloadWithDebugInfo
+ * @module ng
+ * @description
+ * Use this function to reload the current application with debug information turned on.
+ * This takes precedence over a call to `$compileProvider.debugInfoEnabled(false)`.
+ *
+ * See {@link ng.$compileProvider#debugInfoEnabled} for more.
+ */
+function reloadWithDebugInfo() {
+  window.name = 'NG_ENABLE_DEBUG_INFO!' + window.name;
+  window.location.reload();
+}
+
+/**
+ * @name angular.getTestability
+ * @module ng
+ * @description
+ * Get the testability service for the instance of Angular on the given
+ * element.
+ * @param {DOMElement} element DOM element which is the root of angular application.
+ */
+function getTestability(rootElement) {
+  var injector = angular.element(rootElement).injector();
+  if (!injector) {
+    throw ngMinErr('test',
+      'no injector found for element argument to getTestability');
+  }
+  return injector.get('$$testability');
+}
+
+var SNAKE_CASE_REGEXP = /[A-Z]/g;
+function snake_case(name, separator) {
+  separator = separator || '_';
+  return name.replace(SNAKE_CASE_REGEXP, function(letter, pos) {
+    return (pos ? separator : '') + letter.toLowerCase();
+  });
+}
+
+var bindJQueryFired = false;
+function bindJQuery() {
+  var originalCleanData;
+
+  if (bindJQueryFired) {
+    return;
+  }
+
+  // bind to jQuery if present;
+  var jqName = jq();
+  jQuery = isUndefined(jqName) ? window.jQuery :   // use jQuery (if present)
+           !jqName             ? undefined     :   // use jqLite
+                                 window[jqName];   // use jQuery specified by `ngJq`
+
+  // Use jQuery if it exists with proper functionality, otherwise default to us.
+  // Angular 1.2+ requires jQuery 1.7+ for on()/off() support.
+  // Angular 1.3+ technically requires at least jQuery 2.1+ but it may work with older
+  // versions. It will not work for sure with jQuery <1.7, though.
+  if (jQuery && jQuery.fn.on) {
+    jqLite = jQuery;
+    extend(jQuery.fn, {
+      scope: JQLitePrototype.scope,
+      isolateScope: JQLitePrototype.isolateScope,
+      controller: JQLitePrototype.controller,
+      injector: JQLitePrototype.injector,
+      inheritedData: JQLitePrototype.inheritedData
+    });
+
+    // All nodes removed from the DOM via various jQuery APIs like .remove()
+    // are passed through jQuery.cleanData. Monkey-patch this method to fire
+    // the $destroy event on all removed nodes.
+    originalCleanData = jQuery.cleanData;
+    jQuery.cleanData = function(elems) {
+      var events;
+      for (var i = 0, elem; (elem = elems[i]) != null; i++) {
+        events = jQuery._data(elem, "events");
+        if (events && events.$destroy) {
+          jQuery(elem).triggerHandler('$destroy');
+        }
+      }
+      originalCleanData(elems);
+    };
+  } else {
+    jqLite = JQLite;
+  }
+
+  angular.element = jqLite;
+
+  // Prevent double-proxying.
+  bindJQueryFired = true;
+}
+
+/**
+ * throw error if the argument is falsy.
+ */
+function assertArg(arg, name, reason) {
+  if (!arg) {
+    throw ngMinErr('areq', "Argument '{0}' is {1}", (name || '?'), (reason || "required"));
+  }
+  return arg;
+}
+
+function assertArgFn(arg, name, acceptArrayAnnotation) {
+  if (acceptArrayAnnotation && isArray(arg)) {
+      arg = arg[arg.length - 1];
+  }
+
+  assertArg(isFunction(arg), name, 'not a function, got ' +
+      (arg && typeof arg === 'object' ? arg.constructor.name || 'Object' : typeof arg));
+  return arg;
+}
+
+/**
+ * throw error if the name given is hasOwnProperty
+ * @param  {String} name    the name to test
+ * @param  {String} context the context in which the name is used, such as module or directive
+ */
+function assertNotHasOwnProperty(name, context) {
+  if (name === 'hasOwnProperty') {
+    throw ngMinErr('badname', "hasOwnProperty is not a valid {0} name", context);
+  }
+}
+
+/**
+ * Return the value accessible from the object by path. Any undefined traversals are ignored
+ * @param {Object} obj starting object
+ * @param {String} path path to traverse
+ * @param {boolean} [bindFnToScope=true]
+ * @returns {Object} value as accessible by path
+ */
+//TODO(misko): this function needs to be removed
+function getter(obj, path, bindFnToScope) {
+  if (!path) return obj;
+  var keys = path.split('.');
+  var key;
+  var lastInstance = obj;
+  var len = keys.length;
+
+  for (var i = 0; i < len; i++) {
+    key = keys[i];
+    if (obj) {
+      obj = (lastInstance = obj)[key];
+    }
+  }
+  if (!bindFnToScope && isFunction(obj)) {
+    return bind(lastInstance, obj);
+  }
+  return obj;
+}
+
+/**
+ * Return the DOM siblings between the first and last node in the given array.
+ * @param {Array} array like object
+ * @returns {Array} the inputted object or a jqLite collection containing the nodes
+ */
+function getBlockNodes(nodes) {
+  // TODO(perf): update `nodes` instead of creating a new object?
+  var node = nodes[0];
+  var endNode = nodes[nodes.length - 1];
+  var blockNodes;
+
+  for (var i = 1; node !== endNode && (node = node.nextSibling); i++) {
+    if (blockNodes || nodes[i] !== node) {
+      if (!blockNodes) {
+        blockNodes = jqLite(slice.call(nodes, 0, i));
+      }
+      blockNodes.push(node);
+    }
+  }
+
+  return blockNodes || nodes;
+}
+
+
+/**
+ * Creates a new object without a prototype. This object is useful for lookup without having to
+ * guard against prototypically inherited properties via hasOwnProperty.
+ *
+ * Related micro-benchmarks:
+ * - http://jsperf.com/object-create2
+ * - http://jsperf.com/proto-map-lookup/2
+ * - http://jsperf.com/for-in-vs-object-keys2
+ *
+ * @returns {Object}
+ */
+function createMap() {
+  return Object.create(null);
+}
+
+var NODE_TYPE_ELEMENT = 1;
+var NODE_TYPE_ATTRIBUTE = 2;
+var NODE_TYPE_TEXT = 3;
+var NODE_TYPE_COMMENT = 8;
+var NODE_TYPE_DOCUMENT = 9;
+var NODE_TYPE_DOCUMENT_FRAGMENT = 11;
+
+/**
+ * @ngdoc type
+ * @name angular.Module
+ * @module ng
+ * @description
+ *
+ * Interface for configuring angular {@link angular.module modules}.
+ */
+
+function setupModuleLoader(window) {
+
+  var $injectorMinErr = minErr('$injector');
+  var ngMinErr = minErr('ng');
+
+  function ensure(obj, name, factory) {
+    return obj[name] || (obj[name] = factory());
+  }
+
+  var angular = ensure(window, 'angular', Object);
+
+  // We need to expose `angular.$$minErr` to modules such as `ngResource` that reference it during bootstrap
+  angular.$$minErr = angular.$$minErr || minErr;
+
+  return ensure(angular, 'module', function() {
+    /** @type {Object.<string, angular.Module>} */
+    var modules = {};
+
+    /**
+     * @ngdoc function
+     * @name angular.module
+     * @module ng
+     * @description
+     *
+     * The `angular.module` is a global place for creating, registering and retrieving Angular
+     * modules.
+     * All modules (angular core or 3rd party) that should be available to an application must be
+     * registered using this mechanism.
+     *
+     * Passing one argument retrieves an existing {@link angular.Module},
+     * whereas passing more than one argument creates a new {@link angular.Module}
+     *
+     *
+     * # Module
+     *
+     * A module is a collection of services, directives, controllers, filters, and configuration information.
+     * `angular.module` is used to configure the {@link auto.$injector $injector}.
+     *
+     * ```js
+     * // Create a new module
+     * var myModule = angular.module('myModule', []);
+     *
+     * // register a new service
+     * myModule.value('appName', 'MyCoolApp');
+     *
+     * // configure existing services inside initialization blocks.
+     * myModule.config(['$locationProvider', function($locationProvider) {
+     *   // Configure existing providers
+     *   $locationProvider.hashPrefix('!');
+     * }]);
+     * ```
+     *
+     * Then you can create an injector and load your modules like this:
+     *
+     * ```js
+     * var injector = angular.injector(['ng', 'myModule'])
+     * ```
+     *
+     * However it's more likely that you'll just use
+     * {@link ng.directive:ngApp ngApp} or
+     * {@link angular.bootstrap} to simplify this process for you.
+     *
+     * @param {!string} name The name of the module to create or retrieve.
+     * @param {!Array.<string>=} requires If specified then new module is being created. If
+     *        unspecified then the module is being retrieved for further configuration.
+     * @param {Function=} configFn Optional configuration function for the module. Same as
+     *        {@link angular.Module#config Module#config()}.
+     * @returns {angular.Module} new module with the {@link angular.Module} api.
+     */
+    return function module(name, requires, configFn) {
+      var assertNotHasOwnProperty = function(name, context) {
+        if (name === 'hasOwnProperty') {
+          throw ngMinErr('badname', 'hasOwnProperty is not a valid {0} name', context);
+        }
+      };
+
+      assertNotHasOwnProperty(name, 'module');
+      if (requires && modules.hasOwnProperty(name)) {
+        modules[name] = null;
+      }
+      return ensure(modules, name, function() {
+        if (!requires) {
+          throw $injectorMinErr('nomod', "Module '{0}' is not available! You either misspelled " +
+             "the module name or forgot to load it. If registering a module ensure that you " +
+             "specify the dependencies as the second argument.", name);
+        }
+
+        /** @type {!Array.<Array.<*>>} */
+        var invokeQueue = [];
+
+        /** @type {!Array.<Function>} */
+        var configBlocks = [];
+
+        /** @type {!Array.<Function>} */
+        var runBlocks = [];
+
+        var config = invokeLater('$injector', 'invoke', 'push', configBlocks);
+
+        /** @type {angular.Module} */
+        var moduleInstance = {
+          // Private state
+          _invokeQueue: invokeQueue,
+          _configBlocks: configBlocks,
+          _runBlocks: runBlocks,
+
+          /**
+           * @ngdoc property
+           * @name angular.Module#requires
+           * @module ng
+           *
+           * @description
+           * Holds the list of modules which the injector will load before the current module is
+           * loaded.
+           */
+          requires: requires,
+
+          /**
+           * @ngdoc property
+           * @name angular.Module#name
+           * @module ng
+           *
+           * @description
+           * Name of the module.
+           */
+          name: name,
+
+
+          /**
+           * @ngdoc method
+           * @name angular.Module#provider
+           * @module ng
+           * @param {string} name service name
+           * @param {Function} providerType Construction function for creating new instance of the
+           *                                service.
+           * @description
+           * See {@link auto.$provide#provider $provide.provider()}.
+           */
+          provider: invokeLaterAndSetModuleName('$provide', 'provider'),
+
+          /**
+           * @ngdoc method
+           * @name angular.Module#factory
+           * @module ng
+           * @param {string} name service name
+           * @param {Function} providerFunction Function for creating new instance of the service.
+           * @description
+           * See {@link auto.$provide#factory $provide.factory()}.
+           */
+          factory: invokeLaterAndSetModuleName('$provide', 'factory'),
+
+          /**
+           * @ngdoc method
+           * @name angular.Module#service
+           * @module ng
+           * @param {string} name service name
+           * @param {Function} constructor A constructor function that will be instantiated.
+           * @description
+           * See {@link auto.$provide#service $provide.service()}.
+           */
+          service: invokeLaterAndSetModuleName('$provide', 'service'),
+
+          /**
+           * @ngdoc method
+           * @name angular.Module#value
+           * @module ng
+           * @param {string} name service name
+           * @param {*} object Service instance object.
+           * @description
+           * See {@link auto.$provide#value $provide.value()}.
+           */
+          value: invokeLater('$provide', 'value'),
+
+          /**
+           * @ngdoc method
+           * @name angular.Module#constant
+           * @module ng
+           * @param {string} name constant name
+           * @param {*} object Constant value.
+           * @description
+           * Because the constants are fixed, they get applied before other provide methods.
+           * See {@link auto.$provide#constant $provide.constant()}.
+           */
+          constant: invokeLater('$provide', 'constant', 'unshift'),
+
+           /**
+           * @ngdoc method
+           * @name angular.Module#decorator
+           * @module ng
+           * @param {string} name The name of the service to decorate.
+           * @param {Function} decorFn This function will be invoked when the service needs to be
+           *                           instantiated and should return the decorated service instance.
+           * @description
+           * See {@link auto.$provide#decorator $provide.decorator()}.
+           */
+          decorator: invokeLaterAndSetModuleName('$provide', 'decorator'),
+
+          /**
+           * @ngdoc method
+           * @name angular.Module#animation
+           * @module ng
+           * @param {string} name animation name
+           * @param {Function} animationFactory Factory function for creating new instance of an
+           *                                    animation.
+           * @description
+           *
+           * **NOTE**: animations take effect only if the **ngAnimate** module is loaded.
+           *
+           *
+           * Defines an animation hook that can be later used with
+           * {@link $animate $animate} service and directives that use this service.
+           *
+           * ```js
+           * module.animation('.animation-name', function($inject1, $inject2) {
+           *   return {
+           *     eventName : function(element, done) {
+           *       //code to run the animation
+           *       //once complete, then run done()
+           *       return function cancellationFunction(element) {
+           *         //code to cancel the animation
+           *       }
+           *     }
+           *   }
+           * })
+           * ```
+           *
+           * See {@link ng.$animateProvider#register $animateProvider.register()} and
+           * {@link ngAnimate ngAnimate module} for more information.
+           */
+          animation: invokeLaterAndSetModuleName('$animateProvider', 'register'),
+
+          /**
+           * @ngdoc method
+           * @name angular.Module#filter
+           * @module ng
+           * @param {string} name Filter name - this must be a valid angular expression identifier
+           * @param {Function} filterFactory Factory function for creating new instance of filter.
+           * @description
+           * See {@link ng.$filterProvider#register $filterProvider.register()}.
+           *
+           * <div class="alert alert-warning">
+           * **Note:** Filter names must be valid angular {@link expression} identifiers, such as `uppercase` or `orderBy`.
+           * Names with special characters, such as hyphens and dots, are not allowed. If you wish to namespace
+           * your filters, then you can use capitalization (`myappSubsectionFilterx`) or underscores
+           * (`myapp_subsection_filterx`).
+           * </div>
+           */
+          filter: invokeLaterAndSetModuleName('$filterProvider', 'register'),
+
+          /**
+           * @ngdoc method
+           * @name angular.Module#controller
+           * @module ng
+           * @param {string|Object} name Controller name, or an object map of controllers where the
+           *    keys are the names and the values are the constructors.
+           * @param {Function} constructor Controller constructor function.
+           * @description
+           * See {@link ng.$controllerProvider#register $controllerProvider.register()}.
+           */
+          controller: invokeLaterAndSetModuleName('$controllerProvider', 'register'),
+
+          /**
+           * @ngdoc method
+           * @name angular.Module#directive
+           * @module ng
+           * @param {string|Object} name Directive name, or an object map of directives where the
+           *    keys are the names and the values are the factories.
+           * @param {Function} directiveFactory Factory function for creating new instance of
+           * directives.
+           * @description
+           * See {@link ng.$compileProvider#directive $compileProvider.directive()}.
+           */
+          directive: invokeLaterAndSetModuleName('$compileProvider', 'directive'),
+
+          /**
+           * @ngdoc method
+           * @name angular.Module#component
+           * @module ng
+           * @param {string} name Name of the component in camel-case (i.e. myComp which will match as my-comp)
+           * @param {Object} options Component definition object (a simplified
+           *    {@link ng.$compile#directive-definition-object directive definition object})
+           *
+           * @description
+           * See {@link ng.$compileProvider#component $compileProvider.component()}.
+           */
+          component: invokeLaterAndSetModuleName('$compileProvider', 'component'),
+
+          /**
+           * @ngdoc method
+           * @name angular.Module#config
+           * @module ng
+           * @param {Function} configFn Execute this function on module load. Useful for service
+           *    configuration.
+           * @description
+           * Use this method to register work which needs to be performed on module loading.
+           * For more about how to configure services, see
+           * {@link providers#provider-recipe Provider Recipe}.
+           */
+          config: config,
+
+          /**
+           * @ngdoc method
+           * @name angular.Module#run
+           * @module ng
+           * @param {Function} initializationFn Execute this function after injector creation.
+           *    Useful for application initialization.
+           * @description
+           * Use this method to register work which should be performed when the injector is done
+           * loading all modules.
+           */
+          run: function(block) {
+            runBlocks.push(block);
+            return this;
+          }
+        };
+
+        if (configFn) {
+          config(configFn);
+        }
+
+        return moduleInstance;
+
+        /**
+         * @param {string} provider
+         * @param {string} method
+         * @param {String=} insertMethod
+         * @returns {angular.Module}
+         */
+        function invokeLater(provider, method, insertMethod, queue) {
+          if (!queue) queue = invokeQueue;
+          return function() {
+            queue[insertMethod || 'push']([provider, method, arguments]);
+            return moduleInstance;
+          };
+        }
+
+        /**
+         * @param {string} provider
+         * @param {string} method
+         * @returns {angular.Module}
+         */
+        function invokeLaterAndSetModuleName(provider, method) {
+          return function(recipeName, factoryFunction) {
+            if (factoryFunction && isFunction(factoryFunction)) factoryFunction.$$moduleName = name;
+            invokeQueue.push([provider, method, arguments]);
+            return moduleInstance;
+          };
+        }
+      });
+    };
+  });
+
+}
+
+/* global: toDebugString: true */
+
+function serializeObject(obj) {
+  var seen = [];
+
+  return JSON.stringify(obj, function(key, val) {
+    val = toJsonReplacer(key, val);
+    if (isObject(val)) {
+
+      if (seen.indexOf(val) >= 0) return '...';
+
+      seen.push(val);
+    }
+    return val;
+  });
+}
+
+function toDebugString(obj) {
+  if (typeof obj === 'function') {
+    return obj.toString().replace(/ \{[\s\S]*$/, '');
+  } else if (isUndefined(obj)) {
+    return 'undefined';
+  } else if (typeof obj !== 'string') {
+    return serializeObject(obj);
+  }
+  return obj;
+}
+
+/* global angularModule: true,
+  version: true,
+
+  $CompileProvider,
+
+  htmlAnchorDirective,
+  inputDirective,
+  inputDirective,
+  formDirective,
+  scriptDirective,
+  selectDirective,
+  styleDirective,
+  optionDirective,
+  ngBindDirective,
+  ngBindHtmlDirective,
+  ngBindTemplateDirective,
+  ngClassDirective,
+  ngClassEvenDirective,
+  ngClassOddDirective,
+  ngCloakDirective,
+  ngControllerDirective,
+  ngFormDirective,
+  ngHideDirective,
+  ngIfDirective,
+  ngIncludeDirective,
+  ngIncludeFillContentDirective,
+  ngInitDirective,
+  ngNonBindableDirective,
+  ngPluralizeDirective,
+  ngRepeatDirective,
+  ngShowDirective,
+  ngStyleDirective,
+  ngSwitchDirective,
+  ngSwitchWhenDirective,
+  ngSwitchDefaultDirective,
+  ngOptionsDirective,
+  ngTranscludeDirective,
+  ngModelDirective,
+  ngListDirective,
+  ngChangeDirective,
+  patternDirective,
+  patternDirective,
+  requiredDirective,
+  requiredDirective,
+  minlengthDirective,
+  minlengthDirective,
+  maxlengthDirective,
+  maxlengthDirective,
+  ngValueDirective,
+  ngModelOptionsDirective,
+  ngAttributeAliasDirectives,
+  ngEventDirectives,
+
+  $AnchorScrollProvider,
+  $AnimateProvider,
+  $CoreAnimateCssProvider,
+  $$CoreAnimateJsProvider,
+  $$CoreAnimateQueueProvider,
+  $$AnimateRunnerFactoryProvider,
+  $$AnimateAsyncRunFactoryProvider,
+  $BrowserProvider,
+  $CacheFactoryProvider,
+  $ControllerProvider,
+  $DateProvider,
+  $DocumentProvider,
+  $ExceptionHandlerProvider,
+  $FilterProvider,
+  $$ForceReflowProvider,
+  $InterpolateProvider,
+  $IntervalProvider,
+  $$HashMapProvider,
+  $HttpProvider,
+  $HttpParamSerializerProvider,
+  $HttpParamSerializerJQLikeProvider,
+  $HttpBackendProvider,
+  $xhrFactoryProvider,
+  $LocationProvider,
+  $LogProvider,
+  $ParseProvider,
+  $RootScopeProvider,
+  $QProvider,
+  $$QProvider,
+  $$SanitizeUriProvider,
+  $SceProvider,
+  $SceDelegateProvider,
+  $SnifferProvider,
+  $TemplateCacheProvider,
+  $TemplateRequestProvider,
+  $$TestabilityProvider,
+  $TimeoutProvider,
+  $$RAFProvider,
+  $WindowProvider,
+  $$jqLiteProvider,
+  $$CookieReaderProvider
+*/
+
+
+/**
+ * @ngdoc object
+ * @name angular.version
+ * @module ng
+ * @description
+ * An object that contains information about the current AngularJS version.
+ *
+ * This object has the following properties:
+ *
+ * - `full` – `{string}` – Full version string, such as "0.9.18".
+ * - `major` – `{number}` – Major version number, such as "0".
+ * - `minor` – `{number}` – Minor version number, such as "9".
+ * - `dot` – `{number}` – Dot version number, such as "18".
+ * - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat".
+ */
+var version = {
+  full: '1.5.6',    // all of these placeholder strings will be replaced by grunt's
+  major: 1,    // package task
+  minor: 5,
+  dot: 6,
+  codeName: 'arrow-stringification'
+};
+
+
+function publishExternalAPI(angular) {
+  extend(angular, {
+    'bootstrap': bootstrap,
+    'copy': copy,
+    'extend': extend,
+    'merge': merge,
+    'equals': equals,
+    'element': jqLite,
+    'forEach': forEach,
+    'injector': createInjector,
+    'noop': noop,
+    'bind': bind,
+    'toJson': toJson,
+    'fromJson': fromJson,
+    'identity': identity,
+    'isUndefined': isUndefined,
+    'isDefined': isDefined,
+    'isString': isString,
+    'isFunction': isFunction,
+    'isObject': isObject,
+    'isNumber': isNumber,
+    'isElement': isElement,
+    'isArray': isArray,
+    'version': version,
+    'isDate': isDate,
+    'lowercase': lowercase,
+    'uppercase': uppercase,
+    'callbacks': {counter: 0},
+    'getTestability': getTestability,
+    '$$minErr': minErr,
+    '$$csp': csp,
+    'reloadWithDebugInfo': reloadWithDebugInfo
+  });
+
+  angularModule = setupModuleLoader(window);
+
+  angularModule('ng', ['ngLocale'], ['$provide',
+    function ngModule($provide) {
+      // $$sanitizeUriProvider needs to be before $compileProvider as it is used by it.
+      $provide.provider({
+        $$sanitizeUri: $$SanitizeUriProvider
+      });
+      $provide.provider('$compile', $CompileProvider).
+        directive({
+            a: htmlAnchorDirective,
+            input: inputDirective,
+            textarea: inputDirective,
+            form: formDirective,
+            script: scriptDirective,
+            select: selectDirective,
+            style: styleDirective,
+            option: optionDirective,
+            ngBind: ngBindDirective,
+            ngBindHtml: ngBindHtmlDirective,
+            ngBindTemplate: ngBindTemplateDirective,
+            ngClass: ngClassDirective,
+            ngClassEven: ngClassEvenDirective,
+            ngClassOdd: ngClassOddDirective,
+            ngCloak: ngCloakDirective,
+            ngController: ngControllerDirective,
+            ngForm: ngFormDirective,
+            ngHide: ngHideDirective,
+            ngIf: ngIfDirective,
+            ngInclude: ngIncludeDirective,
+            ngInit: ngInitDirective,
+            ngNonBindable: ngNonBindableDirective,
+            ngPluralize: ngPluralizeDirective,
+            ngRepeat: ngRepeatDirective,
+            ngShow: ngShowDirective,
+            ngStyle: ngStyleDirective,
+            ngSwitch: ngSwitchDirective,
+            ngSwitchWhen: ngSwitchWhenDirective,
+            ngSwitchDefault: ngSwitchDefaultDirective,
+            ngOptions: ngOptionsDirective,
+            ngTransclude: ngTranscludeDirective,
+            ngModel: ngModelDirective,
+            ngList: ngListDirective,
+            ngChange: ngChangeDirective,
+            pattern: patternDirective,
+            ngPattern: patternDirective,
+            required: requiredDirective,
+            ngRequired: requiredDirective,
+            minlength: minlengthDirective,
+            ngMinlength: minlengthDirective,
+            maxlength: maxlengthDirective,
+            ngMaxlength: maxlengthDirective,
+            ngValue: ngValueDirective,
+            ngModelOptions: ngModelOptionsDirective
+        }).
+        directive({
+          ngInclude: ngIncludeFillContentDirective
+        }).
+        directive(ngAttributeAliasDirectives).
+        directive(ngEventDirectives);
+      $provide.provider({
+        $anchorScroll: $AnchorScrollProvider,
+        $animate: $AnimateProvider,
+        $animateCss: $CoreAnimateCssProvider,
+        $$animateJs: $$CoreAnimateJsProvider,
+        $$animateQueue: $$CoreAnimateQueueProvider,
+        $$AnimateRunner: $$AnimateRunnerFactoryProvider,
+        $$animateAsyncRun: $$AnimateAsyncRunFactoryProvider,
+        $browser: $BrowserProvider,
+        $cacheFactory: $CacheFactoryProvider,
+        $controller: $ControllerProvider,
+        $document: $DocumentProvider,
+        $exceptionHandler: $ExceptionHandlerProvider,
+        $filter: $FilterProvider,
+        $$forceReflow: $$ForceReflowProvider,
+        $interpolate: $InterpolateProvider,
+        $interval: $IntervalProvider,
+        $http: $HttpProvider,
+        $httpParamSerializer: $HttpParamSerializerProvider,
+        $httpParamSerializerJQLike: $HttpParamSerializerJQLikeProvider,
+        $httpBackend: $HttpBackendProvider,
+        $xhrFactory: $xhrFactoryProvider,
+        $location: $LocationProvider,
+        $log: $LogProvider,
+        $parse: $ParseProvider,
+        $rootScope: $RootScopeProvider,
+        $q: $QProvider,
+        $$q: $$QProvider,
+        $sce: $SceProvider,
+        $sceDelegate: $SceDelegateProvider,
+        $sniffer: $SnifferProvider,
+        $templateCache: $TemplateCacheProvider,
+        $templateRequest: $TemplateRequestProvider,
+        $$testability: $$TestabilityProvider,
+        $timeout: $TimeoutProvider,
+        $window: $WindowProvider,
+        $$rAF: $$RAFProvider,
+        $$jqLite: $$jqLiteProvider,
+        $$HashMap: $$HashMapProvider,
+        $$cookieReader: $$CookieReaderProvider
+      });
+    }
+  ]);
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *     Any commits to this file should be reviewed with security in mind.  *
+ *   Changes to this file can potentially create security vulnerabilities. *
+ *          An approval from 2 Core members with history of modifying      *
+ *                         this file is required.                          *
+ *                                                                         *
+ *  Does the change somehow allow for arbitrary javascript to be executed? *
+ *    Or allows for someone to change the prototype of built-in objects?   *
+ *     Or gives undesired access to variables likes document or window?    *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/* global JQLitePrototype: true,
+  addEventListenerFn: true,
+  removeEventListenerFn: true,
+  BOOLEAN_ATTR: true,
+  ALIASED_ATTR: true,
+*/
+
+//////////////////////////////////
+//JQLite
+//////////////////////////////////
+
+/**
+ * @ngdoc function
+ * @name angular.element
+ * @module ng
+ * @kind function
+ *
+ * @description
+ * Wraps a raw DOM element or HTML string as a [jQuery](http://jquery.com) element.
+ *
+ * If jQuery is available, `angular.element` is an alias for the
+ * [jQuery](http://api.jquery.com/jQuery/) function. If jQuery is not available, `angular.element`
+ * delegates to Angular's built-in subset of jQuery, called "jQuery lite" or **jqLite**.
+ *
+ * jqLite is a tiny, API-compatible subset of jQuery that allows
+ * Angular to manipulate the DOM in a cross-browser compatible way. jqLite implements only the most
+ * commonly needed functionality with the goal of having a very small footprint.
+ *
+ * To use `jQuery`, simply ensure it is loaded before the `angular.js` file. You can also use the
+ * {@link ngJq `ngJq`} directive to specify that jqlite should be used over jQuery, or to use a
+ * specific version of jQuery if multiple versions exist on the page.
+ *
+ * <div class="alert alert-info">**Note:** All element references in Angular are always wrapped with jQuery or
+ * jqLite (such as the element argument in a directive's compile / link function). They are never raw DOM references.</div>
+ *
+ * <div class="alert alert-warning">**Note:** Keep in mind that this function will not find elements
+ * by tag name / CSS selector. For lookups by tag name, try instead `angular.element(document).find(...)`
+ * or `$document.find()`, or use the standard DOM APIs, e.g. `document.querySelectorAll()`.</div>
+ *
+ * ## Angular's jqLite
+ * jqLite provides only the following jQuery methods:
+ *
+ * - [`addClass()`](http://api.jquery.com/addClass/)
+ * - [`after()`](http://api.jquery.com/after/)
+ * - [`append()`](http://api.jquery.com/append/)
+ * - [`attr()`](http://api.jquery.com/attr/) - Does not support functions as parameters
+ * - [`bind()`](http://api.jquery.com/bind/) - Does not support namespaces, selectors or eventData
+ * - [`children()`](http://api.jquery.com/children/) - Does not support selectors
+ * - [`clone()`](http://api.jquery.com/clone/)
+ * - [`contents()`](http://api.jquery.com/contents/)
+ * - [`css()`](http://api.jquery.com/css/) - Only retrieves inline-styles, does not call `getComputedStyle()`.
+ *   As a setter, does not convert numbers to strings or append 'px', and also does not have automatic property prefixing.
+ * - [`data()`](http://api.jquery.com/data/)
+ * - [`detach()`](http://api.jquery.com/detach/)
+ * - [`empty()`](http://api.jquery.com/empty/)
+ * - [`eq()`](http://api.jquery.com/eq/)
+ * - [`find()`](http://api.jquery.com/find/) - Limited to lookups by tag name
+ * - [`hasClass()`](http://api.jquery.com/hasClass/)
+ * - [`html()`](http://api.jquery.com/html/)
+ * - [`next()`](http://api.jquery.com/next/) - Does not support selectors
+ * - [`on()`](http://api.jquery.com/on/) - Does not support namespaces, selectors or eventData
+ * - [`off()`](http://api.jquery.com/off/) - Does not support namespaces, selectors or event object as parameter
+ * - [`one()`](http://api.jquery.com/one/) - Does not support namespaces or selectors
+ * - [`parent()`](http://api.jquery.com/parent/) - Does not support selectors
+ * - [`prepend()`](http://api.jquery.com/prepend/)
+ * - [`prop()`](http://api.jquery.com/prop/)
+ * - [`ready()`](http://api.jquery.com/ready/)
+ * - [`remove()`](http://api.jquery.com/remove/)
+ * - [`removeAttr()`](http://api.jquery.com/removeAttr/)
+ * - [`removeClass()`](http://api.jquery.com/removeClass/)
+ * - [`removeData()`](http://api.jquery.com/removeData/)
+ * - [`

<TRUNCATED>


[31/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-scenario.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-scenario.js b/rocketmq-console/src/main/resources/static/vendor/angular/angular-scenario.js
new file mode 100644
index 0000000..dab7290
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-scenario.js
@@ -0,0 +1,43097 @@
+/*!
+ * jQuery JavaScript Library v2.2.3
+ * http://jquery.com/
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2016-04-05T19:26Z
+ */
+
+(function( global, factory ) {'use strict';
+
+	if ( typeof module === "object" && typeof module.exports === "object" ) {
+		// For CommonJS and CommonJS-like environments where a proper `window`
+		// is present, execute the factory and get jQuery.
+		// For environments that do not have a `window` with a `document`
+		// (such as Node.js), expose a factory as module.exports.
+		// This accentuates the need for the creation of a real `window`.
+		// e.g. var jQuery = require("jquery")(window);
+		// See ticket #14549 for more info.
+		module.exports = global.document ?
+			factory( global, true ) :
+			function( w ) {
+				if ( !w.document ) {
+					throw new Error( "jQuery requires a window with a document" );
+				}
+				return factory( w );
+			};
+	} else {
+		factory( global );
+	}
+
+// Pass this if window is not defined yet
+}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
+
+// Support: Firefox 18+
+// Can't be in strict mode, several libs including ASP.NET trace
+// the stack via arguments.caller.callee and Firefox dies if
+// you try to trace through "use strict" call chains. (#13335)
+//
+
+var arr = [];
+
+var document = window.document;
+
+var slice = arr.slice;
+
+var concat = arr.concat;
+
+var push = arr.push;
+
+var indexOf = arr.indexOf;
+
+var class2type = {};
+
+var toString = class2type.toString;
+
+var hasOwn = class2type.hasOwnProperty;
+
+var support = {};
+
+
+
+var
+	version = "2.2.3",
+
+	// Define a local copy of jQuery
+	jQuery = function( selector, context ) {
+
+		// The jQuery object is actually just the init constructor 'enhanced'
+		// Need init if jQuery is called (just allow error to be thrown if not included)
+		return new jQuery.fn.init( selector, context );
+	},
+
+	// Support: Android<4.1
+	// Make sure we trim BOM and NBSP
+	rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
+
+	// Matches dashed string for camelizing
+	rmsPrefix = /^-ms-/,
+	rdashAlpha = /-([\da-z])/gi,
+
+	// Used by jQuery.camelCase as callback to replace()
+	fcamelCase = function( all, letter ) {
+		return letter.toUpperCase();
+	};
+
+jQuery.fn = jQuery.prototype = {
+
+	// The current version of jQuery being used
+	jquery: version,
+
+	constructor: jQuery,
+
+	// Start with an empty selector
+	selector: "",
+
+	// The default length of a jQuery object is 0
+	length: 0,
+
+	toArray: function() {
+		return slice.call( this );
+	},
+
+	// Get the Nth element in the matched element set OR
+	// Get the whole matched element set as a clean array
+	get: function( num ) {
+		return num != null ?
+
+			// Return just the one element from the set
+			( num < 0 ? this[ num + this.length ] : this[ num ] ) :
+
+			// Return all the elements in a clean array
+			slice.call( this );
+	},
+
+	// Take an array of elements and push it onto the stack
+	// (returning the new matched element set)
+	pushStack: function( elems ) {
+
+		// Build a new jQuery matched element set
+		var ret = jQuery.merge( this.constructor(), elems );
+
+		// Add the old object onto the stack (as a reference)
+		ret.prevObject = this;
+		ret.context = this.context;
+
+		// Return the newly-formed element set
+		return ret;
+	},
+
+	// Execute a callback for every element in the matched set.
+	each: function( callback ) {
+		return jQuery.each( this, callback );
+	},
+
+	map: function( callback ) {
+		return this.pushStack( jQuery.map( this, function( elem, i ) {
+			return callback.call( elem, i, elem );
+		} ) );
+	},
+
+	slice: function() {
+		return this.pushStack( slice.apply( this, arguments ) );
+	},
+
+	first: function() {
+		return this.eq( 0 );
+	},
+
+	last: function() {
+		return this.eq( -1 );
+	},
+
+	eq: function( i ) {
+		var len = this.length,
+			j = +i + ( i < 0 ? len : 0 );
+		return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
+	},
+
+	end: function() {
+		return this.prevObject || this.constructor();
+	},
+
+	// For internal use only.
+	// Behaves like an Array's method, not like a jQuery method.
+	push: push,
+	sort: arr.sort,
+	splice: arr.splice
+};
+
+jQuery.extend = jQuery.fn.extend = function() {
+	var options, name, src, copy, copyIsArray, clone,
+		target = arguments[ 0 ] || {},
+		i = 1,
+		length = arguments.length,
+		deep = false;
+
+	// Handle a deep copy situation
+	if ( typeof target === "boolean" ) {
+		deep = target;
+
+		// Skip the boolean and the target
+		target = arguments[ i ] || {};
+		i++;
+	}
+
+	// Handle case when target is a string or something (possible in deep copy)
+	if ( typeof target !== "object" && !jQuery.isFunction( target ) ) {
+		target = {};
+	}
+
+	// Extend jQuery itself if only one argument is passed
+	if ( i === length ) {
+		target = this;
+		i--;
+	}
+
+	for ( ; i < length; i++ ) {
+
+		// Only deal with non-null/undefined values
+		if ( ( options = arguments[ i ] ) != null ) {
+
+			// Extend the base object
+			for ( name in options ) {
+				src = target[ name ];
+				copy = options[ name ];
+
+				// Prevent never-ending loop
+				if ( target === copy ) {
+					continue;
+				}
+
+				// Recurse if we're merging plain objects or arrays
+				if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
+					( copyIsArray = jQuery.isArray( copy ) ) ) ) {
+
+					if ( copyIsArray ) {
+						copyIsArray = false;
+						clone = src && jQuery.isArray( src ) ? src : [];
+
+					} else {
+						clone = src && jQuery.isPlainObject( src ) ? src : {};
+					}
+
+					// Never move original objects, clone them
+					target[ name ] = jQuery.extend( deep, clone, copy );
+
+				// Don't bring in undefined values
+				} else if ( copy !== undefined ) {
+					target[ name ] = copy;
+				}
+			}
+		}
+	}
+
+	// Return the modified object
+	return target;
+};
+
+jQuery.extend( {
+
+	// Unique for each copy of jQuery on the page
+	expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
+
+	// Assume jQuery is ready without the ready module
+	isReady: true,
+
+	error: function( msg ) {
+		throw new Error( msg );
+	},
+
+	noop: function() {},
+
+	isFunction: function( obj ) {
+		return jQuery.type( obj ) === "function";
+	},
+
+	isArray: Array.isArray,
+
+	isWindow: function( obj ) {
+		return obj != null && obj === obj.window;
+	},
+
+	isNumeric: function( obj ) {
+
+		// parseFloat NaNs numeric-cast false positives (null|true|false|"")
+		// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
+		// subtraction forces infinities to NaN
+		// adding 1 corrects loss of precision from parseFloat (#15100)
+		var realStringObj = obj && obj.toString();
+		return !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0;
+	},
+
+	isPlainObject: function( obj ) {
+		var key;
+
+		// Not plain objects:
+		// - Any object or value whose internal [[Class]] property is not "[object Object]"
+		// - DOM nodes
+		// - window
+		if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
+			return false;
+		}
+
+		// Not own constructor property must be Object
+		if ( obj.constructor &&
+				!hasOwn.call( obj, "constructor" ) &&
+				!hasOwn.call( obj.constructor.prototype || {}, "isPrototypeOf" ) ) {
+			return false;
+		}
+
+		// Own properties are enumerated firstly, so to speed up,
+		// if last one is own, then all properties are own
+		for ( key in obj ) {}
+
+		return key === undefined || hasOwn.call( obj, key );
+	},
+
+	isEmptyObject: function( obj ) {
+		var name;
+		for ( name in obj ) {
+			return false;
+		}
+		return true;
+	},
+
+	type: function( obj ) {
+		if ( obj == null ) {
+			return obj + "";
+		}
+
+		// Support: Android<4.0, iOS<6 (functionish RegExp)
+		return typeof obj === "object" || typeof obj === "function" ?
+			class2type[ toString.call( obj ) ] || "object" :
+			typeof obj;
+	},
+
+	// Evaluates a script in a global context
+	globalEval: function( code ) {
+		var script,
+			indirect = eval;
+
+		code = jQuery.trim( code );
+
+		if ( code ) {
+
+			// If the code includes a valid, prologue position
+			// strict mode pragma, execute code by injecting a
+			// script tag into the document.
+			if ( code.indexOf( "use strict" ) === 1 ) {
+				script = document.createElement( "script" );
+				script.text = code;
+				document.head.appendChild( script ).parentNode.removeChild( script );
+			} else {
+
+				// Otherwise, avoid the DOM node creation, insertion
+				// and removal by using an indirect global eval
+
+				indirect( code );
+			}
+		}
+	},
+
+	// Convert dashed to camelCase; used by the css and data modules
+	// Support: IE9-11+
+	// Microsoft forgot to hump their vendor prefix (#9572)
+	camelCase: function( string ) {
+		return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+	},
+
+	nodeName: function( elem, name ) {
+		return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+	},
+
+	each: function( obj, callback ) {
+		var length, i = 0;
+
+		if ( isArrayLike( obj ) ) {
+			length = obj.length;
+			for ( ; i < length; i++ ) {
+				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+					break;
+				}
+			}
+		} else {
+			for ( i in obj ) {
+				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+					break;
+				}
+			}
+		}
+
+		return obj;
+	},
+
+	// Support: Android<4.1
+	trim: function( text ) {
+		return text == null ?
+			"" :
+			( text + "" ).replace( rtrim, "" );
+	},
+
+	// results is for internal usage only
+	makeArray: function( arr, results ) {
+		var ret = results || [];
+
+		if ( arr != null ) {
+			if ( isArrayLike( Object( arr ) ) ) {
+				jQuery.merge( ret,
+					typeof arr === "string" ?
+					[ arr ] : arr
+				);
+			} else {
+				push.call( ret, arr );
+			}
+		}
+
+		return ret;
+	},
+
+	inArray: function( elem, arr, i ) {
+		return arr == null ? -1 : indexOf.call( arr, elem, i );
+	},
+
+	merge: function( first, second ) {
+		var len = +second.length,
+			j = 0,
+			i = first.length;
+
+		for ( ; j < len; j++ ) {
+			first[ i++ ] = second[ j ];
+		}
+
+		first.length = i;
+
+		return first;
+	},
+
+	grep: function( elems, callback, invert ) {
+		var callbackInverse,
+			matches = [],
+			i = 0,
+			length = elems.length,
+			callbackExpect = !invert;
+
+		// Go through the array, only saving the items
+		// that pass the validator function
+		for ( ; i < length; i++ ) {
+			callbackInverse = !callback( elems[ i ], i );
+			if ( callbackInverse !== callbackExpect ) {
+				matches.push( elems[ i ] );
+			}
+		}
+
+		return matches;
+	},
+
+	// arg is for internal usage only
+	map: function( elems, callback, arg ) {
+		var length, value,
+			i = 0,
+			ret = [];
+
+		// Go through the array, translating each of the items to their new values
+		if ( isArrayLike( elems ) ) {
+			length = elems.length;
+			for ( ; i < length; i++ ) {
+				value = callback( elems[ i ], i, arg );
+
+				if ( value != null ) {
+					ret.push( value );
+				}
+			}
+
+		// Go through every key on the object,
+		} else {
+			for ( i in elems ) {
+				value = callback( elems[ i ], i, arg );
+
+				if ( value != null ) {
+					ret.push( value );
+				}
+			}
+		}
+
+		// Flatten any nested arrays
+		return concat.apply( [], ret );
+	},
+
+	// A global GUID counter for objects
+	guid: 1,
+
+	// Bind a function to a context, optionally partially applying any
+	// arguments.
+	proxy: function( fn, context ) {
+		var tmp, args, proxy;
+
+		if ( typeof context === "string" ) {
+			tmp = fn[ context ];
+			context = fn;
+			fn = tmp;
+		}
+
+		// Quick check to determine if target is callable, in the spec
+		// this throws a TypeError, but we will just return undefined.
+		if ( !jQuery.isFunction( fn ) ) {
+			return undefined;
+		}
+
+		// Simulated bind
+		args = slice.call( arguments, 2 );
+		proxy = function() {
+			return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
+		};
+
+		// Set the guid of unique handler to the same of original handler, so it can be removed
+		proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+		return proxy;
+	},
+
+	now: Date.now,
+
+	// jQuery.support is not used in Core but other projects attach their
+	// properties to it so it needs to exist.
+	support: support
+} );
+
+// JSHint would error on this code due to the Symbol not being defined in ES5.
+// Defining this global in .jshintrc would create a danger of using the global
+// unguarded in another place, it seems safer to just disable JSHint for these
+// three lines.
+/* jshint ignore: start */
+if ( typeof Symbol === "function" ) {
+	jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
+}
+/* jshint ignore: end */
+
+// Populate the class2type map
+jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
+function( i, name ) {
+	class2type[ "[object " + name + "]" ] = name.toLowerCase();
+} );
+
+function isArrayLike( obj ) {
+
+	// Support: iOS 8.2 (not reproducible in simulator)
+	// `in` check used to prevent JIT error (gh-2145)
+	// hasOwn isn't used here due to false negatives
+	// regarding Nodelist length in IE
+	var length = !!obj && "length" in obj && obj.length,
+		type = jQuery.type( obj );
+
+	if ( type === "function" || jQuery.isWindow( obj ) ) {
+		return false;
+	}
+
+	return type === "array" || length === 0 ||
+		typeof length === "number" && length > 0 && ( length - 1 ) in obj;
+}
+var Sizzle =
+/*!
+ * Sizzle CSS Selector Engine v2.2.1
+ * http://sizzlejs.com/
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2015-10-17
+ */
+(function( window ) {
+
+var i,
+	support,
+	Expr,
+	getText,
+	isXML,
+	tokenize,
+	compile,
+	select,
+	outermostContext,
+	sortInput,
+	hasDuplicate,
+
+	// Local document vars
+	setDocument,
+	document,
+	docElem,
+	documentIsHTML,
+	rbuggyQSA,
+	rbuggyMatches,
+	matches,
+	contains,
+
+	// Instance-specific data
+	expando = "sizzle" + 1 * new Date(),
+	preferredDoc = window.document,
+	dirruns = 0,
+	done = 0,
+	classCache = createCache(),
+	tokenCache = createCache(),
+	compilerCache = createCache(),
+	sortOrder = function( a, b ) {
+		if ( a === b ) {
+			hasDuplicate = true;
+		}
+		return 0;
+	},
+
+	// General-purpose constants
+	MAX_NEGATIVE = 1 << 31,
+
+	// Instance methods
+	hasOwn = ({}).hasOwnProperty,
+	arr = [],
+	pop = arr.pop,
+	push_native = arr.push,
+	push = arr.push,
+	slice = arr.slice,
+	// Use a stripped-down indexOf as it's faster than native
+	// http://jsperf.com/thor-indexof-vs-for/5
+	indexOf = function( list, elem ) {
+		var i = 0,
+			len = list.length;
+		for ( ; i < len; i++ ) {
+			if ( list[i] === elem ) {
+				return i;
+			}
+		}
+		return -1;
+	},
+
+	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+
+	// Regular expressions
+
+	// http://www.w3.org/TR/css3-selectors/#whitespace
+	whitespace = "[\\x20\\t\\r\\n\\f]",
+
+	// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+	identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
+
+	// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
+	attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
+		// Operator (capture 2)
+		"*([*^$|!~]?=)" + whitespace +
+		// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
+		"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
+		"*\\]",
+
+	pseudos = ":(" + identifier + ")(?:\\((" +
+		// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
+		// 1. quoted (capture 3; capture 4 or capture 5)
+		"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
+		// 2. simple (capture 6)
+		"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
+		// 3. anything else (capture 2)
+		".*" +
+		")\\)|)",
+
+	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+	rwhitespace = new RegExp( whitespace + "+", "g" ),
+	rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+	rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
+
+	rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
+
+	rpseudo = new RegExp( pseudos ),
+	ridentifier = new RegExp( "^" + identifier + "$" ),
+
+	matchExpr = {
+		"ID": new RegExp( "^#(" + identifier + ")" ),
+		"CLASS": new RegExp( "^\\.(" + identifier + ")" ),
+		"TAG": new RegExp( "^(" + identifier + "|[*])" ),
+		"ATTR": new RegExp( "^" + attributes ),
+		"PSEUDO": new RegExp( "^" + pseudos ),
+		"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
+			"*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+			"*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+		"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+		// For use in libraries implementing .is()
+		// We use this for POS matching in `select`
+		"needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
+			whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+	},
+
+	rinputs = /^(?:input|select|textarea|button)$/i,
+	rheader = /^h\d$/i,
+
+	rnative = /^[^{]+\{\s*\[native \w/,
+
+	// Easily-parseable/retrievable ID or TAG or CLASS selectors
+	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+	rsibling = /[+~]/,
+	rescape = /'|\\/g,
+
+	// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+	runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
+	funescape = function( _, escaped, escapedWhitespace ) {
+		var high = "0x" + escaped - 0x10000;
+		// NaN means non-codepoint
+		// Support: Firefox<24
+		// Workaround erroneous numeric interpretation of +"0x"
+		return high !== high || escapedWhitespace ?
+			escaped :
+			high < 0 ?
+				// BMP codepoint
+				String.fromCharCode( high + 0x10000 ) :
+				// Supplemental Plane codepoint (surrogate pair)
+				String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+	},
+
+	// Used for iframes
+	// See setDocument()
+	// Removing the function wrapper causes a "Permission Denied"
+	// error in IE
+	unloadHandler = function() {
+		setDocument();
+	};
+
+// Optimize for push.apply( _, NodeList )
+try {
+	push.apply(
+		(arr = slice.call( preferredDoc.childNodes )),
+		preferredDoc.childNodes
+	);
+	// Support: Android<4.0
+	// Detect silently failing push.apply
+	arr[ preferredDoc.childNodes.length ].nodeType;
+} catch ( e ) {
+	push = { apply: arr.length ?
+
+		// Leverage slice if possible
+		function( target, els ) {
+			push_native.apply( target, slice.call(els) );
+		} :
+
+		// Support: IE<9
+		// Otherwise append directly
+		function( target, els ) {
+			var j = target.length,
+				i = 0;
+			// Can't trust NodeList.length
+			while ( (target[j++] = els[i++]) ) {}
+			target.length = j - 1;
+		}
+	};
+}
+
+function Sizzle( selector, context, results, seed ) {
+	var m, i, elem, nid, nidselect, match, groups, newSelector,
+		newContext = context && context.ownerDocument,
+
+		// nodeType defaults to 9, since context defaults to document
+		nodeType = context ? context.nodeType : 9;
+
+	results = results || [];
+
+	// Return early from calls with invalid selector or context
+	if ( typeof selector !== "string" || !selector ||
+		nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
+
+		return results;
+	}
+
+	// Try to shortcut find operations (as opposed to filters) in HTML documents
+	if ( !seed ) {
+
+		if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
+			setDocument( context );
+		}
+		context = context || document;
+
+		if ( documentIsHTML ) {
+
+			// If the selector is sufficiently simple, try using a "get*By*" DOM method
+			// (excepting DocumentFragment context, where the methods don't exist)
+			if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
+
+				// ID selector
+				if ( (m = match[1]) ) {
+
+					// Document context
+					if ( nodeType === 9 ) {
+						if ( (elem = context.getElementById( m )) ) {
+
+							// Support: IE, Opera, Webkit
+							// TODO: identify versions
+							// getElementById can match elements by name instead of ID
+							if ( elem.id === m ) {
+								results.push( elem );
+								return results;
+							}
+						} else {
+							return results;
+						}
+
+					// Element context
+					} else {
+
+						// Support: IE, Opera, Webkit
+						// TODO: identify versions
+						// getElementById can match elements by name instead of ID
+						if ( newContext && (elem = newContext.getElementById( m )) &&
+							contains( context, elem ) &&
+							elem.id === m ) {
+
+							results.push( elem );
+							return results;
+						}
+					}
+
+				// Type selector
+				} else if ( match[2] ) {
+					push.apply( results, context.getElementsByTagName( selector ) );
+					return results;
+
+				// Class selector
+				} else if ( (m = match[3]) && support.getElementsByClassName &&
+					context.getElementsByClassName ) {
+
+					push.apply( results, context.getElementsByClassName( m ) );
+					return results;
+				}
+			}
+
+			// Take advantage of querySelectorAll
+			if ( support.qsa &&
+				!compilerCache[ selector + " " ] &&
+				(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
+
+				if ( nodeType !== 1 ) {
+					newContext = context;
+					newSelector = selector;
+
+				// qSA looks outside Element context, which is not what we want
+				// Thanks to Andrew Dupont for this workaround technique
+				// Support: IE <=8
+				// Exclude object elements
+				} else if ( context.nodeName.toLowerCase() !== "object" ) {
+
+					// Capture the context ID, setting it first if necessary
+					if ( (nid = context.getAttribute( "id" )) ) {
+						nid = nid.replace( rescape, "\\$&" );
+					} else {
+						context.setAttribute( "id", (nid = expando) );
+					}
+
+					// Prefix every selector in the list
+					groups = tokenize( selector );
+					i = groups.length;
+					nidselect = ridentifier.test( nid ) ? "#" + nid : "[id='" + nid + "']";
+					while ( i-- ) {
+						groups[i] = nidselect + " " + toSelector( groups[i] );
+					}
+					newSelector = groups.join( "," );
+
+					// Expand context for sibling selectors
+					newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
+						context;
+				}
+
+				if ( newSelector ) {
+					try {
+						push.apply( results,
+							newContext.querySelectorAll( newSelector )
+						);
+						return results;
+					} catch ( qsaError ) {
+					} finally {
+						if ( nid === expando ) {
+							context.removeAttribute( "id" );
+						}
+					}
+				}
+			}
+		}
+	}
+
+	// All others
+	return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {function(string, object)} Returns the Object data after storing it on itself with
+ *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ *	deleting the oldest entry
+ */
+function createCache() {
+	var keys = [];
+
+	function cache( key, value ) {
+		// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+		if ( keys.push( key + " " ) > Expr.cacheLength ) {
+			// Only keep the most recent entries
+			delete cache[ keys.shift() ];
+		}
+		return (cache[ key + " " ] = value);
+	}
+	return cache;
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+	fn[ expando ] = true;
+	return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created div and expects a boolean result
+ */
+function assert( fn ) {
+	var div = document.createElement("div");
+
+	try {
+		return !!fn( div );
+	} catch (e) {
+		return false;
+	} finally {
+		// Remove from its parent by default
+		if ( div.parentNode ) {
+			div.parentNode.removeChild( div );
+		}
+		// release memory in IE
+		div = null;
+	}
+}
+
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied
+ */
+function addHandle( attrs, handler ) {
+	var arr = attrs.split("|"),
+		i = arr.length;
+
+	while ( i-- ) {
+		Expr.attrHandle[ arr[i] ] = handler;
+	}
+}
+
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
+ */
+function siblingCheck( a, b ) {
+	var cur = b && a,
+		diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+			( ~b.sourceIndex || MAX_NEGATIVE ) -
+			( ~a.sourceIndex || MAX_NEGATIVE );
+
+	// Use IE sourceIndex if available on both nodes
+	if ( diff ) {
+		return diff;
+	}
+
+	// Check if b follows a
+	if ( cur ) {
+		while ( (cur = cur.nextSibling) ) {
+			if ( cur === b ) {
+				return -1;
+			}
+		}
+	}
+
+	return a ? 1 : -1;
+}
+
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+	return function( elem ) {
+		var name = elem.nodeName.toLowerCase();
+		return name === "input" && elem.type === type;
+	};
+}
+
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+	return function( elem ) {
+		var name = elem.nodeName.toLowerCase();
+		return (name === "input" || name === "button") && elem.type === type;
+	};
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+	return markFunction(function( argument ) {
+		argument = +argument;
+		return markFunction(function( seed, matches ) {
+			var j,
+				matchIndexes = fn( [], seed.length, argument ),
+				i = matchIndexes.length;
+
+			// Match elements found at the specified indexes
+			while ( i-- ) {
+				if ( seed[ (j = matchIndexes[i]) ] ) {
+					seed[j] = !(matches[j] = seed[j]);
+				}
+			}
+		});
+	});
+}
+
+/**
+ * Checks a node for validity as a Sizzle context
+ * @param {Element|Object=} context
+ * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
+ */
+function testContext( context ) {
+	return context && typeof context.getElementsByTagName !== "undefined" && context;
+}
+
+// Expose support vars for convenience
+support = Sizzle.support = {};
+
+/**
+ * Detects XML nodes
+ * @param {Element|Object} elem An element or a document
+ * @returns {Boolean} True iff elem is a non-HTML XML node
+ */
+isXML = Sizzle.isXML = function( elem ) {
+	// documentElement is verified for cases where it doesn't yet exist
+	// (such as loading iframes in IE - #4833)
+	var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+	return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+/**
+ * Sets document-related variables once based on the current document
+ * @param {Element|Object} [doc] An element or document object to use to set the document
+ * @returns {Object} Returns the current document
+ */
+setDocument = Sizzle.setDocument = function( node ) {
+	var hasCompare, parent,
+		doc = node ? node.ownerDocument || node : preferredDoc;
+
+	// Return early if doc is invalid or already selected
+	if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
+		return document;
+	}
+
+	// Update global variables
+	document = doc;
+	docElem = document.documentElement;
+	documentIsHTML = !isXML( document );
+
+	// Support: IE 9-11, Edge
+	// Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
+	if ( (parent = document.defaultView) && parent.top !== parent ) {
+		// Support: IE 11
+		if ( parent.addEventListener ) {
+			parent.addEventListener( "unload", unloadHandler, false );
+
+		// Support: IE 9 - 10 only
+		} else if ( parent.attachEvent ) {
+			parent.attachEvent( "onunload", unloadHandler );
+		}
+	}
+
+	/* Attributes
+	---------------------------------------------------------------------- */
+
+	// Support: IE<8
+	// Verify that getAttribute really returns attributes and not properties
+	// (excepting IE8 booleans)
+	support.attributes = assert(function( div ) {
+		div.className = "i";
+		return !div.getAttribute("className");
+	});
+
+	/* getElement(s)By*
+	---------------------------------------------------------------------- */
+
+	// Check if getElementsByTagName("*") returns only elements
+	support.getElementsByTagName = assert(function( div ) {
+		div.appendChild( document.createComment("") );
+		return !div.getElementsByTagName("*").length;
+	});
+
+	// Support: IE<9
+	support.getElementsByClassName = rnative.test( document.getElementsByClassName );
+
+	// Support: IE<10
+	// Check if getElementById returns elements by name
+	// The broken getElementById methods don't pick up programatically-set names,
+	// so use a roundabout getElementsByName test
+	support.getById = assert(function( div ) {
+		docElem.appendChild( div ).id = expando;
+		return !document.getElementsByName || !document.getElementsByName( expando ).length;
+	});
+
+	// ID find and filter
+	if ( support.getById ) {
+		Expr.find["ID"] = function( id, context ) {
+			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
+				var m = context.getElementById( id );
+				return m ? [ m ] : [];
+			}
+		};
+		Expr.filter["ID"] = function( id ) {
+			var attrId = id.replace( runescape, funescape );
+			return function( elem ) {
+				return elem.getAttribute("id") === attrId;
+			};
+		};
+	} else {
+		// Support: IE6/7
+		// getElementById is not reliable as a find shortcut
+		delete Expr.find["ID"];
+
+		Expr.filter["ID"] =  function( id ) {
+			var attrId = id.replace( runescape, funescape );
+			return function( elem ) {
+				var node = typeof elem.getAttributeNode !== "undefined" &&
+					elem.getAttributeNode("id");
+				return node && node.value === attrId;
+			};
+		};
+	}
+
+	// Tag
+	Expr.find["TAG"] = support.getElementsByTagName ?
+		function( tag, context ) {
+			if ( typeof context.getElementsByTagName !== "undefined" ) {
+				return context.getElementsByTagName( tag );
+
+			// DocumentFragment nodes don't have gEBTN
+			} else if ( support.qsa ) {
+				return context.querySelectorAll( tag );
+			}
+		} :
+
+		function( tag, context ) {
+			var elem,
+				tmp = [],
+				i = 0,
+				// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
+				results = context.getElementsByTagName( tag );
+
+			// Filter out possible comments
+			if ( tag === "*" ) {
+				while ( (elem = results[i++]) ) {
+					if ( elem.nodeType === 1 ) {
+						tmp.push( elem );
+					}
+				}
+
+				return tmp;
+			}
+			return results;
+		};
+
+	// Class
+	Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
+		if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
+			return context.getElementsByClassName( className );
+		}
+	};
+
+	/* QSA/matchesSelector
+	---------------------------------------------------------------------- */
+
+	// QSA and matchesSelector support
+
+	// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+	rbuggyMatches = [];
+
+	// qSa(:focus) reports false when true (Chrome 21)
+	// We allow this because of a bug in IE8/9 that throws an error
+	// whenever `document.activeElement` is accessed on an iframe
+	// So, we allow :focus to pass through QSA all the time to avoid the IE error
+	// See http://bugs.jquery.com/ticket/13378
+	rbuggyQSA = [];
+
+	if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
+		// Build QSA regex
+		// Regex strategy adopted from Diego Perini
+		assert(function( div ) {
+			// Select is set to empty string on purpose
+			// This is to test IE's treatment of not explicitly
+			// setting a boolean content attribute,
+			// since its presence should be enough
+			// http://bugs.jquery.com/ticket/12359
+			docElem.appendChild( div ).innerHTML = "<a id='" + expando + "'></a>" +
+				"<select id='" + expando + "-\r\\' msallowcapture=''>" +
+				"<option selected=''></option></select>";
+
+			// Support: IE8, Opera 11-12.16
+			// Nothing should be selected when empty strings follow ^= or $= or *=
+			// The test attribute must be unknown in Opera but "safe" for WinRT
+			// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
+			if ( div.querySelectorAll("[msallowcapture^='']").length ) {
+				rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
+			}
+
+			// Support: IE8
+			// Boolean attributes and "value" are not treated correctly
+			if ( !div.querySelectorAll("[selected]").length ) {
+				rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
+			}
+
+			// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
+			if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
+				rbuggyQSA.push("~=");
+			}
+
+			// Webkit/Opera - :checked should return selected option elements
+			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+			// IE8 throws error here and will not see later tests
+			if ( !div.querySelectorAll(":checked").length ) {
+				rbuggyQSA.push(":checked");
+			}
+
+			// Support: Safari 8+, iOS 8+
+			// https://bugs.webkit.org/show_bug.cgi?id=136851
+			// In-page `selector#id sibing-combinator selector` fails
+			if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) {
+				rbuggyQSA.push(".#.+[+~]");
+			}
+		});
+
+		assert(function( div ) {
+			// Support: Windows 8 Native Apps
+			// The type and name attributes are restricted during .innerHTML assignment
+			var input = document.createElement("input");
+			input.setAttribute( "type", "hidden" );
+			div.appendChild( input ).setAttribute( "name", "D" );
+
+			// Support: IE8
+			// Enforce case-sensitivity of name attribute
+			if ( div.querySelectorAll("[name=d]").length ) {
+				rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
+			}
+
+			// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+			// IE8 throws error here and will not see later tests
+			if ( !div.querySelectorAll(":enabled").length ) {
+				rbuggyQSA.push( ":enabled", ":disabled" );
+			}
+
+			// Opera 10-11 does not throw on post-comma invalid pseudos
+			div.querySelectorAll("*,:x");
+			rbuggyQSA.push(",.*:");
+		});
+	}
+
+	if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
+		docElem.webkitMatchesSelector ||
+		docElem.mozMatchesSelector ||
+		docElem.oMatchesSelector ||
+		docElem.msMatchesSelector) )) ) {
+
+		assert(function( div ) {
+			// Check to see if it's possible to do matchesSelector
+			// on a disconnected node (IE 9)
+			support.disconnectedMatch = matches.call( div, "div" );
+
+			// This should fail with an exception
+			// Gecko does not error, returns false instead
+			matches.call( div, "[s!='']:x" );
+			rbuggyMatches.push( "!=", pseudos );
+		});
+	}
+
+	rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
+	rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
+
+	/* Contains
+	---------------------------------------------------------------------- */
+	hasCompare = rnative.test( docElem.compareDocumentPosition );
+
+	// Element contains another
+	// Purposefully self-exclusive
+	// As in, an element does not contain itself
+	contains = hasCompare || rnative.test( docElem.contains ) ?
+		function( a, b ) {
+			var adown = a.nodeType === 9 ? a.documentElement : a,
+				bup = b && b.parentNode;
+			return a === bup || !!( bup && bup.nodeType === 1 && (
+				adown.contains ?
+					adown.contains( bup ) :
+					a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
+			));
+		} :
+		function( a, b ) {
+			if ( b ) {
+				while ( (b = b.parentNode) ) {
+					if ( b === a ) {
+						return true;
+					}
+				}
+			}
+			return false;
+		};
+
+	/* Sorting
+	---------------------------------------------------------------------- */
+
+	// Document order sorting
+	sortOrder = hasCompare ?
+	function( a, b ) {
+
+		// Flag for duplicate removal
+		if ( a === b ) {
+			hasDuplicate = true;
+			return 0;
+		}
+
+		// Sort on method existence if only one input has compareDocumentPosition
+		var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
+		if ( compare ) {
+			return compare;
+		}
+
+		// Calculate position if both inputs belong to the same document
+		compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
+			a.compareDocumentPosition( b ) :
+
+			// Otherwise we know they are disconnected
+			1;
+
+		// Disconnected nodes
+		if ( compare & 1 ||
+			(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
+
+			// Choose the first element that is related to our preferred document
+			if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
+				return -1;
+			}
+			if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
+				return 1;
+			}
+
+			// Maintain original order
+			return sortInput ?
+				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+				0;
+		}
+
+		return compare & 4 ? -1 : 1;
+	} :
+	function( a, b ) {
+		// Exit early if the nodes are identical
+		if ( a === b ) {
+			hasDuplicate = true;
+			return 0;
+		}
+
+		var cur,
+			i = 0,
+			aup = a.parentNode,
+			bup = b.parentNode,
+			ap = [ a ],
+			bp = [ b ];
+
+		// Parentless nodes are either documents or disconnected
+		if ( !aup || !bup ) {
+			return a === document ? -1 :
+				b === document ? 1 :
+				aup ? -1 :
+				bup ? 1 :
+				sortInput ?
+				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+				0;
+
+		// If the nodes are siblings, we can do a quick check
+		} else if ( aup === bup ) {
+			return siblingCheck( a, b );
+		}
+
+		// Otherwise we need full lists of their ancestors for comparison
+		cur = a;
+		while ( (cur = cur.parentNode) ) {
+			ap.unshift( cur );
+		}
+		cur = b;
+		while ( (cur = cur.parentNode) ) {
+			bp.unshift( cur );
+		}
+
+		// Walk down the tree looking for a discrepancy
+		while ( ap[i] === bp[i] ) {
+			i++;
+		}
+
+		return i ?
+			// Do a sibling check if the nodes have a common ancestor
+			siblingCheck( ap[i], bp[i] ) :
+
+			// Otherwise nodes in our document sort first
+			ap[i] === preferredDoc ? -1 :
+			bp[i] === preferredDoc ? 1 :
+			0;
+	};
+
+	return document;
+};
+
+Sizzle.matches = function( expr, elements ) {
+	return Sizzle( expr, null, null, elements );
+};
+
+Sizzle.matchesSelector = function( elem, expr ) {
+	// Set document vars if needed
+	if ( ( elem.ownerDocument || elem ) !== document ) {
+		setDocument( elem );
+	}
+
+	// Make sure that attribute selectors are quoted
+	expr = expr.replace( rattributeQuotes, "='$1']" );
+
+	if ( support.matchesSelector && documentIsHTML &&
+		!compilerCache[ expr + " " ] &&
+		( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
+		( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
+
+		try {
+			var ret = matches.call( elem, expr );
+
+			// IE 9's matchesSelector returns false on disconnected nodes
+			if ( ret || support.disconnectedMatch ||
+					// As well, disconnected nodes are said to be in a document
+					// fragment in IE 9
+					elem.document && elem.document.nodeType !== 11 ) {
+				return ret;
+			}
+		} catch (e) {}
+	}
+
+	return Sizzle( expr, document, null, [ elem ] ).length > 0;
+};
+
+Sizzle.contains = function( context, elem ) {
+	// Set document vars if needed
+	if ( ( context.ownerDocument || context ) !== document ) {
+		setDocument( context );
+	}
+	return contains( context, elem );
+};
+
+Sizzle.attr = function( elem, name ) {
+	// Set document vars if needed
+	if ( ( elem.ownerDocument || elem ) !== document ) {
+		setDocument( elem );
+	}
+
+	var fn = Expr.attrHandle[ name.toLowerCase() ],
+		// Don't get fooled by Object.prototype properties (jQuery #13807)
+		val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
+			fn( elem, name, !documentIsHTML ) :
+			undefined;
+
+	return val !== undefined ?
+		val :
+		support.attributes || !documentIsHTML ?
+			elem.getAttribute( name ) :
+			(val = elem.getAttributeNode(name)) && val.specified ?
+				val.value :
+				null;
+};
+
+Sizzle.error = function( msg ) {
+	throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+/**
+ * Document sorting and removing duplicates
+ * @param {ArrayLike} results
+ */
+Sizzle.uniqueSort = function( results ) {
+	var elem,
+		duplicates = [],
+		j = 0,
+		i = 0;
+
+	// Unless we *know* we can detect duplicates, assume their presence
+	hasDuplicate = !support.detectDuplicates;
+	sortInput = !support.sortStable && results.slice( 0 );
+	results.sort( sortOrder );
+
+	if ( hasDuplicate ) {
+		while ( (elem = results[i++]) ) {
+			if ( elem === results[ i ] ) {
+				j = duplicates.push( i );
+			}
+		}
+		while ( j-- ) {
+			results.splice( duplicates[ j ], 1 );
+		}
+	}
+
+	// Clear input after sorting to release objects
+	// See https://github.com/jquery/sizzle/pull/225
+	sortInput = null;
+
+	return results;
+};
+
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+	var node,
+		ret = "",
+		i = 0,
+		nodeType = elem.nodeType;
+
+	if ( !nodeType ) {
+		// If no nodeType, this is expected to be an array
+		while ( (node = elem[i++]) ) {
+			// Do not traverse comment nodes
+			ret += getText( node );
+		}
+	} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+		// Use textContent for elements
+		// innerText usage removed for consistency of new lines (jQuery #11153)
+		if ( typeof elem.textContent === "string" ) {
+			return elem.textContent;
+		} else {
+			// Traverse its children
+			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+				ret += getText( elem );
+			}
+		}
+	} else if ( nodeType === 3 || nodeType === 4 ) {
+		return elem.nodeValue;
+	}
+	// Do not include comment or processing instruction nodes
+
+	return ret;
+};
+
+Expr = Sizzle.selectors = {
+
+	// Can be adjusted by the user
+	cacheLength: 50,
+
+	createPseudo: markFunction,
+
+	match: matchExpr,
+
+	attrHandle: {},
+
+	find: {},
+
+	relative: {
+		">": { dir: "parentNode", first: true },
+		" ": { dir: "parentNode" },
+		"+": { dir: "previousSibling", first: true },
+		"~": { dir: "previousSibling" }
+	},
+
+	preFilter: {
+		"ATTR": function( match ) {
+			match[1] = match[1].replace( runescape, funescape );
+
+			// Move the given value to match[3] whether quoted or unquoted
+			match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
+
+			if ( match[2] === "~=" ) {
+				match[3] = " " + match[3] + " ";
+			}
+
+			return match.slice( 0, 4 );
+		},
+
+		"CHILD": function( match ) {
+			/* matches from matchExpr["CHILD"]
+				1 type (only|nth|...)
+				2 what (child|of-type)
+				3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+				4 xn-component of xn+y argument ([+-]?\d*n|)
+				5 sign of xn-component
+				6 x of xn-component
+				7 sign of y-component
+				8 y of y-component
+			*/
+			match[1] = match[1].toLowerCase();
+
+			if ( match[1].slice( 0, 3 ) === "nth" ) {
+				// nth-* requires argument
+				if ( !match[3] ) {
+					Sizzle.error( match[0] );
+				}
+
+				// numeric x and y parameters for Expr.filter.CHILD
+				// remember that false/true cast respectively to 0/1
+				match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
+				match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
+
+			// other types prohibit arguments
+			} else if ( match[3] ) {
+				Sizzle.error( match[0] );
+			}
+
+			return match;
+		},
+
+		"PSEUDO": function( match ) {
+			var excess,
+				unquoted = !match[6] && match[2];
+
+			if ( matchExpr["CHILD"].test( match[0] ) ) {
+				return null;
+			}
+
+			// Accept quoted arguments as-is
+			if ( match[3] ) {
+				match[2] = match[4] || match[5] || "";
+
+			// Strip excess characters from unquoted arguments
+			} else if ( unquoted && rpseudo.test( unquoted ) &&
+				// Get excess from tokenize (recursively)
+				(excess = tokenize( unquoted, true )) &&
+				// advance to the next closing parenthesis
+				(excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+
+				// excess is a negative index
+				match[0] = match[0].slice( 0, excess );
+				match[2] = unquoted.slice( 0, excess );
+			}
+
+			// Return only captures needed by the pseudo filter method (type and argument)
+			return match.slice( 0, 3 );
+		}
+	},
+
+	filter: {
+
+		"TAG": function( nodeNameSelector ) {
+			var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
+			return nodeNameSelector === "*" ?
+				function() { return true; } :
+				function( elem ) {
+					return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+				};
+		},
+
+		"CLASS": function( className ) {
+			var pattern = classCache[ className + " " ];
+
+			return pattern ||
+				(pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
+				classCache( className, function( elem ) {
+					return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
+				});
+		},
+
+		"ATTR": function( name, operator, check ) {
+			return function( elem ) {
+				var result = Sizzle.attr( elem, name );
+
+				if ( result == null ) {
+					return operator === "!=";
+				}
+				if ( !operator ) {
+					return true;
+				}
+
+				result += "";
+
+				return operator === "=" ? result === check :
+					operator === "!=" ? result !== check :
+					operator === "^=" ? check && result.indexOf( check ) === 0 :
+					operator === "*=" ? check && result.indexOf( check ) > -1 :
+					operator === "$=" ? check && result.slice( -check.length ) === check :
+					operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
+					operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
+					false;
+			};
+		},
+
+		"CHILD": function( type, what, argument, first, last ) {
+			var simple = type.slice( 0, 3 ) !== "nth",
+				forward = type.slice( -4 ) !== "last",
+				ofType = what === "of-type";
+
+			return first === 1 && last === 0 ?
+
+				// Shortcut for :nth-*(n)
+				function( elem ) {
+					return !!elem.parentNode;
+				} :
+
+				function( elem, context, xml ) {
+					var cache, uniqueCache, outerCache, node, nodeIndex, start,
+						dir = simple !== forward ? "nextSibling" : "previousSibling",
+						parent = elem.parentNode,
+						name = ofType && elem.nodeName.toLowerCase(),
+						useCache = !xml && !ofType,
+						diff = false;
+
+					if ( parent ) {
+
+						// :(first|last|only)-(child|of-type)
+						if ( simple ) {
+							while ( dir ) {
+								node = elem;
+								while ( (node = node[ dir ]) ) {
+									if ( ofType ?
+										node.nodeName.toLowerCase() === name :
+										node.nodeType === 1 ) {
+
+										return false;
+									}
+								}
+								// Reverse direction for :only-* (if we haven't yet done so)
+								start = dir = type === "only" && !start && "nextSibling";
+							}
+							return true;
+						}
+
+						start = [ forward ? parent.firstChild : parent.lastChild ];
+
+						// non-xml :nth-child(...) stores cache data on `parent`
+						if ( forward && useCache ) {
+
+							// Seek `elem` from a previously-cached index
+
+							// ...in a gzip-friendly way
+							node = parent;
+							outerCache = node[ expando ] || (node[ expando ] = {});
+
+							// Support: IE <9 only
+							// Defend against cloned attroperties (jQuery gh-1709)
+							uniqueCache = outerCache[ node.uniqueID ] ||
+								(outerCache[ node.uniqueID ] = {});
+
+							cache = uniqueCache[ type ] || [];
+							nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
+							diff = nodeIndex && cache[ 2 ];
+							node = nodeIndex && parent.childNodes[ nodeIndex ];
+
+							while ( (node = ++nodeIndex && node && node[ dir ] ||
+
+								// Fallback to seeking `elem` from the start
+								(diff = nodeIndex = 0) || start.pop()) ) {
+
+								// When found, cache indexes on `parent` and break
+								if ( node.nodeType === 1 && ++diff && node === elem ) {
+									uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
+									break;
+								}
+							}
+
+						} else {
+							// Use previously-cached element index if available
+							if ( useCache ) {
+								// ...in a gzip-friendly way
+								node = elem;
+								outerCache = node[ expando ] || (node[ expando ] = {});
+
+								// Support: IE <9 only
+								// Defend against cloned attroperties (jQuery gh-1709)
+								uniqueCache = outerCache[ node.uniqueID ] ||
+									(outerCache[ node.uniqueID ] = {});
+
+								cache = uniqueCache[ type ] || [];
+								nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
+								diff = nodeIndex;
+							}
+
+							// xml :nth-child(...)
+							// or :nth-last-child(...) or :nth(-last)?-of-type(...)
+							if ( diff === false ) {
+								// Use the same loop as above to seek `elem` from the start
+								while ( (node = ++nodeIndex && node && node[ dir ] ||
+									(diff = nodeIndex = 0) || start.pop()) ) {
+
+									if ( ( ofType ?
+										node.nodeName.toLowerCase() === name :
+										node.nodeType === 1 ) &&
+										++diff ) {
+
+										// Cache the index of each encountered element
+										if ( useCache ) {
+											outerCache = node[ expando ] || (node[ expando ] = {});
+
+											// Support: IE <9 only
+											// Defend against cloned attroperties (jQuery gh-1709)
+											uniqueCache = outerCache[ node.uniqueID ] ||
+												(outerCache[ node.uniqueID ] = {});
+
+											uniqueCache[ type ] = [ dirruns, diff ];
+										}
+
+										if ( node === elem ) {
+											break;
+										}
+									}
+								}
+							}
+						}
+
+						// Incorporate the offset, then check against cycle size
+						diff -= last;
+						return diff === first || ( diff % first === 0 && diff / first >= 0 );
+					}
+				};
+		},
+
+		"PSEUDO": function( pseudo, argument ) {
+			// pseudo-class names are case-insensitive
+			// http://www.w3.org/TR/selectors/#pseudo-classes
+			// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+			// Remember that setFilters inherits from pseudos
+			var args,
+				fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+					Sizzle.error( "unsupported pseudo: " + pseudo );
+
+			// The user may use createPseudo to indicate that
+			// arguments are needed to create the filter function
+			// just as Sizzle does
+			if ( fn[ expando ] ) {
+				return fn( argument );
+			}
+
+			// But maintain support for old signatures
+			if ( fn.length > 1 ) {
+				args = [ pseudo, pseudo, "", argument ];
+				return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+					markFunction(function( seed, matches ) {
+						var idx,
+							matched = fn( seed, argument ),
+							i = matched.length;
+						while ( i-- ) {
+							idx = indexOf( seed, matched[i] );
+							seed[ idx ] = !( matches[ idx ] = matched[i] );
+						}
+					}) :
+					function( elem ) {
+						return fn( elem, 0, args );
+					};
+			}
+
+			return fn;
+		}
+	},
+
+	pseudos: {
+		// Potentially complex pseudos
+		"not": markFunction(function( selector ) {
+			// Trim the selector passed to compile
+			// to avoid treating leading and trailing
+			// spaces as combinators
+			var input = [],
+				results = [],
+				matcher = compile( selector.replace( rtrim, "$1" ) );
+
+			return matcher[ expando ] ?
+				markFunction(function( seed, matches, context, xml ) {
+					var elem,
+						unmatched = matcher( seed, null, xml, [] ),
+						i = seed.length;
+
+					// Match elements unmatched by `matcher`
+					while ( i-- ) {
+						if ( (elem = unmatched[i]) ) {
+							seed[i] = !(matches[i] = elem);
+						}
+					}
+				}) :
+				function( elem, context, xml ) {
+					input[0] = elem;
+					matcher( input, null, xml, results );
+					// Don't keep the element (issue #299)
+					input[0] = null;
+					return !results.pop();
+				};
+		}),
+
+		"has": markFunction(function( selector ) {
+			return function( elem ) {
+				return Sizzle( selector, elem ).length > 0;
+			};
+		}),
+
+		"contains": markFunction(function( text ) {
+			text = text.replace( runescape, funescape );
+			return function( elem ) {
+				return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
+			};
+		}),
+
+		// "Whether an element is represented by a :lang() selector
+		// is based solely on the element's language value
+		// being equal to the identifier C,
+		// or beginning with the identifier C immediately followed by "-".
+		// The matching of C against the element's language value is performed case-insensitively.
+		// The identifier C does not have to be a valid language name."
+		// http://www.w3.org/TR/selectors/#lang-pseudo
+		"lang": markFunction( function( lang ) {
+			// lang value must be a valid identifier
+			if ( !ridentifier.test(lang || "") ) {
+				Sizzle.error( "unsupported lang: " + lang );
+			}
+			lang = lang.replace( runescape, funescape ).toLowerCase();
+			return function( elem ) {
+				var elemLang;
+				do {
+					if ( (elemLang = documentIsHTML ?
+						elem.lang :
+						elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
+
+						elemLang = elemLang.toLowerCase();
+						return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
+					}
+				} while ( (elem = elem.parentNode) && elem.nodeType === 1 );
+				return false;
+			};
+		}),
+
+		// Miscellaneous
+		"target": function( elem ) {
+			var hash = window.location && window.location.hash;
+			return hash && hash.slice( 1 ) === elem.id;
+		},
+
+		"root": function( elem ) {
+			return elem === docElem;
+		},
+
+		"focus": function( elem ) {
+			return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+		},
+
+		// Boolean properties
+		"enabled": function( elem ) {
+			return elem.disabled === false;
+		},
+
+		"disabled": function( elem ) {
+			return elem.disabled === true;
+		},
+
+		"checked": function( elem ) {
+			// In CSS3, :checked should return both checked and selected elements
+			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+			var nodeName = elem.nodeName.toLowerCase();
+			return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+		},
+
+		"selected": function( elem ) {
+			// Accessing this property makes selected-by-default
+			// options in Safari work properly
+			if ( elem.parentNode ) {
+				elem.parentNode.selectedIndex;
+			}
+
+			return elem.selected === true;
+		},
+
+		// Contents
+		"empty": function( elem ) {
+			// http://www.w3.org/TR/selectors/#empty-pseudo
+			// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
+			//   but not by others (comment: 8; processing instruction: 7; etc.)
+			// nodeType < 6 works because attributes (2) do not appear as children
+			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+				if ( elem.nodeType < 6 ) {
+					return false;
+				}
+			}
+			return true;
+		},
+
+		"parent": function( elem ) {
+			return !Expr.pseudos["empty"]( elem );
+		},
+
+		// Element/input types
+		"header": function( elem ) {
+			return rheader.test( elem.nodeName );
+		},
+
+		"input": function( elem ) {
+			return rinputs.test( elem.nodeName );
+		},
+
+		"button": function( elem ) {
+			var name = elem.nodeName.toLowerCase();
+			return name === "input" && elem.type === "button" || name === "button";
+		},
+
+		"text": function( elem ) {
+			var attr;
+			return elem.nodeName.toLowerCase() === "input" &&
+				elem.type === "text" &&
+
+				// Support: IE<8
+				// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
+				( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
+		},
+
+		// Position-in-collection
+		"first": createPositionalPseudo(function() {
+			return [ 0 ];
+		}),
+
+		"last": createPositionalPseudo(function( matchIndexes, length ) {
+			return [ length - 1 ];
+		}),
+
+		"eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+			return [ argument < 0 ? argument + length : argument ];
+		}),
+
+		"even": createPositionalPseudo(function( matchIndexes, length ) {
+			var i = 0;
+			for ( ; i < length; i += 2 ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		}),
+
+		"odd": createPositionalPseudo(function( matchIndexes, length ) {
+			var i = 1;
+			for ( ; i < length; i += 2 ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		}),
+
+		"lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+			var i = argument < 0 ? argument + length : argument;
+			for ( ; --i >= 0; ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		}),
+
+		"gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+			var i = argument < 0 ? argument + length : argument;
+			for ( ; ++i < length; ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		})
+	}
+};
+
+Expr.pseudos["nth"] = Expr.pseudos["eq"];
+
+// Add button/input type pseudos
+for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
+	Expr.pseudos[ i ] = createInputPseudo( i );
+}
+for ( i in { submit: true, reset: true } ) {
+	Expr.pseudos[ i ] = createButtonPseudo( i );
+}
+
+// Easy API for creating new setFilters
+function setFilters() {}
+setFilters.prototype = Expr.filters = Expr.pseudos;
+Expr.setFilters = new setFilters();
+
+tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
+	var matched, match, tokens, type,
+		soFar, groups, preFilters,
+		cached = tokenCache[ selector + " " ];
+
+	if ( cached ) {
+		return parseOnly ? 0 : cached.slice( 0 );
+	}
+
+	soFar = selector;
+	groups = [];
+	preFilters = Expr.preFilter;
+
+	while ( soFar ) {
+
+		// Comma and first run
+		if ( !matched || (match = rcomma.exec( soFar )) ) {
+			if ( match ) {
+				// Don't consume trailing commas as valid
+				soFar = soFar.slice( match[0].length ) || soFar;
+			}
+			groups.push( (tokens = []) );
+		}
+
+		matched = false;
+
+		// Combinators
+		if ( (match = rcombinators.exec( soFar )) ) {
+			matched = match.shift();
+			tokens.push({
+				value: matched,
+				// Cast descendant combinators to space
+				type: match[0].replace( rtrim, " " )
+			});
+			soFar = soFar.slice( matched.length );
+		}
+
+		// Filters
+		for ( type in Expr.filter ) {
+			if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
+				(match = preFilters[ type ]( match ))) ) {
+				matched = match.shift();
+				tokens.push({
+					value: matched,
+					type: type,
+					matches: match
+				});
+				soFar = soFar.slice( matched.length );
+			}
+		}
+
+		if ( !matched ) {
+			break;
+		}
+	}
+
+	// Return the length of the invalid excess
+	// if we're just parsing
+	// Otherwise, throw an error or return tokens
+	return parseOnly ?
+		soFar.length :
+		soFar ?
+			Sizzle.error( selector ) :
+			// Cache the tokens
+			tokenCache( selector, groups ).slice( 0 );
+};
+
+function toSelector( tokens ) {
+	var i = 0,
+		len = tokens.length,
+		selector = "";
+	for ( ; i < len; i++ ) {
+		selector += tokens[i].value;
+	}
+	return selector;
+}
+
+function addCombinator( matcher, combinator, base ) {
+	var dir = combinator.dir,
+		checkNonElements = base && dir === "parentNode",
+		doneName = done++;
+
+	return combinator.first ?
+		// Check against closest ancestor/preceding element
+		function( elem, context, xml ) {
+			while ( (elem = elem[ dir ]) ) {
+				if ( elem.nodeType === 1 || checkNonElements ) {
+					return matcher( elem, context, xml );
+				}
+			}
+		} :
+
+		// Check against all ancestor/preceding elements
+		function( elem, context, xml ) {
+			var oldCache, uniqueCache, outerCache,
+				newCache = [ dirruns, doneName ];
+
+			// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
+			if ( xml ) {
+				while ( (elem = elem[ dir ]) ) {
+					if ( elem.nodeType === 1 || checkNonElements ) {
+						if ( matcher( elem, context, xml ) ) {
+							return true;
+						}
+					}
+				}
+			} else {
+				while ( (elem = elem[ dir ]) ) {
+					if ( elem.nodeType === 1 || checkNonElements ) {
+						outerCache = elem[ expando ] || (elem[ expando ] = {});
+
+						// Support: IE <9 only
+						// Defend against cloned attroperties (jQuery gh-1709)
+						uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
+
+						if ( (oldCache = uniqueCache[ dir ]) &&
+							oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
+
+							// Assign to newCache so results back-propagate to previous elements
+							return (newCache[ 2 ] = oldCache[ 2 ]);
+						} else {
+							// Reuse newcache so results back-propagate to previous elements
+							uniqueCache[ dir ] = newCache;
+
+							// A match means we're done; a fail means we have to keep checking
+							if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
+								return true;
+							}
+						}
+					}
+				}
+			}
+		};
+}
+
+function elementMatcher( matchers ) {
+	return matchers.length > 1 ?
+		function( elem, context, xml ) {
+			var i = matchers.length;
+			while ( i-- ) {
+				if ( !matchers[i]( elem, context, xml ) ) {
+					return false;
+				}
+			}
+			return true;
+		} :
+		matchers[0];
+}
+
+function multipleContexts( selector, contexts, results ) {
+	var i = 0,
+		len = contexts.length;
+	for ( ; i < len; i++ ) {
+		Sizzle( selector, contexts[i], results );
+	}
+	return results;
+}
+
+function condense( unmatched, map, filter, context, xml ) {
+	var elem,
+		newUnmatched = [],
+		i = 0,
+		len = unmatched.length,
+		mapped = map != null;
+
+	for ( ; i < len; i++ ) {
+		if ( (elem = unmatched[i]) ) {
+			if ( !filter || filter( elem, context, xml ) ) {
+				newUnmatched.push( elem );
+				if ( mapped ) {
+					map.push( i );
+				}
+			}
+		}
+	}
+
+	return newUnmatched;
+}
+
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+	if ( postFilter && !postFilter[ expando ] ) {
+		postFilter = setMatcher( postFilter );
+	}
+	if ( postFinder && !postFinder[ expando ] ) {
+		postFinder = setMatcher( postFinder, postSelector );
+	}
+	return markFunction(function( seed, results, context, xml ) {
+		var temp, i, elem,
+			preMap = [],
+			postMap = [],
+			preexisting = results.length,
+
+			// Get initial elements from seed or context
+			elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
+
+			// Prefilter to get matcher input, preserving a map for seed-results synchronization
+			matcherIn = preFilter && ( seed || !selector ) ?
+				condense( elems, preMap, preFilter, context, xml ) :
+				elems,
+
+			matcherOut = matcher ?
+				// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+				postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+					// ...intermediate processing is necessary
+					[] :
+
+					// ...otherwise use results directly
+					results :
+				matcherIn;
+
+		// Find primary matches
+		if ( matcher ) {
+			matcher( matcherIn, matcherOut, context, xml );
+		}
+
+		// Apply postFilter
+		if ( postFilter ) {
+			temp = condense( matcherOut, postMap );
+			postFilter( temp, [], context, xml );
+
+			// Un-match failing elements by moving them back to matcherIn
+			i = temp.length;
+			while ( i-- ) {
+				if ( (elem = temp[i]) ) {
+					matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
+				}
+			}
+		}
+
+		if ( seed ) {
+			if ( postFinder || preFilter ) {
+				if ( postFinder ) {
+					// Get the final matcherOut by condensing this intermediate into postFinder contexts
+					temp = [];
+					i = matcherOut.length;
+					while ( i-- ) {
+						if ( (elem = matcherOut[i]) ) {
+							// Restore matcherIn since elem is not yet a final match
+							temp.push( (matcherIn[i] = elem) );
+						}
+					}
+					postFinder( null, (matcherOut = []), temp, xml );
+				}
+
+				// Move matched elements from seed to results to keep them synchronized
+				i = matcherOut.length;
+				while ( i-- ) {
+					if ( (elem = matcherOut[i]) &&
+						(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
+
+						seed[temp] = !(results[temp] = elem);
+					}
+				}
+			}
+
+		// Add elements to results, through postFinder if defined
+		} else {
+			matcherOut = condense(
+				matcherOut === results ?
+					matcherOut.splice( preexisting, matcherOut.length ) :
+					matcherOut
+			);
+			if ( postFinder ) {
+				postFinder( null, results, matcherOut, xml );
+			} else {
+				push.apply( results, matcherOut );
+			}
+		}
+	});
+}
+
+function matcherFromTokens( tokens ) {
+	var checkContext, matcher, j,
+		len = tokens.length,
+		leadingRelative = Expr.relative[ tokens[0].type ],
+		implicitRelative = leadingRelative || Expr.relative[" "],
+		i = leadingRelative ? 1 : 0,
+
+		// The foundational matcher ensures that elements are reachable from top-level context(s)
+		matchContext = addCombinator( function( elem ) {
+			return elem === checkContext;
+		}, implicitRelative, true ),
+		matchAnyContext = addCombinator( function( elem ) {
+			return indexOf( checkContext, elem ) > -1;
+		}, implicitRelative, true ),
+		matchers = [ function( elem, context, xml ) {
+			var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+				(checkContext = context).nodeType ?
+					matchContext( elem, context, xml ) :
+					matchAnyContext( elem, context, xml ) );
+			// Avoid hanging onto element (issue #299)
+			checkContext = null;
+			return ret;
+		} ];
+
+	for ( ; i < len; i++ ) {
+		if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
+			matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
+		} else {
+			matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+
+			// Return special upon seeing a positional matcher
+			if ( matcher[ expando ] ) {
+				// Find the next relative operator (if any) for proper handling
+				j = ++i;
+				for ( ; j < len; j++ ) {
+					if ( Expr.relative[ tokens[j].type ] ) {
+						break;
+					}
+				}
+				return setMatcher(
+					i > 1 && elementMatcher( matchers ),
+					i > 1 && toSelector(
+						// If the preceding token was a descendant combinator, insert an implicit any-element `*`
+						tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
+					).replace( rtrim, "$1" ),
+					matcher,
+					i < j && matcherFromTokens( tokens.slice( i, j ) ),
+					j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+					j < len && toSelector( tokens )
+				);
+			}
+			matchers.push( matcher );
+		}
+	}
+
+	return elementMatcher( matchers );
+}
+
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+	var bySet = setMatchers.length > 0,
+		byElement = elementMatchers.length > 0,
+		superMatcher = function( seed, context, xml, results, outermost ) {
+			var elem, j, matcher,
+				matchedCount = 0,
+				i = "0",
+				unmatched = seed && [],
+				setMatched = [],
+				contextBackup = outermostContext,
+				// We must always have either seed elements or outermost context
+				elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
+				// Use integer dirruns iff this is the outermost matcher
+				dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
+				len = elems.length;
+
+			if ( outermost ) {
+				outermostContext = context === document || context || outermost;
+			}
+
+			// Add elements passing elementMatchers directly to results
+			// Support: IE<9, Safari
+			// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
+			for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
+				if ( byElement && elem ) {
+					j = 0;
+					if ( !context && elem.ownerDocument !== document ) {
+						setDocument( elem );
+						xml = !documentIsHTML;
+					}
+					while ( (matcher = elementMatchers[j++]) ) {
+						if ( matcher( elem, context || document, xml) ) {
+							results.push( elem );
+							break;
+						}
+					}
+					if ( outermost ) {
+						dirruns = dirrunsUnique;
+					}
+				}
+
+				// Track unmatched elements for set filters
+				if ( bySet ) {
+					// They will have gone through all possible matchers
+					if ( (elem = !matcher && elem) ) {
+						matchedCount--;
+					}
+
+					// Lengthen the array for every element, matched or not
+					if ( seed ) {
+						unmatched.push( elem );
+					}
+				}
+			}
+
+			// `i` is now the count of elements visited above, and adding it to `matchedCount`
+			// makes the latter nonnegative.
+			matchedCount += i;
+
+			// Apply set filters to unmatched elements
+			// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
+			// equals `i`), unless we didn't visit _any_ elements in the above loop because we have
+			// no element matchers and no seed.
+			// Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
+			// case, which will result in a "00" `matchedCount` that differs from `i` but is also
+			// numerically zero.
+			if ( bySet && i !== matchedCount ) {
+				j = 0;
+				while ( (matcher = setMatchers[j++]) ) {
+					matcher( unmatched, setMatched, context, xml );
+				}
+
+				if ( seed ) {
+					// Reintegrate element matches to eliminate the need for sorting
+					if ( matchedCount > 0 ) {
+						while ( i-- ) {
+							if ( !(unmatched[i] || setMatched[i]) ) {
+								setMatched[i] = pop.call( results );
+							}
+						}
+					}
+
+					// Discard index placeholder values to get only actual matches
+					setMatched = condense( setMatched );
+				}
+
+				// Add matches to results
+				push.apply( results, setMatched );
+
+				// Seedless set matches succeeding multiple successful matchers stipulate sorting
+				if ( outermost && !seed && setMatched.length > 0 &&
+					( matchedCount + setMatchers.length ) > 1 ) {
+
+					Sizzle.uniqueSort( results );
+				}
+			}
+
+			// Override manipulation of globals by nested matchers
+			if ( outermost ) {
+				dirruns = dirrunsUnique;
+				outermostContext = contextBackup;
+			}
+
+			return unmatched;
+		};
+
+	return bySet ?
+		markFunction( superMatcher ) :
+		superMatcher;
+}
+
+compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
+	var i,
+		setMatchers = [],
+		elementMatchers = [],
+		cached = compilerCache[ selector + " " ];
+
+	if ( !cached ) {
+		// Generate a function of recursive functions that can be used to check each element
+		if ( !match ) {
+			match = tokenize( selector );
+		}
+		i = match.length;
+		while ( i-- ) {
+			cached = matcherFromTokens( match[i] );
+			if ( cached[ expando ] ) {
+				setMatchers.push( cached );
+			} else {
+				elementMatchers.push( cached );
+			}
+		}
+
+		// Cache the compiled function
+		cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+
+		// Save selector and tokenization
+		cached.selector = selector;
+	}
+	return cached;
+};
+
+/**
+ * A low-level selection function that works with Sizzle's compiled
+ *  selector functions
+ * @param {String|Function} selector A selector or a pre-compiled
+ *  selector function built with Sizzle.compile
+ * @param {Element} context
+ * @param {Array} [results]
+ * @param {Array} [seed] A set of elements to match against
+ */
+select = Sizzle.select = function( selector, context, results, seed ) {
+	var i, tokens, token, type, find,
+		compiled = typeof selector === "function" && selector,
+		match = !seed && tokenize( (selector = compiled.selector || selector) );
+
+	results = results || [];
+
+	// Try to minimize operations if there is only one selector in the list and no seed
+	// (the latter of which guarantees us context)
+	if ( match.length === 1 ) {
+
+		// Reduce context if the leading compound selector is an ID
+		tokens = match[0] = match[0].slice( 0 );
+		if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
+				support.getById && context.nodeType === 9 && documentIsHTML &&
+				Expr.relative[ tokens[1].type ] ) {
+
+			context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
+			if ( !context ) {
+				return results;
+
+			// Precompiled matchers will still verify ancestry, so step up a level
+			} else if ( compiled ) {
+				context = context.parentNode;
+			}
+
+			selector = selector.slice( tokens.shift().value.length );
+		}
+
+		// Fetch a seed set for right-to-left matching
+		i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+		while ( i-- ) {
+			token = tokens[i];
+
+			// Abort if we hit a combinator
+			if ( Expr.relative[ (type = token.type) ] ) {
+				break;
+			}
+			if ( (find = Expr.find[ type ]) ) {
+				// Search, expanding context for leading sibling combinators
+				if ( (seed = find(
+					token.matches[0].replace( runescape, funescape ),
+					rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
+				)) ) {
+
+					// If seed is empty or no tokens remain, we can return early
+					tokens.splice( i, 1 );
+					selector = seed.length && toSelector( tokens );
+					if ( !selector ) {
+						push.apply( results, seed );
+						return results;
+					}
+
+					break;
+				}
+			}
+		}
+	}
+
+	// Compile and execute a filtering function if one is not provided
+	// Provide `match` to avoid retokenization if we modified the selector above
+	( compiled || compile( selector, match ) )(
+		seed,
+		context,
+		!documentIsHTML,
+		results,
+		!context || rsibling.test( selector ) && testContext( context.parentNode ) || context
+	);
+	return results;
+};
+
+// One-time assignments
+
+// Sort stability
+support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
+
+// Support: Chrome 14-35+
+// Always assume duplicates if they aren't passed to the comparison function
+support.detectDuplicates = !!hasDuplicate;
+
+// Initialize against the default document
+setDocument();
+
+// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
+// Detached nodes confoundingly follow *each other*
+support.sortDetached = assert(function( div1 ) {
+	// Should return 1, but returns 4 (following)
+	return div1.compareDocumentPosition( document.createElement("div") ) & 1;
+});
+
+// Support: IE<8
+// Prevent attribute/property "interpolation"
+// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !assert(function( div ) {
+	div.innerHTML = "<a href='#'></a>";
+	return div.firstChild.getAttribute("href") === "#" ;
+}) ) {
+	addHandle( "type|href|height|width", function( elem, name, isXML ) {
+		if ( !isXML ) {
+			return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
+		}
+	});
+}
+
+// Support: IE<9
+// Use defaultValue in place of getAttribute("value")
+if ( !support.attributes || !assert(function( div ) {
+	div.innerHTML = "<input/>";
+	div.firstChild.setAttribute( "value", "" );
+	return div.firstChild.getAttribute( "value" ) === "";
+}) ) {
+	addHandle( "value", function( elem, name, isXML ) {
+		if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
+			return elem.defaultValue;
+		}
+	});
+}
+
+// Support: IE<9
+// Use getAttributeNode to fetch booleans when getAttribute lies
+if ( !assert(function( div ) {
+	return div.getAttribute("disabled") == null;
+}) ) {
+	addHandle( booleans, function( elem, name, isXML ) {
+		var val;
+		if ( !isXML ) {
+			return elem[ name ] === true ? name.toLowerCase() :
+					(val = elem.getAttributeNode( name )) && val.specified ?
+					val.value :
+				null;
+		}
+	});
+}
+
+return Sizzle;
+
+})( window );
+
+
+
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[ ":" ] = jQuery.expr.pseudos;
+jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+
+
+
+var dir = function( elem, dir, until ) {
+	var matched = [],
+		truncate = until !== undefined;
+
+	while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
+		if ( elem.nodeType === 1 ) {
+			if ( truncate && jQuery( elem ).is( until ) ) {
+				break;
+			}
+			matched.push( elem );
+		}
+	}
+	return matched;
+};
+
+
+var siblings = function( n, elem ) {
+	var matched = [];
+
+	for ( ; n; n = n.nextSibling ) {
+		if ( n.nodeType === 1 && n !== elem ) {
+			matched.push( n );
+		}
+	}
+
+	return matched;
+};
+
+
+var rneedsContext = jQuery.expr.match.needsContext;
+
+var rsingleTag = ( /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/ );
+
+
+
+var risSimple = /^.[^:#\[\.,]*$/;
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, not ) {
+	if ( jQuery.isFunction( qualifier ) ) {
+		return jQuery.grep( elements, function( elem, i ) {
+			/* jshint -W018 */
+			return !!qualifier.call( elem, i, elem ) !== not;
+		} );
+
+	}
+
+	if ( qualifier.nodeType ) {
+		return jQuery.grep( elements, function( elem ) {
+			return ( elem === qualifier ) !== not;
+		} );
+
+	}
+
+	if ( typeof qualifier === "string" ) {
+		if ( risSimple.test( qualifier ) ) {
+			return jQuery.filter( qualifier, elements, not );
+		}
+
+		qualifier = jQuery.filter( qualifier, elements );
+	}
+
+	return jQuery.grep( elements, function( elem ) {
+		return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
+	} );
+}
+
+jQuery.filter = function( expr, elems, not ) {
+	var elem = elems[ 0 ];
+
+	if ( not ) {
+		expr = ":not(" + expr + ")";
+	}
+
+	return elems.length === 1 && elem.nodeType === 1 ?
+		jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
+		jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
+			return elem.nodeType === 1;
+		} ) );
+};
+
+jQuery.fn.extend( {
+	find: function( selector ) {
+		var i,
+			len = this.length,
+			ret = [],
+			self = this;
+
+		if ( typeof selector !== "string" ) {
+			return this.pushStack( jQuery( selector ).filter( function() {
+				for ( i = 0; i < len; i++ ) {
+					if ( jQuery.contains( self[ i ], this ) ) {
+						return true;
+					}
+				}
+			} ) );
+		}
+
+		for ( i = 0; i < len; i++ ) {
+			jQuery.find( selector, self[ i ], ret );
+		}
+
+		// Needed because $( selector, context ) becomes $( context ).find( selector )
+		ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
+		ret.selector = this.selector ? this.selector + " " + selector : selector;
+		return ret;
+	},
+	filter: function( selector ) {
+		return this.pushStack( winnow( this, selector || [], false ) );
+	},
+	not: function( selector ) {
+		return this.pushStack( winnow( this, selector || [], true ) );
+	},
+	is: function( selector ) {
+		return !!winnow(
+			this,
+
+			// If this is a positional/relative selector, check membership in the returned set
+			// so $("p:first").is("p:last") won't return true for a doc with two "p".
+			typeof selector === "string" && rneedsContext.test( selector ) ?
+				jQuery( selector ) :
+				selector || [],
+			false
+		).length;
+	}
+} );
+
+
+// Initialize a jQuery object
+
+
+// A central reference to the root jQuery(document)
+var rootjQuery,
+
+	// A simple way to check for HTML strings
+	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+	// Strict HTML recognition (#11290: must start with <)
+	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
+
+	init = jQuery.fn.init = function( selector, context, root ) {
+		var match, elem;
+
+		// HANDLE: $(""), $(null), $(undefined), $(false)
+		if ( !selector ) {
+			return this;
+		}
+
+		// Method init() accepts an alternate rootjQuery
+		// so migrate can support jQuery.sub (gh-2101)
+		root = root || rootjQuery;
+
+		// Handle HTML strings
+		if ( typeof selector === "string" ) {
+			if ( selector[ 0 ] === "<" &&
+				selector[ selector.length - 1 ] === ">" &&
+				selector.length >= 3 ) {
+
+				// Assume that strings that start and end with <> are HTML and skip the regex check
+				match = [ null, selector, null ];
+
+			} else {
+				match = rquickExpr.exec( selector );
+			}
+
+			// Match html or make sure no context is specified for #id
+			if ( match && ( match[ 1 ] || !context ) ) {
+
+				// HANDLE: $(html) -> $(array)
+				if ( match[ 1 ] ) {
+					context = context instanceof jQuery ? context[ 0 ] : context;
+
+					// Option to run scripts is true for back-compat
+					// Intentionally let the error be thrown if parseHTML is not present
+					jQuery.merge( this, jQuery.parseHTML(
+						match[ 1 ],
+						context && context.nodeType ? context.ownerDocument || context : document,
+						true
+					) );
+
+					// HANDLE: $(html, props)
+					if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
+						for ( match in context ) {
+
+							// Properties of context are called as methods if possible
+							if ( jQuery.isFunction( this[ match ] ) ) {
+								this[ match ]( context[ match ] );
+
+							// ...and otherwise set as attributes
+							} else {
+								this.attr( match, context[ match ] );
+							}
+						}
+					}
+
+					return this;
+
+				// HANDLE: $(#id)
+				} else {
+					elem = document.getElementById( match[ 2 ] );
+
+					// Support: Blackberry 4.6
+					// gEBID returns nodes no longer in the document (#6963)
+					if ( elem && elem.parentNode ) {
+
+						// Inject the element directly into the jQuery object
+						this.length = 1;
+						this[ 0 ] = elem;
+					}
+
+					this.context = document;
+					this.selector = selector;
+					return this;
+				}
+
+			// HANDLE: $(expr, $(...))
+			} else if ( !context || context.jquery ) {
+				return ( context || root ).find( selector );
+
+			// HANDLE: $(expr, context)
+			// (which is just equivalent to: $(context).find(expr)
+			} else {
+				return this.constructor( context ).find( selector );
+			}
+
+		// HANDLE: $(DOMElement)
+		} else if ( selector.nodeType ) {
+			this.context = this[ 0 ] = selector;
+			this.length = 1;
+			return this;
+
+		// HANDLE: $(function)
+		// Shortcut for document ready
+		} else if ( jQuery.isFunction( selector ) ) {
+			return root.ready !== undefined ?
+				root.ready( selector ) :
+
+				// Execute immediately if ready is not present
+				selector( jQuery );
+		}
+
+		if ( selector.selector !== undefined ) {
+			this.selector = selector.selector;
+			this.context = selector.context;
+		}
+
+		return jQuery.makeArray( selector, this );
+	};
+
+// Give the init function the jQuery prototype for later instantiation
+init.prototype = jQuery.fn;
+
+// Initialize central reference
+rootjQuery = jQuery( document );
+
+
+var rparentsprev = /^(?:parents|prev(?:Until|All))/,
+
+	// Methods guaranteed to produce a unique set when starting from a unique set
+	guaranteedUnique = {
+		children: true,
+		contents: true,
+		next: true,
+		prev: true
+	};
+
+jQuery.fn.extend( {
+	has: function( target ) {
+		var targets = jQuery( target, this ),
+			l = targets.length;
+
+		return this.filter( function() {
+			var i = 0;
+			for ( ; i < l; i++ ) {
+				if ( jQuery.contains( this, targets[ i ] ) ) {
+					return true;
+				}
+			}
+		} );
+	},
+
+	closest: function( selectors, context ) {
+		var cur,
+			i = 0,
+			l = this.length,
+			matched = [],
+			pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
+				jQuery( selectors, context || this.context ) :
+				0;
+
+		for ( ; i < l; i++ ) {
+			for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
+
+				// Always skip document fragments
+				if ( cur.nodeType < 11 && ( pos ?
+					pos.index( cur ) > -1 :
+
+					// Don't pass non-elements to Sizzle
+					cur.nodeType === 1 &&
+						jQuery.find.matchesSelector( cur, selectors ) ) ) {
+
+					matched.push( cur );
+					break;
+				}
+			}
+		}
+
+		return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
+	},
+
+	// Determine the position of an element within the set
+	index: function( elem ) {
+
+		// No argument, return index in parent
+		if ( !elem ) {
+			return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
+		}
+
+		// Index in selector
+		if ( typeof elem === "string" ) {
+			return indexOf.call( jQuery( elem ), this[ 0 ] );
+		}
+
+		// Locate the position of the desired element
+		return indexOf.call( this,
+
+			// If it receives a jQuery object, the first element is used
+			elem.jquery ? elem[ 0 ] : elem
+		);
+	},
+
+	add: function( selector, context ) {
+		return this.pushStack(
+			jQuery.uniqueSort(
+				jQuery.merge( this.get(), jQuery( selector, context ) )
+			)
+		);
+	},
+
+	addBack: function( selector ) {
+		return this.add( selector == null ?
+			this.prevObject : this.prevObject.filter( selector )
+		);
+	}
+} );
+
+function sibling( cur, dir ) {
+	while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
+	return cur;
+}
+
+jQuery.each( {
+	parent: function( elem ) {
+		var parent = elem.parentNode;
+		return parent && parent.nodeType !== 11 ? parent : null;
+	},
+	parents: function( elem ) {
+		return dir( elem, "parentNode" );
+	},
+	parentsUntil: function( elem, i, until ) {
+		return dir( elem, "parentNode", until );
+	},
+	next: function( elem ) {
+		return sibling( elem, "nextSibling" );
+	},
+	prev: function( elem ) {
+		return sibling( elem, "previousSibling" );
+	},
+	nextAll: function( elem ) {
+		return dir( elem, "nextSibling" );
+	},
+	prevAll: function( elem ) {
+		return dir( elem, "previousSibling" );
+	},
+	nextUntil: function( elem, i, until ) {
+		return dir( elem, "nextSibling", until );
+	},
+	prevUntil: function( elem, i, until ) {
+		return dir( elem, "previousSibling", until );
+	},
+	siblings: function( elem ) {
+		return siblings( ( elem.parentNode || {} ).firstChild, elem );
+	},
+	children: function( elem ) {
+		return siblings( elem.firstChild );
+	},
+	contents: function( elem ) {
+		return elem.contentDocument || jQuery.merge( [], elem.childNodes );
+	}
+}, function( name, fn ) {
+	jQuery.fn[ name ] = function( until, selector ) {
+		var matched = jQuery.map( this, fn, until );
+
+		if ( name.slice( -5 ) !== "Until" ) {
+			selector = until;
+		}
+
+		if ( selector && typeof selector === "string" ) {
+			matched = jQuery.filter( selector, matched );
+		}
+
+		if ( this.length > 1 ) {
+
+			// Remove duplicates
+			if ( !guaranteedUnique[ name ] ) {
+				jQuery.uniqueSort( matched );
+			}
+
+			// Reverse order for parents* and prev-derivatives
+			if ( rparentsprev.test( name ) ) {
+				matched.reverse();
+			}
+		}
+
+		return this.pushStack( matched );
+	};
+} );
+var rnotwhite = ( /\S+/g );
+
+
+
+// Convert String-formatted options into Object-formatted ones
+function createOptions( options ) {
+	var object = {};
+	jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {
+		object[ flag ] = true;
+	} );
+	return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ *	options: an optional list of space-separated options that will change how
+ *			the callback list behaves or a more traditional option object
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible options:
+ *
+ *	once:			will ensure the callback list can only be fired once (like a Deferred)
+ *
+ *	memory:			will keep track of previous values and will call any callback added
+ *					after the list has been fired right away with the latest "memorized"
+ *					values (like a Deferred)
+ *
+ *	unique:			will ensure a callback can only be added once (no duplicate in the list)
+ *
+ *	stopOnFalse:	interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( options ) {
+
+	// Convert options from String-formatted to Object-formatted if needed
+	// (we check in cache first)
+	options = typeof options === "string" ?
+		createOptions( options ) :
+		jQuery.extend( {}, options );

<TRUNCATED>


[22/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-sy.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-sy.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-sy.js
new file mode 100644
index 0000000..9ddd6ad
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-sy.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0635",
+      "\u0645"
+    ],
+    "DAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "ERANAMES": [
+      "\u0642\u0628\u0644 \u0627\u0644\u0645\u064a\u0644\u0627\u062f",
+      "\u0645\u064a\u0644\u0627\u062f\u064a"
+    ],
+    "ERAS": [
+      "\u0642.\u0645",
+      "\u0645"
+    ],
+    "FIRSTDAYOFWEEK": 5,
+    "MONTH": [
+      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+      "\u0634\u0628\u0627\u0637",
+      "\u0622\u0630\u0627\u0631",
+      "\u0646\u064a\u0633\u0627\u0646",
+      "\u0623\u064a\u0627\u0631",
+      "\u062d\u0632\u064a\u0631\u0627\u0646",
+      "\u062a\u0645\u0648\u0632",
+      "\u0622\u0628",
+      "\u0623\u064a\u0644\u0648\u0644",
+      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644",
+      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"
+    ],
+    "SHORTDAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "SHORTMONTH": [
+      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+      "\u0634\u0628\u0627\u0637",
+      "\u0622\u0630\u0627\u0631",
+      "\u0646\u064a\u0633\u0627\u0646",
+      "\u0623\u064a\u0627\u0631",
+      "\u062d\u0632\u064a\u0631\u0627\u0646",
+      "\u062a\u0645\u0648\u0632",
+      "\u0622\u0628",
+      "\u0623\u064a\u0644\u0648\u0644",
+      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644",
+      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"
+    ],
+    "STANDALONEMONTH": [
+      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+      "\u0634\u0628\u0627\u0637",
+      "\u0622\u0630\u0627\u0631",
+      "\u0646\u064a\u0633\u0627\u0646",
+      "\u0623\u064a\u0627\u0631",
+      "\u062d\u0632\u064a\u0631\u0627\u0646",
+      "\u062a\u0645\u0648\u0632",
+      "\u0622\u0628",
+      "\u0623\u064a\u0644\u0648\u0644",
+      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644",
+      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      5
+    ],
+    "fullDate": "EEEE\u060c d MMMM\u060c y",
+    "longDate": "d MMMM\u060c y",
+    "medium": "dd\u200f/MM\u200f/y h:mm:ss a",
+    "mediumDate": "dd\u200f/MM\u200f/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d\u200f/M\u200f/y h:mm a",
+    "shortDate": "d\u200f/M\u200f/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u00a3",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ar-sy",
+  "localeID": "ar_SY",
+  "pluralCat": function(n, opt_precision) {  if (n == 0) {    return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  if (n == 2) {    return PLURAL_CATEGORY.TWO;  }  if (n % 100 >= 3 && n % 100 <= 10) {    return PLURAL_CATEGORY.FEW;  }  if (n % 100 >= 11 && n % 100 <= 99) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-td.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-td.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-td.js
new file mode 100644
index 0000000..b28152a
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-td.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0635",
+      "\u0645"
+    ],
+    "DAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "ERANAMES": [
+      "\u0642\u0628\u0644 \u0627\u0644\u0645\u064a\u0644\u0627\u062f",
+      "\u0645\u064a\u0644\u0627\u062f\u064a"
+    ],
+    "ERAS": [
+      "\u0642.\u0645",
+      "\u0645"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "SHORTDAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "SHORTMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "STANDALONEMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE\u060c d MMMM\u060c y",
+    "longDate": "d MMMM\u060c y",
+    "medium": "dd\u200f/MM\u200f/y h:mm:ss a",
+    "mediumDate": "dd\u200f/MM\u200f/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d\u200f/M\u200f/y h:mm a",
+    "shortDate": "d\u200f/M\u200f/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFA",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ar-td",
+  "localeID": "ar_TD",
+  "pluralCat": function(n, opt_precision) {  if (n == 0) {    return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  if (n == 2) {    return PLURAL_CATEGORY.TWO;  }  if (n % 100 >= 3 && n % 100 <= 10) {    return PLURAL_CATEGORY.FEW;  }  if (n % 100 >= 11 && n % 100 <= 99) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-tn.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-tn.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-tn.js
new file mode 100644
index 0000000..eaba505
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-tn.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0635",
+      "\u0645"
+    ],
+    "DAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "ERANAMES": [
+      "\u0642\u0628\u0644 \u0627\u0644\u0645\u064a\u0644\u0627\u062f",
+      "\u0645\u064a\u0644\u0627\u062f\u064a"
+    ],
+    "ERAS": [
+      "\u0642.\u0645",
+      "\u0645"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u062c\u0627\u0646\u0641\u064a",
+      "\u0641\u064a\u0641\u0631\u064a",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0641\u0631\u064a\u0644",
+      "\u0645\u0627\u064a",
+      "\u062c\u0648\u0627\u0646",
+      "\u062c\u0648\u064a\u0644\u064a\u0629",
+      "\u0623\u0648\u062a",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "SHORTDAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "SHORTMONTH": [
+      "\u062c\u0627\u0646\u0641\u064a",
+      "\u0641\u064a\u0641\u0631\u064a",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0641\u0631\u064a\u0644",
+      "\u0645\u0627\u064a",
+      "\u062c\u0648\u0627\u0646",
+      "\u062c\u0648\u064a\u0644\u064a\u0629",
+      "\u0623\u0648\u062a",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "STANDALONEMONTH": [
+      "\u062c\u0627\u0646\u0641\u064a",
+      "\u0641\u064a\u0641\u0631\u064a",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0641\u0631\u064a\u0644",
+      "\u0645\u0627\u064a",
+      "\u062c\u0648\u0627\u0646",
+      "\u062c\u0648\u064a\u0644\u064a\u0629",
+      "\u0623\u0648\u062a",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      5
+    ],
+    "fullDate": "EEEE\u060c d MMMM\u060c y",
+    "longDate": "d MMMM\u060c y",
+    "medium": "dd\u200f/MM\u200f/y h:mm:ss a",
+    "mediumDate": "dd\u200f/MM\u200f/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d\u200f/M\u200f/y h:mm a",
+    "shortDate": "d\u200f/M\u200f/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "din",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ar-tn",
+  "localeID": "ar_TN",
+  "pluralCat": function(n, opt_precision) {  if (n == 0) {    return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  if (n == 2) {    return PLURAL_CATEGORY.TWO;  }  if (n % 100 >= 3 && n % 100 <= 10) {    return PLURAL_CATEGORY.FEW;  }  if (n % 100 >= 11 && n % 100 <= 99) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-ye.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-ye.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-ye.js
new file mode 100644
index 0000000..b0d8356
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-ye.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0635",
+      "\u0645"
+    ],
+    "DAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "ERANAMES": [
+      "\u0642\u0628\u0644 \u0627\u0644\u0645\u064a\u0644\u0627\u062f",
+      "\u0645\u064a\u0644\u0627\u062f\u064a"
+    ],
+    "ERAS": [
+      "\u0642.\u0645",
+      "\u0645"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "SHORTDAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "SHORTMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "STANDALONEMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      5
+    ],
+    "fullDate": "EEEE\u060c d MMMM\u060c y",
+    "longDate": "d MMMM\u060c y",
+    "medium": "dd\u200f/MM\u200f/y h:mm:ss a",
+    "mediumDate": "dd\u200f/MM\u200f/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d\u200f/M\u200f/y h:mm a",
+    "shortDate": "d\u200f/M\u200f/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Rial",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ar-ye",
+  "localeID": "ar_YE",
+  "pluralCat": function(n, opt_precision) {  if (n == 0) {    return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  if (n == 2) {    return PLURAL_CATEGORY.TWO;  }  if (n % 100 >= 3 && n % 100 <= 10) {    return PLURAL_CATEGORY.FEW;  }  if (n % 100 >= 11 && n % 100 <= 99) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar.js
new file mode 100644
index 0000000..1ac223a
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0635",
+      "\u0645"
+    ],
+    "DAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "ERANAMES": [
+      "\u0642\u0628\u0644 \u0627\u0644\u0645\u064a\u0644\u0627\u062f",
+      "\u0645\u064a\u0644\u0627\u062f\u064a"
+    ],
+    "ERAS": [
+      "\u0642.\u0645",
+      "\u0645"
+    ],
+    "FIRSTDAYOFWEEK": 5,
+    "MONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "SHORTDAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "SHORTMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "STANDALONEMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      5
+    ],
+    "fullDate": "EEEE\u060c d MMMM\u060c y",
+    "longDate": "d MMMM\u060c y",
+    "medium": "dd\u200f/MM\u200f/y h:mm:ss a",
+    "mediumDate": "dd\u200f/MM\u200f/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d\u200f/M\u200f/y h:mm a",
+    "shortDate": "d\u200f/M\u200f/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u00a3",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ar",
+  "localeID": "ar",
+  "pluralCat": function(n, opt_precision) {  if (n == 0) {    return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  if (n == 2) {    return PLURAL_CATEGORY.TWO;  }  if (n % 100 >= 3 && n % 100 <= 10) {    return PLURAL_CATEGORY.FEW;  }  if (n % 100 >= 11 && n % 100 <= 99) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_as-in.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_as-in.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_as-in.js
new file mode 100644
index 0000000..a7beeab
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_as-in.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u09aa\u09c2\u09f0\u09cd\u09ac\u09be\u09b9\u09cd\u09a3",
+      "\u0985\u09aa\u09f0\u09be\u09b9\u09cd\u09a3"
+    ],
+    "DAY": [
+      "\u09a6\u09c7\u0993\u09ac\u09be\u09f0",
+      "\u09b8\u09cb\u09ae\u09ac\u09be\u09f0",
+      "\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09f0",
+      "\u09ac\u09c1\u09a7\u09ac\u09be\u09f0",
+      "\u09ac\u09c3\u09b9\u09b7\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09f0",
+      "\u09b6\u09c1\u0995\u09cd\u09f0\u09ac\u09be\u09f0",
+      "\u09b6\u09a8\u09bf\u09ac\u09be\u09f0"
+    ],
+    "ERANAMES": [
+      "BCE",
+      "CE"
+    ],
+    "ERAS": [
+      "BCE",
+      "CE"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u099c\u09be\u09a8\u09c1\u09f1\u09be\u09f0\u09c0",
+      "\u09ab\u09c7\u09ac\u09cd\u09f0\u09c1\u09f1\u09be\u09f0\u09c0",
+      "\u09ae\u09be\u09f0\u09cd\u099a",
+      "\u098f\u09aa\u09cd\u09f0\u09bf\u09b2",
+      "\u09ae\u09c7",
+      "\u099c\u09c1\u09a8",
+      "\u099c\u09c1\u09b2\u09be\u0987",
+      "\u0986\u0997\u09b7\u09cd\u099f",
+      "\u099b\u09c7\u09aa\u09cd\u09a4\u09c7\u09ae\u09cd\u09ac\u09f0",
+      "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09f0",
+      "\u09a8\u09f1\u09c7\u09ae\u09cd\u09ac\u09f0",
+      "\u09a1\u09bf\u099a\u09c7\u09ae\u09cd\u09ac\u09f0"
+    ],
+    "SHORTDAY": [
+      "\u09f0\u09ac\u09bf",
+      "\u09b8\u09cb\u09ae",
+      "\u09ae\u0999\u09cd\u0997\u09b2",
+      "\u09ac\u09c1\u09a7",
+      "\u09ac\u09c3\u09b9\u09b7\u09cd\u09aa\u09a4\u09bf",
+      "\u09b6\u09c1\u0995\u09cd\u09f0",
+      "\u09b6\u09a8\u09bf"
+    ],
+    "SHORTMONTH": [
+      "\u099c\u09be\u09a8\u09c1",
+      "\u09ab\u09c7\u09ac\u09cd\u09f0\u09c1",
+      "\u09ae\u09be\u09f0\u09cd\u099a",
+      "\u098f\u09aa\u09cd\u09f0\u09bf\u09b2",
+      "\u09ae\u09c7",
+      "\u099c\u09c1\u09a8",
+      "\u099c\u09c1\u09b2\u09be\u0987",
+      "\u0986\u0997",
+      "\u09b8\u09c7\u09aa\u09cd\u099f",
+      "\u0985\u0995\u09cd\u099f\u09cb",
+      "\u09a8\u09ad\u09c7",
+      "\u09a1\u09bf\u09b8\u09c7"
+    ],
+    "STANDALONEMONTH": [
+      "\u099c\u09be\u09a8\u09c1\u09f1\u09be\u09f0\u09c0",
+      "\u09ab\u09c7\u09ac\u09cd\u09f0\u09c1\u09f1\u09be\u09f0\u09c0",
+      "\u09ae\u09be\u09f0\u09cd\u099a",
+      "\u098f\u09aa\u09cd\u09f0\u09bf\u09b2",
+      "\u09ae\u09c7",
+      "\u099c\u09c1\u09a8",
+      "\u099c\u09c1\u09b2\u09be\u0987",
+      "\u0986\u0997\u09b7\u09cd\u099f",
+      "\u099b\u09c7\u09aa\u09cd\u09a4\u09c7\u09ae\u09cd\u09ac\u09f0",
+      "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09f0",
+      "\u09a8\u09f1\u09c7\u09ae\u09cd\u09ac\u09f0",
+      "\u09a1\u09bf\u099a\u09c7\u09ae\u09cd\u09ac\u09f0"
+    ],
+    "WEEKENDRANGE": [
+      6,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM, y",
+    "longDate": "d MMMM, y",
+    "medium": "dd-MM-y h.mm.ss a",
+    "mediumDate": "dd-MM-y",
+    "mediumTime": "h.mm.ss a",
+    "short": "d-M-y h.mm. a",
+    "shortDate": "d-M-y",
+    "shortTime": "h.mm. a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20b9",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "as-in",
+  "localeID": "as_IN",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_as.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_as.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_as.js
new file mode 100644
index 0000000..6c4fd51
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_as.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u09aa\u09c2\u09f0\u09cd\u09ac\u09be\u09b9\u09cd\u09a3",
+      "\u0985\u09aa\u09f0\u09be\u09b9\u09cd\u09a3"
+    ],
+    "DAY": [
+      "\u09a6\u09c7\u0993\u09ac\u09be\u09f0",
+      "\u09b8\u09cb\u09ae\u09ac\u09be\u09f0",
+      "\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09f0",
+      "\u09ac\u09c1\u09a7\u09ac\u09be\u09f0",
+      "\u09ac\u09c3\u09b9\u09b7\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09f0",
+      "\u09b6\u09c1\u0995\u09cd\u09f0\u09ac\u09be\u09f0",
+      "\u09b6\u09a8\u09bf\u09ac\u09be\u09f0"
+    ],
+    "ERANAMES": [
+      "BCE",
+      "CE"
+    ],
+    "ERAS": [
+      "BCE",
+      "CE"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u099c\u09be\u09a8\u09c1\u09f1\u09be\u09f0\u09c0",
+      "\u09ab\u09c7\u09ac\u09cd\u09f0\u09c1\u09f1\u09be\u09f0\u09c0",
+      "\u09ae\u09be\u09f0\u09cd\u099a",
+      "\u098f\u09aa\u09cd\u09f0\u09bf\u09b2",
+      "\u09ae\u09c7",
+      "\u099c\u09c1\u09a8",
+      "\u099c\u09c1\u09b2\u09be\u0987",
+      "\u0986\u0997\u09b7\u09cd\u099f",
+      "\u099b\u09c7\u09aa\u09cd\u09a4\u09c7\u09ae\u09cd\u09ac\u09f0",
+      "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09f0",
+      "\u09a8\u09f1\u09c7\u09ae\u09cd\u09ac\u09f0",
+      "\u09a1\u09bf\u099a\u09c7\u09ae\u09cd\u09ac\u09f0"
+    ],
+    "SHORTDAY": [
+      "\u09f0\u09ac\u09bf",
+      "\u09b8\u09cb\u09ae",
+      "\u09ae\u0999\u09cd\u0997\u09b2",
+      "\u09ac\u09c1\u09a7",
+      "\u09ac\u09c3\u09b9\u09b7\u09cd\u09aa\u09a4\u09bf",
+      "\u09b6\u09c1\u0995\u09cd\u09f0",
+      "\u09b6\u09a8\u09bf"
+    ],
+    "SHORTMONTH": [
+      "\u099c\u09be\u09a8\u09c1",
+      "\u09ab\u09c7\u09ac\u09cd\u09f0\u09c1",
+      "\u09ae\u09be\u09f0\u09cd\u099a",
+      "\u098f\u09aa\u09cd\u09f0\u09bf\u09b2",
+      "\u09ae\u09c7",
+      "\u099c\u09c1\u09a8",
+      "\u099c\u09c1\u09b2\u09be\u0987",
+      "\u0986\u0997",
+      "\u09b8\u09c7\u09aa\u09cd\u099f",
+      "\u0985\u0995\u09cd\u099f\u09cb",
+      "\u09a8\u09ad\u09c7",
+      "\u09a1\u09bf\u09b8\u09c7"
+    ],
+    "STANDALONEMONTH": [
+      "\u099c\u09be\u09a8\u09c1\u09f1\u09be\u09f0\u09c0",
+      "\u09ab\u09c7\u09ac\u09cd\u09f0\u09c1\u09f1\u09be\u09f0\u09c0",
+      "\u09ae\u09be\u09f0\u09cd\u099a",
+      "\u098f\u09aa\u09cd\u09f0\u09bf\u09b2",
+      "\u09ae\u09c7",
+      "\u099c\u09c1\u09a8",
+      "\u099c\u09c1\u09b2\u09be\u0987",
+      "\u0986\u0997\u09b7\u09cd\u099f",
+      "\u099b\u09c7\u09aa\u09cd\u09a4\u09c7\u09ae\u09cd\u09ac\u09f0",
+      "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09f0",
+      "\u09a8\u09f1\u09c7\u09ae\u09cd\u09ac\u09f0",
+      "\u09a1\u09bf\u099a\u09c7\u09ae\u09cd\u09ac\u09f0"
+    ],
+    "WEEKENDRANGE": [
+      6,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM, y",
+    "longDate": "d MMMM, y",
+    "medium": "dd-MM-y h.mm.ss a",
+    "mediumDate": "dd-MM-y",
+    "mediumTime": "h.mm.ss a",
+    "short": "d-M-y h.mm. a",
+    "shortDate": "d-M-y",
+    "shortTime": "h.mm. a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20b9",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "as",
+  "localeID": "as",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_asa-tz.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_asa-tz.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_asa-tz.js
new file mode 100644
index 0000000..8bff725
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_asa-tz.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "icheheavo",
+      "ichamthi"
+    ],
+    "DAY": [
+      "Jumapili",
+      "Jumatatu",
+      "Jumanne",
+      "Jumatano",
+      "Alhamisi",
+      "Ijumaa",
+      "Jumamosi"
+    ],
+    "ERANAMES": [
+      "Kabla yakwe Yethu",
+      "Baada yakwe Yethu"
+    ],
+    "ERAS": [
+      "KM",
+      "BM"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Januari",
+      "Februari",
+      "Machi",
+      "Aprili",
+      "Mei",
+      "Juni",
+      "Julai",
+      "Agosti",
+      "Septemba",
+      "Oktoba",
+      "Novemba",
+      "Desemba"
+    ],
+    "SHORTDAY": [
+      "Jpi",
+      "Jtt",
+      "Jnn",
+      "Jtn",
+      "Alh",
+      "Ijm",
+      "Jmo"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mac",
+      "Apr",
+      "Mei",
+      "Jun",
+      "Jul",
+      "Ago",
+      "Sep",
+      "Okt",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "Januari",
+      "Februari",
+      "Machi",
+      "Aprili",
+      "Mei",
+      "Juni",
+      "Julai",
+      "Agosti",
+      "Septemba",
+      "Oktoba",
+      "Novemba",
+      "Desemba"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "TSh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "asa-tz",
+  "localeID": "asa_TZ",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_asa.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_asa.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_asa.js
new file mode 100644
index 0000000..c6e4c17
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_asa.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "icheheavo",
+      "ichamthi"
+    ],
+    "DAY": [
+      "Jumapili",
+      "Jumatatu",
+      "Jumanne",
+      "Jumatano",
+      "Alhamisi",
+      "Ijumaa",
+      "Jumamosi"
+    ],
+    "ERANAMES": [
+      "Kabla yakwe Yethu",
+      "Baada yakwe Yethu"
+    ],
+    "ERAS": [
+      "KM",
+      "BM"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Januari",
+      "Februari",
+      "Machi",
+      "Aprili",
+      "Mei",
+      "Juni",
+      "Julai",
+      "Agosti",
+      "Septemba",
+      "Oktoba",
+      "Novemba",
+      "Desemba"
+    ],
+    "SHORTDAY": [
+      "Jpi",
+      "Jtt",
+      "Jnn",
+      "Jtn",
+      "Alh",
+      "Ijm",
+      "Jmo"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mac",
+      "Apr",
+      "Mei",
+      "Jun",
+      "Jul",
+      "Ago",
+      "Sep",
+      "Okt",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "Januari",
+      "Februari",
+      "Machi",
+      "Aprili",
+      "Mei",
+      "Juni",
+      "Julai",
+      "Agosti",
+      "Septemba",
+      "Oktoba",
+      "Novemba",
+      "Desemba"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "TSh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "asa",
+  "localeID": "asa",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ast-es.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ast-es.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ast-es.js
new file mode 100644
index 0000000..7d429d6
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ast-es.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "domingu",
+      "llunes",
+      "martes",
+      "mi\u00e9rcoles",
+      "xueves",
+      "vienres",
+      "s\u00e1badu"
+    ],
+    "ERANAMES": [
+      "a.C.",
+      "d.C."
+    ],
+    "ERAS": [
+      "a.C.",
+      "d.C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "de xineru",
+      "de febreru",
+      "de marzu",
+      "d\u2019abril",
+      "de mayu",
+      "de xunu",
+      "de xunetu",
+      "d\u2019agostu",
+      "de setiembre",
+      "d\u2019ochobre",
+      "de payares",
+      "d\u2019avientu"
+    ],
+    "SHORTDAY": [
+      "dom",
+      "llu",
+      "mar",
+      "mie",
+      "xue",
+      "vie",
+      "sab"
+    ],
+    "SHORTMONTH": [
+      "xin",
+      "feb",
+      "mar",
+      "abr",
+      "may",
+      "xun",
+      "xnt",
+      "ago",
+      "set",
+      "och",
+      "pay",
+      "avi"
+    ],
+    "STANDALONEMONTH": [
+      "xineru",
+      "febreru",
+      "marzu",
+      "abril",
+      "mayu",
+      "xunu",
+      "xunetu",
+      "agostu",
+      "setiembre",
+      "ochobre",
+      "payares",
+      "avientu"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM 'de' y",
+    "longDate": "d MMMM 'de' y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/yy HH:mm",
+    "shortDate": "d/M/yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "ast-es",
+  "localeID": "ast_ES",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ast.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ast.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ast.js
new file mode 100644
index 0000000..38058bc
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ast.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "domingu",
+      "llunes",
+      "martes",
+      "mi\u00e9rcoles",
+      "xueves",
+      "vienres",
+      "s\u00e1badu"
+    ],
+    "ERANAMES": [
+      "a.C.",
+      "d.C."
+    ],
+    "ERAS": [
+      "a.C.",
+      "d.C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "de xineru",
+      "de febreru",
+      "de marzu",
+      "d\u2019abril",
+      "de mayu",
+      "de xunu",
+      "de xunetu",
+      "d\u2019agostu",
+      "de setiembre",
+      "d\u2019ochobre",
+      "de payares",
+      "d\u2019avientu"
+    ],
+    "SHORTDAY": [
+      "dom",
+      "llu",
+      "mar",
+      "mie",
+      "xue",
+      "vie",
+      "sab"
+    ],
+    "SHORTMONTH": [
+      "xin",
+      "feb",
+      "mar",
+      "abr",
+      "may",
+      "xun",
+      "xnt",
+      "ago",
+      "set",
+      "och",
+      "pay",
+      "avi"
+    ],
+    "STANDALONEMONTH": [
+      "xineru",
+      "febreru",
+      "marzu",
+      "abril",
+      "mayu",
+      "xunu",
+      "xunetu",
+      "agostu",
+      "setiembre",
+      "ochobre",
+      "payares",
+      "avientu"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM 'de' y",
+    "longDate": "d MMMM 'de' y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/yy HH:mm",
+    "shortDate": "d/M/yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "ast",
+  "localeID": "ast",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_az-cyrl-az.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_az-cyrl-az.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_az-cyrl-az.js
new file mode 100644
index 0000000..83075e7
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_az-cyrl-az.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "\u0431\u0430\u0437\u0430\u0440",
+      "\u0431\u0430\u0437\u0430\u0440 \u0435\u0440\u0442\u04d9\u0441\u0438",
+      "\u0447\u04d9\u0440\u0448\u04d9\u043d\u0431\u04d9 \u0430\u0445\u0448\u0430\u043c\u044b",
+      "\u0447\u04d9\u0440\u0448\u04d9\u043d\u0431\u04d9",
+      "\u04b9\u04af\u043c\u04d9 \u0430\u0445\u0448\u0430\u043c\u044b",
+      "\u04b9\u04af\u043c\u04d9",
+      "\u0448\u04d9\u043d\u0431\u04d9"
+    ],
+    "ERANAMES": [
+      "BCE",
+      "CE"
+    ],
+    "ERAS": [
+      "BCE",
+      "CE"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u0458\u0430\u043d\u0432\u0430\u0440",
+      "\u0444\u0435\u0432\u0440\u0430\u043b",
+      "\u043c\u0430\u0440\u0442",
+      "\u0430\u043f\u0440\u0435\u043b",
+      "\u043c\u0430\u0439",
+      "\u0438\u0458\u0443\u043d",
+      "\u0438\u0458\u0443\u043b",
+      "\u0430\u0432\u0433\u0443\u0441\u0442",
+      "\u0441\u0435\u043d\u0442\u0458\u0430\u0431\u0440",
+      "\u043e\u043a\u0442\u0458\u0430\u0431\u0440",
+      "\u043d\u043e\u0458\u0430\u0431\u0440",
+      "\u0434\u0435\u043a\u0430\u0431\u0440"
+    ],
+    "SHORTDAY": [
+      "\u0431\u0430\u0437\u0430\u0440",
+      "\u0431\u0430\u0437\u0430\u0440 \u0435\u0440\u0442\u04d9\u0441\u0438",
+      "\u0447\u04d9\u0440\u0448\u04d9\u043d\u0431\u04d9 \u0430\u0445\u0448\u0430\u043c\u044b",
+      "\u0447\u04d9\u0440\u0448\u04d9\u043d\u0431\u04d9",
+      "\u04b9\u04af\u043c\u04d9 \u0430\u0445\u0448\u0430\u043c\u044b",
+      "\u04b9\u04af\u043c\u04d9",
+      "\u0448\u04d9\u043d\u0431\u04d9"
+    ],
+    "SHORTMONTH": [
+      "\u0458\u0430\u043d\u0432\u0430\u0440",
+      "\u0444\u0435\u0432\u0440\u0430\u043b",
+      "\u043c\u0430\u0440\u0442",
+      "\u0430\u043f\u0440\u0435\u043b",
+      "\u043c\u0430\u0439",
+      "\u0438\u0458\u0443\u043d",
+      "\u0438\u0458\u0443\u043b",
+      "\u0430\u0432\u0433\u0443\u0441\u0442",
+      "\u0441\u0435\u043d\u0442\u0458\u0430\u0431\u0440",
+      "\u043e\u043a\u0442\u0458\u0430\u0431\u0440",
+      "\u043d\u043e\u0458\u0430\u0431\u0440",
+      "\u0434\u0435\u043a\u0430\u0431\u0440"
+    ],
+    "STANDALONEMONTH": [
+      "\u0458\u0430\u043d\u0432\u0430\u0440",
+      "\u0444\u0435\u0432\u0440\u0430\u043b",
+      "\u043c\u0430\u0440\u0442",
+      "\u0430\u043f\u0440\u0435\u043b",
+      "\u043c\u0430\u0439",
+      "\u0438\u0458\u0443\u043d",
+      "\u0438\u0458\u0443\u043b",
+      "\u0430\u0432\u0433\u0443\u0441\u0442",
+      "\u0441\u0435\u043d\u0442\u0458\u0430\u0431\u0440",
+      "\u043e\u043a\u0442\u0458\u0430\u0431\u0440",
+      "\u043d\u043e\u0458\u0430\u0431\u0440",
+      "\u0434\u0435\u043a\u0430\u0431\u0440"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d, MMMM, y",
+    "longDate": "d MMMM, y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.yy HH:mm",
+    "shortDate": "dd.MM.yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "man.",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "az-cyrl-az",
+  "localeID": "az_Cyrl_AZ",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_az-cyrl.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_az-cyrl.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_az-cyrl.js
new file mode 100644
index 0000000..256f4e3
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_az-cyrl.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "\u0431\u0430\u0437\u0430\u0440",
+      "\u0431\u0430\u0437\u0430\u0440 \u0435\u0440\u0442\u04d9\u0441\u0438",
+      "\u0447\u04d9\u0440\u0448\u04d9\u043d\u0431\u04d9 \u0430\u0445\u0448\u0430\u043c\u044b",
+      "\u0447\u04d9\u0440\u0448\u04d9\u043d\u0431\u04d9",
+      "\u04b9\u04af\u043c\u04d9 \u0430\u0445\u0448\u0430\u043c\u044b",
+      "\u04b9\u04af\u043c\u04d9",
+      "\u0448\u04d9\u043d\u0431\u04d9"
+    ],
+    "ERANAMES": [
+      "BCE",
+      "CE"
+    ],
+    "ERAS": [
+      "BCE",
+      "CE"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u0458\u0430\u043d\u0432\u0430\u0440",
+      "\u0444\u0435\u0432\u0440\u0430\u043b",
+      "\u043c\u0430\u0440\u0442",
+      "\u0430\u043f\u0440\u0435\u043b",
+      "\u043c\u0430\u0439",
+      "\u0438\u0458\u0443\u043d",
+      "\u0438\u0458\u0443\u043b",
+      "\u0430\u0432\u0433\u0443\u0441\u0442",
+      "\u0441\u0435\u043d\u0442\u0458\u0430\u0431\u0440",
+      "\u043e\u043a\u0442\u0458\u0430\u0431\u0440",
+      "\u043d\u043e\u0458\u0430\u0431\u0440",
+      "\u0434\u0435\u043a\u0430\u0431\u0440"
+    ],
+    "SHORTDAY": [
+      "\u0431\u0430\u0437\u0430\u0440",
+      "\u0431\u0430\u0437\u0430\u0440 \u0435\u0440\u0442\u04d9\u0441\u0438",
+      "\u0447\u04d9\u0440\u0448\u04d9\u043d\u0431\u04d9 \u0430\u0445\u0448\u0430\u043c\u044b",
+      "\u0447\u04d9\u0440\u0448\u04d9\u043d\u0431\u04d9",
+      "\u04b9\u04af\u043c\u04d9 \u0430\u0445\u0448\u0430\u043c\u044b",
+      "\u04b9\u04af\u043c\u04d9",
+      "\u0448\u04d9\u043d\u0431\u04d9"
+    ],
+    "SHORTMONTH": [
+      "\u0458\u0430\u043d\u0432\u0430\u0440",
+      "\u0444\u0435\u0432\u0440\u0430\u043b",
+      "\u043c\u0430\u0440\u0442",
+      "\u0430\u043f\u0440\u0435\u043b",
+      "\u043c\u0430\u0439",
+      "\u0438\u0458\u0443\u043d",
+      "\u0438\u0458\u0443\u043b",
+      "\u0430\u0432\u0433\u0443\u0441\u0442",
+      "\u0441\u0435\u043d\u0442\u0458\u0430\u0431\u0440",
+      "\u043e\u043a\u0442\u0458\u0430\u0431\u0440",
+      "\u043d\u043e\u0458\u0430\u0431\u0440",
+      "\u0434\u0435\u043a\u0430\u0431\u0440"
+    ],
+    "STANDALONEMONTH": [
+      "\u0458\u0430\u043d\u0432\u0430\u0440",
+      "\u0444\u0435\u0432\u0440\u0430\u043b",
+      "\u043c\u0430\u0440\u0442",
+      "\u0430\u043f\u0440\u0435\u043b",
+      "\u043c\u0430\u0439",
+      "\u0438\u0458\u0443\u043d",
+      "\u0438\u0458\u0443\u043b",
+      "\u0430\u0432\u0433\u0443\u0441\u0442",
+      "\u0441\u0435\u043d\u0442\u0458\u0430\u0431\u0440",
+      "\u043e\u043a\u0442\u0458\u0430\u0431\u0440",
+      "\u043d\u043e\u0458\u0430\u0431\u0440",
+      "\u0434\u0435\u043a\u0430\u0431\u0440"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d, MMMM, y",
+    "longDate": "d MMMM, y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.yy HH:mm",
+    "shortDate": "dd.MM.yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "man.",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "az-cyrl",
+  "localeID": "az_Cyrl",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_az-latn-az.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_az-latn-az.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_az-latn-az.js
new file mode 100644
index 0000000..8daf7b1
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_az-latn-az.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "bazar",
+      "bazar ert\u0259si",
+      "\u00e7\u0259r\u015f\u0259nb\u0259 ax\u015fam\u0131",
+      "\u00e7\u0259r\u015f\u0259nb\u0259",
+      "c\u00fcm\u0259 ax\u015fam\u0131",
+      "c\u00fcm\u0259",
+      "\u015f\u0259nb\u0259"
+    ],
+    "ERANAMES": [
+      "eram\u0131zdan \u0259vv\u0259l",
+      "bizim eram\u0131z\u0131n"
+    ],
+    "ERAS": [
+      "e.\u0259.",
+      "b.e."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "yanvar",
+      "fevral",
+      "mart",
+      "aprel",
+      "may",
+      "iyun",
+      "iyul",
+      "avqust",
+      "sentyabr",
+      "oktyabr",
+      "noyabr",
+      "dekabr"
+    ],
+    "SHORTDAY": [
+      "B.",
+      "B.E.",
+      "\u00c7.A.",
+      "\u00c7.",
+      "C.A.",
+      "C.",
+      "\u015e."
+    ],
+    "SHORTMONTH": [
+      "yan",
+      "fev",
+      "mar",
+      "apr",
+      "may",
+      "iyn",
+      "iyl",
+      "avq",
+      "sen",
+      "okt",
+      "noy",
+      "dek"
+    ],
+    "STANDALONEMONTH": [
+      "Yanvar",
+      "Fevral",
+      "Mart",
+      "Aprel",
+      "May",
+      "\u0130yun",
+      "\u0130yul",
+      "Avqust",
+      "Sentyabr",
+      "Oktyabr",
+      "Noyabr",
+      "Dekabr"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "d MMMM y, EEEE",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.yy HH:mm",
+    "shortDate": "dd.MM.yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "man.",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "az-latn-az",
+  "localeID": "az_Latn_AZ",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_az-latn.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_az-latn.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_az-latn.js
new file mode 100644
index 0000000..145c3c3
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_az-latn.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "bazar",
+      "bazar ert\u0259si",
+      "\u00e7\u0259r\u015f\u0259nb\u0259 ax\u015fam\u0131",
+      "\u00e7\u0259r\u015f\u0259nb\u0259",
+      "c\u00fcm\u0259 ax\u015fam\u0131",
+      "c\u00fcm\u0259",
+      "\u015f\u0259nb\u0259"
+    ],
+    "ERANAMES": [
+      "eram\u0131zdan \u0259vv\u0259l",
+      "bizim eram\u0131z\u0131n"
+    ],
+    "ERAS": [
+      "e.\u0259.",
+      "b.e."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "yanvar",
+      "fevral",
+      "mart",
+      "aprel",
+      "may",
+      "iyun",
+      "iyul",
+      "avqust",
+      "sentyabr",
+      "oktyabr",
+      "noyabr",
+      "dekabr"
+    ],
+    "SHORTDAY": [
+      "B.",
+      "B.E.",
+      "\u00c7.A.",
+      "\u00c7.",
+      "C.A.",
+      "C.",
+      "\u015e."
+    ],
+    "SHORTMONTH": [
+      "yan",
+      "fev",
+      "mar",
+      "apr",
+      "may",
+      "iyn",
+      "iyl",
+      "avq",
+      "sen",
+      "okt",
+      "noy",
+      "dek"
+    ],
+    "STANDALONEMONTH": [
+      "Yanvar",
+      "Fevral",
+      "Mart",
+      "Aprel",
+      "May",
+      "\u0130yun",
+      "\u0130yul",
+      "Avqust",
+      "Sentyabr",
+      "Oktyabr",
+      "Noyabr",
+      "Dekabr"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "d MMMM y, EEEE",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.yy HH:mm",
+    "shortDate": "dd.MM.yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "man.",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "az-latn",
+  "localeID": "az_Latn",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_az.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_az.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_az.js
new file mode 100644
index 0000000..84791b3
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_az.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "bazar",
+      "bazar ert\u0259si",
+      "\u00e7\u0259r\u015f\u0259nb\u0259 ax\u015fam\u0131",
+      "\u00e7\u0259r\u015f\u0259nb\u0259",
+      "c\u00fcm\u0259 ax\u015fam\u0131",
+      "c\u00fcm\u0259",
+      "\u015f\u0259nb\u0259"
+    ],
+    "ERANAMES": [
+      "eram\u0131zdan \u0259vv\u0259l",
+      "bizim eram\u0131z\u0131n"
+    ],
+    "ERAS": [
+      "e.\u0259.",
+      "b.e."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "yanvar",
+      "fevral",
+      "mart",
+      "aprel",
+      "may",
+      "iyun",
+      "iyul",
+      "avqust",
+      "sentyabr",
+      "oktyabr",
+      "noyabr",
+      "dekabr"
+    ],
+    "SHORTDAY": [
+      "B.",
+      "B.E.",
+      "\u00c7.A.",
+      "\u00c7.",
+      "C.A.",
+      "C.",
+      "\u015e."
+    ],
+    "SHORTMONTH": [
+      "yan",
+      "fev",
+      "mar",
+      "apr",
+      "may",
+      "iyn",
+      "iyl",
+      "avq",
+      "sen",
+      "okt",
+      "noy",
+      "dek"
+    ],
+    "STANDALONEMONTH": [
+      "Yanvar",
+      "Fevral",
+      "Mart",
+      "Aprel",
+      "May",
+      "\u0130yun",
+      "\u0130yul",
+      "Avqust",
+      "Sentyabr",
+      "Oktyabr",
+      "Noyabr",
+      "Dekabr"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "d MMMM y, EEEE",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.yy HH:mm",
+    "shortDate": "dd.MM.yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "man.",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "az",
+  "localeID": "az",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bas-cm.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bas-cm.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bas-cm.js
new file mode 100644
index 0000000..0511efc
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bas-cm.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "I bik\u025b\u0302gl\u00e0",
+      "I \u0253ugaj\u0254p"
+    ],
+    "DAY": [
+      "\u014bgw\u00e0 n\u0254\u0302y",
+      "\u014bgw\u00e0 nja\u014bgumba",
+      "\u014bgw\u00e0 \u00fbm",
+      "\u014bgw\u00e0 \u014bg\u00ea",
+      "\u014bgw\u00e0 mb\u0254k",
+      "\u014bgw\u00e0 k\u0254\u0254",
+      "\u014bgw\u00e0 j\u00f4n"
+    ],
+    "ERANAMES": [
+      "bis\u016b bi Yes\u00f9 Kr\u01d0st\u00f2",
+      "i mb\u016bs Yes\u00f9 Kr\u01d0st\u00f2"
+    ],
+    "ERAS": [
+      "b.Y.K",
+      "m.Y.K"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "K\u0254nd\u0254\u014b",
+      "M\u00e0c\u025b\u0302l",
+      "M\u00e0t\u00f9mb",
+      "M\u00e0top",
+      "M\u0300puy\u025b",
+      "H\u00ecl\u00f2nd\u025b\u0300",
+      "Nj\u00e8b\u00e0",
+      "H\u00ecka\u014b",
+      "D\u00ecp\u0254\u0300s",
+      "B\u00ec\u00f2\u00f4m",
+      "M\u00e0y\u025bs\u00e8p",
+      "L\u00ecbuy li \u0144y\u00e8e"
+    ],
+    "SHORTDAY": [
+      "n\u0254y",
+      "nja",
+      "uum",
+      "\u014bge",
+      "mb\u0254",
+      "k\u0254\u0254",
+      "jon"
+    ],
+    "SHORTMONTH": [
+      "k\u0254n",
+      "mac",
+      "mat",
+      "mto",
+      "mpu",
+      "hil",
+      "nje",
+      "hik",
+      "dip",
+      "bio",
+      "may",
+      "li\u0253"
+    ],
+    "STANDALONEMONTH": [
+      "K\u0254nd\u0254\u014b",
+      "M\u00e0c\u025b\u0302l",
+      "M\u00e0t\u00f9mb",
+      "M\u00e0top",
+      "M\u0300puy\u025b",
+      "H\u00ecl\u00f2nd\u025b\u0300",
+      "Nj\u00e8b\u00e0",
+      "H\u00ecka\u014b",
+      "D\u00ecp\u0254\u0300s",
+      "B\u00ec\u00f2\u00f4m",
+      "M\u00e0y\u025bs\u00e8p",
+      "L\u00ecbuy li \u0144y\u00e8e"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "bas-cm",
+  "localeID": "bas_CM",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bas.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bas.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bas.js
new file mode 100644
index 0000000..3bdcaed
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bas.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "I bik\u025b\u0302gl\u00e0",
+      "I \u0253ugaj\u0254p"
+    ],
+    "DAY": [
+      "\u014bgw\u00e0 n\u0254\u0302y",
+      "\u014bgw\u00e0 nja\u014bgumba",
+      "\u014bgw\u00e0 \u00fbm",
+      "\u014bgw\u00e0 \u014bg\u00ea",
+      "\u014bgw\u00e0 mb\u0254k",
+      "\u014bgw\u00e0 k\u0254\u0254",
+      "\u014bgw\u00e0 j\u00f4n"
+    ],
+    "ERANAMES": [
+      "bis\u016b bi Yes\u00f9 Kr\u01d0st\u00f2",
+      "i mb\u016bs Yes\u00f9 Kr\u01d0st\u00f2"
+    ],
+    "ERAS": [
+      "b.Y.K",
+      "m.Y.K"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "K\u0254nd\u0254\u014b",
+      "M\u00e0c\u025b\u0302l",
+      "M\u00e0t\u00f9mb",
+      "M\u00e0top",
+      "M\u0300puy\u025b",
+      "H\u00ecl\u00f2nd\u025b\u0300",
+      "Nj\u00e8b\u00e0",
+      "H\u00ecka\u014b",
+      "D\u00ecp\u0254\u0300s",
+      "B\u00ec\u00f2\u00f4m",
+      "M\u00e0y\u025bs\u00e8p",
+      "L\u00ecbuy li \u0144y\u00e8e"
+    ],
+    "SHORTDAY": [
+      "n\u0254y",
+      "nja",
+      "uum",
+      "\u014bge",
+      "mb\u0254",
+      "k\u0254\u0254",
+      "jon"
+    ],
+    "SHORTMONTH": [
+      "k\u0254n",
+      "mac",
+      "mat",
+      "mto",
+      "mpu",
+      "hil",
+      "nje",
+      "hik",
+      "dip",
+      "bio",
+      "may",
+      "li\u0253"
+    ],
+    "STANDALONEMONTH": [
+      "K\u0254nd\u0254\u014b",
+      "M\u00e0c\u025b\u0302l",
+      "M\u00e0t\u00f9mb",
+      "M\u00e0top",
+      "M\u0300puy\u025b",
+      "H\u00ecl\u00f2nd\u025b\u0300",
+      "Nj\u00e8b\u00e0",
+      "H\u00ecka\u014b",
+      "D\u00ecp\u0254\u0300s",
+      "B\u00ec\u00f2\u00f4m",
+      "M\u00e0y\u025bs\u00e8p",
+      "L\u00ecbuy li \u0144y\u00e8e"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "bas",
+  "localeID": "bas",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_be-by.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_be-by.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_be-by.js
new file mode 100644
index 0000000..dd98e65
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_be-by.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0434\u0430 \u043f\u0430\u043b\u0443\u0434\u043d\u044f",
+      "\u043f\u0430\u0441\u043b\u044f \u043f\u0430\u043b\u0443\u0434\u043d\u044f"
+    ],
+    "DAY": [
+      "\u043d\u044f\u0434\u0437\u0435\u043b\u044f",
+      "\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a",
+      "\u0430\u045e\u0442\u043e\u0440\u0430\u043a",
+      "\u0441\u0435\u0440\u0430\u0434\u0430",
+      "\u0447\u0430\u0446\u0432\u0435\u0440",
+      "\u043f\u044f\u0442\u043d\u0456\u0446\u0430",
+      "\u0441\u0443\u0431\u043e\u0442\u0430"
+    ],
+    "ERANAMES": [
+      "\u0434\u0430 \u043d.\u044d.",
+      "\u043d.\u044d."
+    ],
+    "ERAS": [
+      "\u0434\u0430 \u043d.\u044d.",
+      "\u043d.\u044d."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044f",
+      "\u043b\u044e\u0442\u0430\u0433\u0430",
+      "\u0441\u0430\u043a\u0430\u0432\u0456\u043a\u0430",
+      "\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a\u0430",
+      "\u043c\u0430\u044f",
+      "\u0447\u044d\u0440\u0432\u0435\u043d\u044f",
+      "\u043b\u0456\u043f\u0435\u043d\u044f",
+      "\u0436\u043d\u0456\u045e\u043d\u044f",
+      "\u0432\u0435\u0440\u0430\u0441\u043d\u044f",
+      "\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a\u0430",
+      "\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434\u0430",
+      "\u0441\u043d\u0435\u0436\u043d\u044f"
+    ],
+    "SHORTDAY": [
+      "\u043d\u0434",
+      "\u043f\u043d",
+      "\u0430\u045e",
+      "\u0441\u0440",
+      "\u0447\u0446",
+      "\u043f\u0442",
+      "\u0441\u0431"
+    ],
+    "SHORTMONTH": [
+      "\u0441\u0442\u0443",
+      "\u043b\u044e\u0442",
+      "\u0441\u0430\u043a",
+      "\u043a\u0440\u0430",
+      "\u043c\u0430\u044f",
+      "\u0447\u044d\u0440",
+      "\u043b\u0456\u043f",
+      "\u0436\u043d\u0456",
+      "\u0432\u0435\u0440",
+      "\u043a\u0430\u0441",
+      "\u043b\u0456\u0441",
+      "\u0441\u043d\u0435"
+    ],
+    "STANDALONEMONTH": [
+      "\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044c",
+      "\u043b\u044e\u0442\u044b",
+      "\u0441\u0430\u043a\u0430\u0432\u0456\u043a",
+      "\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a",
+      "\u043c\u0430\u0439",
+      "\u0447\u044d\u0440\u0432\u0435\u043d\u044c",
+      "\u043b\u0456\u043f\u0435\u043d\u044c",
+      "\u0436\u043d\u0456\u0432\u0435\u043d\u044c",
+      "\u0432\u0435\u0440\u0430\u0441\u0435\u043d\u044c",
+      "\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a",
+      "\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434",
+      "\u0441\u043d\u0435\u0436\u0430\u043d\u044c"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d.M.y HH.mm.ss",
+    "mediumDate": "d.M.y",
+    "mediumTime": "HH.mm.ss",
+    "short": "d.M.yy HH.mm",
+    "shortDate": "d.M.yy",
+    "shortTime": "HH.mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "BYR",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "be-by",
+  "localeID": "be_BY",
+  "pluralCat": function(n, opt_precision) {  if (n % 10 == 1 && n % 100 != 11) {    return PLURAL_CATEGORY.ONE;  }  if (n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) {    return PLURAL_CATEGORY.FEW;  }  if (n % 10 == 0 || n % 10 >= 5 && n % 10 <= 9 || n % 100 >= 11 && n % 100 <= 14) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_be.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_be.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_be.js
new file mode 100644
index 0000000..7f557eb
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_be.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0434\u0430 \u043f\u0430\u043b\u0443\u0434\u043d\u044f",
+      "\u043f\u0430\u0441\u043b\u044f \u043f\u0430\u043b\u0443\u0434\u043d\u044f"
+    ],
+    "DAY": [
+      "\u043d\u044f\u0434\u0437\u0435\u043b\u044f",
+      "\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a",
+      "\u0430\u045e\u0442\u043e\u0440\u0430\u043a",
+      "\u0441\u0435\u0440\u0430\u0434\u0430",
+      "\u0447\u0430\u0446\u0432\u0435\u0440",
+      "\u043f\u044f\u0442\u043d\u0456\u0446\u0430",
+      "\u0441\u0443\u0431\u043e\u0442\u0430"
+    ],
+    "ERANAMES": [
+      "\u0434\u0430 \u043d.\u044d.",
+      "\u043d.\u044d."
+    ],
+    "ERAS": [
+      "\u0434\u0430 \u043d.\u044d.",
+      "\u043d.\u044d."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044f",
+      "\u043b\u044e\u0442\u0430\u0433\u0430",
+      "\u0441\u0430\u043a\u0430\u0432\u0456\u043a\u0430",
+      "\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a\u0430",
+      "\u043c\u0430\u044f",
+      "\u0447\u044d\u0440\u0432\u0435\u043d\u044f",
+      "\u043b\u0456\u043f\u0435\u043d\u044f",
+      "\u0436\u043d\u0456\u045e\u043d\u044f",
+      "\u0432\u0435\u0440\u0430\u0441\u043d\u044f",
+      "\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a\u0430",
+      "\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434\u0430",
+      "\u0441\u043d\u0435\u0436\u043d\u044f"
+    ],
+    "SHORTDAY": [
+      "\u043d\u0434",
+      "\u043f\u043d",
+      "\u0430\u045e",
+      "\u0441\u0440",
+      "\u0447\u0446",
+      "\u043f\u0442",
+      "\u0441\u0431"
+    ],
+    "SHORTMONTH": [
+      "\u0441\u0442\u0443",
+      "\u043b\u044e\u0442",
+      "\u0441\u0430\u043a",
+      "\u043a\u0440\u0430",
+      "\u043c\u0430\u044f",
+      "\u0447\u044d\u0440",
+      "\u043b\u0456\u043f",
+      "\u0436\u043d\u0456",
+      "\u0432\u0435\u0440",
+      "\u043a\u0430\u0441",
+      "\u043b\u0456\u0441",
+      "\u0441\u043d\u0435"
+    ],
+    "STANDALONEMONTH": [
+      "\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044c",
+      "\u043b\u044e\u0442\u044b",
+      "\u0441\u0430\u043a\u0430\u0432\u0456\u043a",
+      "\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a",
+      "\u043c\u0430\u0439",
+      "\u0447\u044d\u0440\u0432\u0435\u043d\u044c",
+      "\u043b\u0456\u043f\u0435\u043d\u044c",
+      "\u0436\u043d\u0456\u0432\u0435\u043d\u044c",
+      "\u0432\u0435\u0440\u0430\u0441\u0435\u043d\u044c",
+      "\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a",
+      "\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434",
+      "\u0441\u043d\u0435\u0436\u0430\u043d\u044c"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d.M.y HH.mm.ss",
+    "mediumDate": "d.M.y",
+    "mediumTime": "HH.mm.ss",
+    "short": "d.M.yy HH.mm",
+    "shortDate": "d.M.yy",
+    "shortTime": "HH.mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "BYR",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "be",
+  "localeID": "be",
+  "pluralCat": function(n, opt_precision) {  if (n % 10 == 1 && n % 100 != 11) {    return PLURAL_CATEGORY.ONE;  }  if (n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) {    return PLURAL_CATEGORY.FEW;  }  if (n % 10 == 0 || n % 10 >= 5 && n % 10 <= 9 || n % 100 >= 11 && n % 100 <= 14) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bem-zm.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bem-zm.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bem-zm.js
new file mode 100644
index 0000000..6881a37
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bem-zm.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "uluchelo",
+      "akasuba"
+    ],
+    "DAY": [
+      "Pa Mulungu",
+      "Palichimo",
+      "Palichibuli",
+      "Palichitatu",
+      "Palichine",
+      "Palichisano",
+      "Pachibelushi"
+    ],
+    "ERANAMES": [
+      "Before Yesu",
+      "After Yesu"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Januari",
+      "Februari",
+      "Machi",
+      "Epreo",
+      "Mei",
+      "Juni",
+      "Julai",
+      "Ogasti",
+      "Septemba",
+      "Oktoba",
+      "Novemba",
+      "Disemba"
+    ],
+    "SHORTDAY": [
+      "Pa Mulungu",
+      "Palichimo",
+      "Palichibuli",
+      "Palichitatu",
+      "Palichine",
+      "Palichisano",
+      "Pachibelushi"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mac",
+      "Epr",
+      "Mei",
+      "Jun",
+      "Jul",
+      "Oga",
+      "Sep",
+      "Okt",
+      "Nov",
+      "Dis"
+    ],
+    "STANDALONEMONTH": [
+      "Januari",
+      "Februari",
+      "Machi",
+      "Epreo",
+      "Mei",
+      "Juni",
+      "Julai",
+      "Ogasti",
+      "Septemba",
+      "Oktoba",
+      "Novemba",
+      "Disemba"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "ZMW",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "bem-zm",
+  "localeID": "bem_ZM",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);



[06/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kok.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kok.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kok.js
new file mode 100644
index 0000000..4a59d03
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kok.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u092e.\u092a\u0942.",
+      "\u092e.\u0928\u0902."
+    ],
+    "DAY": [
+      "\u0906\u0926\u093f\u0924\u094d\u092f\u0935\u093e\u0930",
+      "\u0938\u094b\u092e\u0935\u093e\u0930",
+      "\u092e\u0902\u0917\u0933\u093e\u0930",
+      "\u092c\u0941\u0927\u0935\u093e\u0930",
+      "\u0917\u0941\u0930\u0941\u0935\u093e\u0930",
+      "\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930",
+      "\u0936\u0928\u093f\u0935\u093e\u0930"
+    ],
+    "ERANAMES": [
+      "\u0915\u094d\u0930\u093f\u0938\u094d\u0924\u092a\u0942\u0930\u094d\u0935",
+      "\u0915\u094d\u0930\u093f\u0938\u094d\u0924\u0936\u0916\u093e"
+    ],
+    "ERAS": [
+      "\u0915\u094d\u0930\u093f\u0938\u094d\u0924\u092a\u0942\u0930\u094d\u0935",
+      "\u0915\u094d\u0930\u093f\u0938\u094d\u0924\u0936\u0916\u093e"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940",
+      "\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940",
+      "\u092e\u093e\u0930\u094d\u091a",
+      "\u090f\u092a\u094d\u0930\u093f\u0932",
+      "\u092e\u0947",
+      "\u091c\u0942\u0928",
+      "\u091c\u0941\u0932\u0948",
+      "\u0913\u0917\u0938\u094d\u091f",
+      "\u0938\u0947\u092a\u094d\u091f\u0947\u0902\u092c\u0930",
+      "\u0913\u0915\u094d\u091f\u094b\u092c\u0930",
+      "\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930",
+      "\u0921\u093f\u0938\u0947\u0902\u092c\u0930"
+    ],
+    "SHORTDAY": [
+      "\u0930\u0935\u093f",
+      "\u0938\u094b\u092e",
+      "\u092e\u0902\u0917\u0933",
+      "\u092c\u0941\u0927",
+      "\u0917\u0941\u0930\u0941",
+      "\u0936\u0941\u0915\u094d\u0930",
+      "\u0936\u0928\u093f"
+    ],
+    "SHORTMONTH": [
+      "\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940",
+      "\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940",
+      "\u092e\u093e\u0930\u094d\u091a",
+      "\u090f\u092a\u094d\u0930\u093f\u0932",
+      "\u092e\u0947",
+      "\u091c\u0942\u0928",
+      "\u091c\u0941\u0932\u0948",
+      "\u0913\u0917\u0938\u094d\u091f",
+      "\u0938\u0947\u092a\u094d\u091f\u0947\u0902\u092c\u0930",
+      "\u0913\u0915\u094d\u091f\u094b\u092c\u0930",
+      "\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930",
+      "\u0921\u093f\u0938\u0947\u0902\u092c\u0930"
+    ],
+    "STANDALONEMONTH": [
+      "\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940",
+      "\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940",
+      "\u092e\u093e\u0930\u094d\u091a",
+      "\u090f\u092a\u094d\u0930\u093f\u0932",
+      "\u092e\u0947",
+      "\u091c\u0942\u0928",
+      "\u091c\u0941\u0932\u0948",
+      "\u0913\u0917\u0938\u094d\u091f",
+      "\u0938\u0947\u092a\u094d\u091f\u0947\u0902\u092c\u0930",
+      "\u0913\u0915\u094d\u091f\u094b\u092c\u0930",
+      "\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930",
+      "\u0921\u093f\u0938\u0947\u0902\u092c\u0930"
+    ],
+    "WEEKENDRANGE": [
+      6,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "dd-MM-y h:mm:ss a",
+    "mediumDate": "dd-MM-y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d-M-yy h:mm a",
+    "shortDate": "d-M-yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20b9",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "kok",
+  "localeID": "kok",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ks-arab-in.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ks-arab-in.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ks-arab-in.js
new file mode 100644
index 0000000..0ab04e6
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ks-arab-in.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "\u0627\u064e\u062a\u06be\u0648\u0627\u0631",
+      "\u0698\u0654\u0646\u065b\u062f\u0631\u0655\u0631\u0648\u0627\u0631",
+      "\u0628\u0648\u065a\u0645\u0648\u0627\u0631",
+      "\u0628\u0648\u062f\u0648\u0627\u0631",
+      "\u0628\u0631\u065b\u066e\u06ea\u0633\u0648\u0627\u0631",
+      "\u062c\u064f\u0645\u06c1",
+      "\u0628\u0679\u0648\u0627\u0631"
+    ],
+    "ERANAMES": [
+      "\u0642\u0628\u0655\u0644 \u0645\u0633\u06cc\u0656\u062d",
+      "\u0639\u06cc\u0656\u0633\u0648\u06cc \u0633\u0646\u06c1\u0655"
+    ],
+    "ERAS": [
+      "\u0628\u06cc \u0633\u06cc",
+      "\u0627\u06d2 \u0688\u06cc"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u062c\u0646\u0624\u0631\u06cc",
+      "\u0641\u0631\u0624\u0631\u06cc",
+      "\u0645\u0627\u0631\u0655\u0686",
+      "\u0627\u067e\u0631\u06cc\u0644",
+      "\u0645\u06cc\u0654",
+      "\u062c\u0648\u0657\u0646",
+      "\u062c\u0648\u0657\u0644\u0627\u06cc\u06cc",
+      "\u0627\u06af\u0633\u062a",
+      "\u0633\u062a\u0645\u0628\u0631",
+      "\u0627\u06a9\u062a\u0648\u0657\u0628\u0631",
+      "\u0646\u0648\u0645\u0628\u0631",
+      "\u062f\u0633\u0645\u0628\u0631"
+    ],
+    "SHORTDAY": [
+      "\u0622\u062a\u06be\u0648\u0627\u0631",
+      "\u0698\u0654\u0646\u065b\u062f\u0655\u0631\u0648\u0627\u0631",
+      "\u0628\u0648\u065a\u0645\u0648\u0627\u0631",
+      "\u0628\u0648\u062f\u0648\u0627\u0631",
+      "\u0628\u0631\u065b\u066e\u06ea\u0633\u0648\u0627\u0631",
+      "\u062c\u064f\u0645\u06c1",
+      "\u0628\u0679\u0648\u0627\u0631"
+    ],
+    "SHORTMONTH": [
+      "\u062c\u0646\u0624\u0631\u06cc",
+      "\u0641\u0631\u0624\u0631\u06cc",
+      "\u0645\u0627\u0631\u0655\u0686",
+      "\u0627\u067e\u0631\u06cc\u0644",
+      "\u0645\u06cc\u0654",
+      "\u062c\u0648\u0657\u0646",
+      "\u062c\u0648\u0657\u0644\u0627\u06cc\u06cc",
+      "\u0627\u06af\u0633\u062a",
+      "\u0633\u062a\u0645\u0628\u0631",
+      "\u0627\u06a9\u062a\u0648\u0657\u0628\u0631",
+      "\u0646\u0648\u0645\u0628\u0631",
+      "\u062f\u0633\u0645\u0628\u0631"
+    ],
+    "STANDALONEMONTH": [
+      "\u062c\u0646\u0624\u0631\u06cc",
+      "\u0641\u0631\u0624\u0631\u06cc",
+      "\u0645\u0627\u0631\u0655\u0686",
+      "\u0627\u067e\u0631\u06cc\u0644",
+      "\u0645\u06cc\u0654",
+      "\u062c\u0648\u0657\u0646",
+      "\u062c\u0648\u0657\u0644\u0627\u06cc\u06cc",
+      "\u0627\u06af\u0633\u062a",
+      "\u0633\u062a\u0645\u0628\u0631",
+      "\u0627\u06a9\u062a\u0648\u0657\u0628\u0631",
+      "\u0646\u0648\u0645\u0628\u0631",
+      "\u062f\u0633\u0645\u0628\u0631"
+    ],
+    "WEEKENDRANGE": [
+      6,
+      6
+    ],
+    "fullDate": "EEEE, MMMM d, y",
+    "longDate": "MMMM d, y",
+    "medium": "MMM d, y h:mm:ss a",
+    "mediumDate": "MMM d, y",
+    "mediumTime": "h:mm:ss a",
+    "short": "M/d/yy h:mm a",
+    "shortDate": "M/d/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20b9",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ks-arab-in",
+  "localeID": "ks_Arab_IN",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ks-arab.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ks-arab.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ks-arab.js
new file mode 100644
index 0000000..b1d807b
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ks-arab.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "\u0627\u064e\u062a\u06be\u0648\u0627\u0631",
+      "\u0698\u0654\u0646\u065b\u062f\u0631\u0655\u0631\u0648\u0627\u0631",
+      "\u0628\u0648\u065a\u0645\u0648\u0627\u0631",
+      "\u0628\u0648\u062f\u0648\u0627\u0631",
+      "\u0628\u0631\u065b\u066e\u06ea\u0633\u0648\u0627\u0631",
+      "\u062c\u064f\u0645\u06c1",
+      "\u0628\u0679\u0648\u0627\u0631"
+    ],
+    "ERANAMES": [
+      "\u0642\u0628\u0655\u0644 \u0645\u0633\u06cc\u0656\u062d",
+      "\u0639\u06cc\u0656\u0633\u0648\u06cc \u0633\u0646\u06c1\u0655"
+    ],
+    "ERAS": [
+      "\u0628\u06cc \u0633\u06cc",
+      "\u0627\u06d2 \u0688\u06cc"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u062c\u0646\u0624\u0631\u06cc",
+      "\u0641\u0631\u0624\u0631\u06cc",
+      "\u0645\u0627\u0631\u0655\u0686",
+      "\u0627\u067e\u0631\u06cc\u0644",
+      "\u0645\u06cc\u0654",
+      "\u062c\u0648\u0657\u0646",
+      "\u062c\u0648\u0657\u0644\u0627\u06cc\u06cc",
+      "\u0627\u06af\u0633\u062a",
+      "\u0633\u062a\u0645\u0628\u0631",
+      "\u0627\u06a9\u062a\u0648\u0657\u0628\u0631",
+      "\u0646\u0648\u0645\u0628\u0631",
+      "\u062f\u0633\u0645\u0628\u0631"
+    ],
+    "SHORTDAY": [
+      "\u0622\u062a\u06be\u0648\u0627\u0631",
+      "\u0698\u0654\u0646\u065b\u062f\u0655\u0631\u0648\u0627\u0631",
+      "\u0628\u0648\u065a\u0645\u0648\u0627\u0631",
+      "\u0628\u0648\u062f\u0648\u0627\u0631",
+      "\u0628\u0631\u065b\u066e\u06ea\u0633\u0648\u0627\u0631",
+      "\u062c\u064f\u0645\u06c1",
+      "\u0628\u0679\u0648\u0627\u0631"
+    ],
+    "SHORTMONTH": [
+      "\u062c\u0646\u0624\u0631\u06cc",
+      "\u0641\u0631\u0624\u0631\u06cc",
+      "\u0645\u0627\u0631\u0655\u0686",
+      "\u0627\u067e\u0631\u06cc\u0644",
+      "\u0645\u06cc\u0654",
+      "\u062c\u0648\u0657\u0646",
+      "\u062c\u0648\u0657\u0644\u0627\u06cc\u06cc",
+      "\u0627\u06af\u0633\u062a",
+      "\u0633\u062a\u0645\u0628\u0631",
+      "\u0627\u06a9\u062a\u0648\u0657\u0628\u0631",
+      "\u0646\u0648\u0645\u0628\u0631",
+      "\u062f\u0633\u0645\u0628\u0631"
+    ],
+    "STANDALONEMONTH": [
+      "\u062c\u0646\u0624\u0631\u06cc",
+      "\u0641\u0631\u0624\u0631\u06cc",
+      "\u0645\u0627\u0631\u0655\u0686",
+      "\u0627\u067e\u0631\u06cc\u0644",
+      "\u0645\u06cc\u0654",
+      "\u062c\u0648\u0657\u0646",
+      "\u062c\u0648\u0657\u0644\u0627\u06cc\u06cc",
+      "\u0627\u06af\u0633\u062a",
+      "\u0633\u062a\u0645\u0628\u0631",
+      "\u0627\u06a9\u062a\u0648\u0657\u0628\u0631",
+      "\u0646\u0648\u0645\u0628\u0631",
+      "\u062f\u0633\u0645\u0628\u0631"
+    ],
+    "WEEKENDRANGE": [
+      6,
+      6
+    ],
+    "fullDate": "EEEE, MMMM d, y",
+    "longDate": "MMMM d, y",
+    "medium": "MMM d, y h:mm:ss a",
+    "mediumDate": "MMM d, y",
+    "mediumTime": "h:mm:ss a",
+    "short": "M/d/yy h:mm a",
+    "shortDate": "M/d/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20b9",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ks-arab",
+  "localeID": "ks_Arab",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ks.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ks.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ks.js
new file mode 100644
index 0000000..7c64c70
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ks.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "\u0627\u064e\u062a\u06be\u0648\u0627\u0631",
+      "\u0698\u0654\u0646\u065b\u062f\u0631\u0655\u0631\u0648\u0627\u0631",
+      "\u0628\u0648\u065a\u0645\u0648\u0627\u0631",
+      "\u0628\u0648\u062f\u0648\u0627\u0631",
+      "\u0628\u0631\u065b\u066e\u06ea\u0633\u0648\u0627\u0631",
+      "\u062c\u064f\u0645\u06c1",
+      "\u0628\u0679\u0648\u0627\u0631"
+    ],
+    "ERANAMES": [
+      "\u0642\u0628\u0655\u0644 \u0645\u0633\u06cc\u0656\u062d",
+      "\u0639\u06cc\u0656\u0633\u0648\u06cc \u0633\u0646\u06c1\u0655"
+    ],
+    "ERAS": [
+      "\u0628\u06cc \u0633\u06cc",
+      "\u0627\u06d2 \u0688\u06cc"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u062c\u0646\u0624\u0631\u06cc",
+      "\u0641\u0631\u0624\u0631\u06cc",
+      "\u0645\u0627\u0631\u0655\u0686",
+      "\u0627\u067e\u0631\u06cc\u0644",
+      "\u0645\u06cc\u0654",
+      "\u062c\u0648\u0657\u0646",
+      "\u062c\u0648\u0657\u0644\u0627\u06cc\u06cc",
+      "\u0627\u06af\u0633\u062a",
+      "\u0633\u062a\u0645\u0628\u0631",
+      "\u0627\u06a9\u062a\u0648\u0657\u0628\u0631",
+      "\u0646\u0648\u0645\u0628\u0631",
+      "\u062f\u0633\u0645\u0628\u0631"
+    ],
+    "SHORTDAY": [
+      "\u0622\u062a\u06be\u0648\u0627\u0631",
+      "\u0698\u0654\u0646\u065b\u062f\u0655\u0631\u0648\u0627\u0631",
+      "\u0628\u0648\u065a\u0645\u0648\u0627\u0631",
+      "\u0628\u0648\u062f\u0648\u0627\u0631",
+      "\u0628\u0631\u065b\u066e\u06ea\u0633\u0648\u0627\u0631",
+      "\u062c\u064f\u0645\u06c1",
+      "\u0628\u0679\u0648\u0627\u0631"
+    ],
+    "SHORTMONTH": [
+      "\u062c\u0646\u0624\u0631\u06cc",
+      "\u0641\u0631\u0624\u0631\u06cc",
+      "\u0645\u0627\u0631\u0655\u0686",
+      "\u0627\u067e\u0631\u06cc\u0644",
+      "\u0645\u06cc\u0654",
+      "\u062c\u0648\u0657\u0646",
+      "\u062c\u0648\u0657\u0644\u0627\u06cc\u06cc",
+      "\u0627\u06af\u0633\u062a",
+      "\u0633\u062a\u0645\u0628\u0631",
+      "\u0627\u06a9\u062a\u0648\u0657\u0628\u0631",
+      "\u0646\u0648\u0645\u0628\u0631",
+      "\u062f\u0633\u0645\u0628\u0631"
+    ],
+    "STANDALONEMONTH": [
+      "\u062c\u0646\u0624\u0631\u06cc",
+      "\u0641\u0631\u0624\u0631\u06cc",
+      "\u0645\u0627\u0631\u0655\u0686",
+      "\u0627\u067e\u0631\u06cc\u0644",
+      "\u0645\u06cc\u0654",
+      "\u062c\u0648\u0657\u0646",
+      "\u062c\u0648\u0657\u0644\u0627\u06cc\u06cc",
+      "\u0627\u06af\u0633\u062a",
+      "\u0633\u062a\u0645\u0628\u0631",
+      "\u0627\u06a9\u062a\u0648\u0657\u0628\u0631",
+      "\u0646\u0648\u0645\u0628\u0631",
+      "\u062f\u0633\u0645\u0628\u0631"
+    ],
+    "WEEKENDRANGE": [
+      6,
+      6
+    ],
+    "fullDate": "EEEE, MMMM d, y",
+    "longDate": "MMMM d, y",
+    "medium": "MMM d, y h:mm:ss a",
+    "mediumDate": "MMM d, y",
+    "mediumTime": "h:mm:ss a",
+    "short": "M/d/yy h:mm a",
+    "shortDate": "M/d/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20b9",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ks",
+  "localeID": "ks",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ksb-tz.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ksb-tz.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ksb-tz.js
new file mode 100644
index 0000000..8082838
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ksb-tz.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "makeo",
+      "nyiaghuo"
+    ],
+    "DAY": [
+      "Jumaapii",
+      "Jumaatatu",
+      "Jumaane",
+      "Jumaatano",
+      "Alhamisi",
+      "Ijumaa",
+      "Jumaamosi"
+    ],
+    "ERANAMES": [
+      "Kabla ya Klisto",
+      "Baada ya Klisto"
+    ],
+    "ERAS": [
+      "KK",
+      "BK"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Januali",
+      "Febluali",
+      "Machi",
+      "Aplili",
+      "Mei",
+      "Juni",
+      "Julai",
+      "Agosti",
+      "Septemba",
+      "Oktoba",
+      "Novemba",
+      "Desemba"
+    ],
+    "SHORTDAY": [
+      "Jpi",
+      "Jtt",
+      "Jmn",
+      "Jtn",
+      "Alh",
+      "Iju",
+      "Jmo"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mac",
+      "Apr",
+      "Mei",
+      "Jun",
+      "Jul",
+      "Ago",
+      "Sep",
+      "Okt",
+      "Nov",
+      "Des"
+    ],
+    "STANDALONEMONTH": [
+      "Januali",
+      "Febluali",
+      "Machi",
+      "Aplili",
+      "Mei",
+      "Juni",
+      "Julai",
+      "Agosti",
+      "Septemba",
+      "Oktoba",
+      "Novemba",
+      "Desemba"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "TSh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a4"
+      }
+    ]
+  },
+  "id": "ksb-tz",
+  "localeID": "ksb_TZ",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ksb.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ksb.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ksb.js
new file mode 100644
index 0000000..796a298
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ksb.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "makeo",
+      "nyiaghuo"
+    ],
+    "DAY": [
+      "Jumaapii",
+      "Jumaatatu",
+      "Jumaane",
+      "Jumaatano",
+      "Alhamisi",
+      "Ijumaa",
+      "Jumaamosi"
+    ],
+    "ERANAMES": [
+      "Kabla ya Klisto",
+      "Baada ya Klisto"
+    ],
+    "ERAS": [
+      "KK",
+      "BK"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Januali",
+      "Febluali",
+      "Machi",
+      "Aplili",
+      "Mei",
+      "Juni",
+      "Julai",
+      "Agosti",
+      "Septemba",
+      "Oktoba",
+      "Novemba",
+      "Desemba"
+    ],
+    "SHORTDAY": [
+      "Jpi",
+      "Jtt",
+      "Jmn",
+      "Jtn",
+      "Alh",
+      "Iju",
+      "Jmo"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mac",
+      "Apr",
+      "Mei",
+      "Jun",
+      "Jul",
+      "Ago",
+      "Sep",
+      "Okt",
+      "Nov",
+      "Des"
+    ],
+    "STANDALONEMONTH": [
+      "Januali",
+      "Febluali",
+      "Machi",
+      "Aplili",
+      "Mei",
+      "Juni",
+      "Julai",
+      "Agosti",
+      "Septemba",
+      "Oktoba",
+      "Novemba",
+      "Desemba"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "TSh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a4"
+      }
+    ]
+  },
+  "id": "ksb",
+  "localeID": "ksb",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ksf-cm.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ksf-cm.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ksf-cm.js
new file mode 100644
index 0000000..459b850
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ksf-cm.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "s\u00e1r\u00faw\u00e1",
+      "c\u025b\u025b\u0301nko"
+    ],
+    "DAY": [
+      "s\u0254\u0301nd\u01dd",
+      "l\u01ddnd\u00ed",
+      "maad\u00ed",
+      "m\u025bkr\u025bd\u00ed",
+      "j\u01dd\u01ddd\u00ed",
+      "j\u00famb\u00e1",
+      "samd\u00ed"
+    ],
+    "ERANAMES": [
+      "di Y\u025b\u0301sus ak\u00e1 y\u00e1l\u025b",
+      "c\u00e1m\u025b\u025bn k\u01dd k\u01ddb\u0254pka Y"
+    ],
+    "ERAS": [
+      "d.Y.",
+      "k.Y."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u014bw\u00ed\u00ed a nt\u0254\u0301nt\u0254",
+      "\u014bw\u00ed\u00ed ak\u01dd b\u025b\u0301\u025b",
+      "\u014bw\u00ed\u00ed ak\u01dd r\u00e1\u00e1",
+      "\u014bw\u00ed\u00ed ak\u01dd nin",
+      "\u014bw\u00ed\u00ed ak\u01dd t\u00e1an",
+      "\u014bw\u00ed\u00ed ak\u01dd t\u00e1af\u0254k",
+      "\u014bw\u00ed\u00ed ak\u01dd t\u00e1ab\u025b\u025b",
+      "\u014bw\u00ed\u00ed ak\u01dd t\u00e1araa",
+      "\u014bw\u00ed\u00ed ak\u01dd t\u00e1anin",
+      "\u014bw\u00ed\u00ed ak\u01dd nt\u025bk",
+      "\u014bw\u00ed\u00ed ak\u01dd nt\u025bk di b\u0254\u0301k",
+      "\u014bw\u00ed\u00ed ak\u01dd nt\u025bk di b\u025b\u0301\u025b"
+    ],
+    "SHORTDAY": [
+      "s\u0254\u0301n",
+      "l\u01ddn",
+      "maa",
+      "m\u025bk",
+      "j\u01dd\u01dd",
+      "j\u00fam",
+      "sam"
+    ],
+    "SHORTMONTH": [
+      "\u014b1",
+      "\u014b2",
+      "\u014b3",
+      "\u014b4",
+      "\u014b5",
+      "\u014b6",
+      "\u014b7",
+      "\u014b8",
+      "\u014b9",
+      "\u014b10",
+      "\u014b11",
+      "\u014b12"
+    ],
+    "STANDALONEMONTH": [
+      "\u014bw\u00ed\u00ed a nt\u0254\u0301nt\u0254",
+      "\u014bw\u00ed\u00ed ak\u01dd b\u025b\u0301\u025b",
+      "\u014bw\u00ed\u00ed ak\u01dd r\u00e1\u00e1",
+      "\u014bw\u00ed\u00ed ak\u01dd nin",
+      "\u014bw\u00ed\u00ed ak\u01dd t\u00e1an",
+      "\u014bw\u00ed\u00ed ak\u01dd t\u00e1af\u0254k",
+      "\u014bw\u00ed\u00ed ak\u01dd t\u00e1ab\u025b\u025b",
+      "\u014bw\u00ed\u00ed ak\u01dd t\u00e1araa",
+      "\u014bw\u00ed\u00ed ak\u01dd t\u00e1anin",
+      "\u014bw\u00ed\u00ed ak\u01dd nt\u025bk",
+      "\u014bw\u00ed\u00ed ak\u01dd nt\u025bk di b\u0254\u0301k",
+      "\u014bw\u00ed\u00ed ak\u01dd nt\u025bk di b\u025b\u0301\u025b"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "ksf-cm",
+  "localeID": "ksf_CM",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ksf.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ksf.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ksf.js
new file mode 100644
index 0000000..36e62a8
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ksf.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "s\u00e1r\u00faw\u00e1",
+      "c\u025b\u025b\u0301nko"
+    ],
+    "DAY": [
+      "s\u0254\u0301nd\u01dd",
+      "l\u01ddnd\u00ed",
+      "maad\u00ed",
+      "m\u025bkr\u025bd\u00ed",
+      "j\u01dd\u01ddd\u00ed",
+      "j\u00famb\u00e1",
+      "samd\u00ed"
+    ],
+    "ERANAMES": [
+      "di Y\u025b\u0301sus ak\u00e1 y\u00e1l\u025b",
+      "c\u00e1m\u025b\u025bn k\u01dd k\u01ddb\u0254pka Y"
+    ],
+    "ERAS": [
+      "d.Y.",
+      "k.Y."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u014bw\u00ed\u00ed a nt\u0254\u0301nt\u0254",
+      "\u014bw\u00ed\u00ed ak\u01dd b\u025b\u0301\u025b",
+      "\u014bw\u00ed\u00ed ak\u01dd r\u00e1\u00e1",
+      "\u014bw\u00ed\u00ed ak\u01dd nin",
+      "\u014bw\u00ed\u00ed ak\u01dd t\u00e1an",
+      "\u014bw\u00ed\u00ed ak\u01dd t\u00e1af\u0254k",
+      "\u014bw\u00ed\u00ed ak\u01dd t\u00e1ab\u025b\u025b",
+      "\u014bw\u00ed\u00ed ak\u01dd t\u00e1araa",
+      "\u014bw\u00ed\u00ed ak\u01dd t\u00e1anin",
+      "\u014bw\u00ed\u00ed ak\u01dd nt\u025bk",
+      "\u014bw\u00ed\u00ed ak\u01dd nt\u025bk di b\u0254\u0301k",
+      "\u014bw\u00ed\u00ed ak\u01dd nt\u025bk di b\u025b\u0301\u025b"
+    ],
+    "SHORTDAY": [
+      "s\u0254\u0301n",
+      "l\u01ddn",
+      "maa",
+      "m\u025bk",
+      "j\u01dd\u01dd",
+      "j\u00fam",
+      "sam"
+    ],
+    "SHORTMONTH": [
+      "\u014b1",
+      "\u014b2",
+      "\u014b3",
+      "\u014b4",
+      "\u014b5",
+      "\u014b6",
+      "\u014b7",
+      "\u014b8",
+      "\u014b9",
+      "\u014b10",
+      "\u014b11",
+      "\u014b12"
+    ],
+    "STANDALONEMONTH": [
+      "\u014bw\u00ed\u00ed a nt\u0254\u0301nt\u0254",
+      "\u014bw\u00ed\u00ed ak\u01dd b\u025b\u0301\u025b",
+      "\u014bw\u00ed\u00ed ak\u01dd r\u00e1\u00e1",
+      "\u014bw\u00ed\u00ed ak\u01dd nin",
+      "\u014bw\u00ed\u00ed ak\u01dd t\u00e1an",
+      "\u014bw\u00ed\u00ed ak\u01dd t\u00e1af\u0254k",
+      "\u014bw\u00ed\u00ed ak\u01dd t\u00e1ab\u025b\u025b",
+      "\u014bw\u00ed\u00ed ak\u01dd t\u00e1araa",
+      "\u014bw\u00ed\u00ed ak\u01dd t\u00e1anin",
+      "\u014bw\u00ed\u00ed ak\u01dd nt\u025bk",
+      "\u014bw\u00ed\u00ed ak\u01dd nt\u025bk di b\u0254\u0301k",
+      "\u014bw\u00ed\u00ed ak\u01dd nt\u025bk di b\u025b\u0301\u025b"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "ksf",
+  "localeID": "ksf",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ksh-de.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ksh-de.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ksh-de.js
new file mode 100644
index 0000000..793b20a
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ksh-de.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "Uhr v\u00f6rmiddaachs",
+      "Uhr nommendaachs"
+    ],
+    "DAY": [
+      "Sunndaach",
+      "Moondaach",
+      "Dinnsdaach",
+      "Metwoch",
+      "Dunnersdaach",
+      "Friidaach",
+      "Samsdaach"
+    ],
+    "ERANAMES": [
+      "v\u00fcr Chrestus",
+      "noh Chrestus"
+    ],
+    "ERAS": [
+      "v. Chr.",
+      "n. Chr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Jannewa",
+      "F\u00e4browa",
+      "M\u00e4\u00e4z",
+      "Aprell",
+      "M\u00e4i",
+      "Juuni",
+      "Juuli",
+      "Oujo\u00df",
+      "Sept\u00e4mber",
+      "Oktoober",
+      "Nov\u00e4mber",
+      "Dez\u00e4mber"
+    ],
+    "SHORTDAY": [
+      "Su.",
+      "Mo.",
+      "Di.",
+      "Me.",
+      "Du.",
+      "Fr.",
+      "Sa."
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "F\u00e4b",
+      "M\u00e4z",
+      "Apr",
+      "M\u00e4i",
+      "Jun",
+      "Jul",
+      "Ouj",
+      "S\u00e4p",
+      "Okt",
+      "Nov",
+      "Dez"
+    ],
+    "STANDALONEMONTH": [
+      "Jannewa",
+      "F\u00e4browa",
+      "M\u00e4\u00e4z",
+      "Aprell",
+      "M\u00e4i",
+      "Juuni",
+      "Juuli",
+      "Oujo\u00df",
+      "Sept\u00e4mber",
+      "Oktoober",
+      "Nov\u00e4mber",
+      "Dez\u00e4mber"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, 'd\u00e4' d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "d. MMM. y HH:mm:ss",
+    "mediumDate": "d. MMM. y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d. M. y HH:mm",
+    "shortDate": "d. M. y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "ksh-de",
+  "localeID": "ksh_DE",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ksh.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ksh.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ksh.js
new file mode 100644
index 0000000..312fbee
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ksh.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "Uhr v\u00f6rmiddaachs",
+      "Uhr nommendaachs"
+    ],
+    "DAY": [
+      "Sunndaach",
+      "Moondaach",
+      "Dinnsdaach",
+      "Metwoch",
+      "Dunnersdaach",
+      "Friidaach",
+      "Samsdaach"
+    ],
+    "ERANAMES": [
+      "v\u00fcr Chrestus",
+      "noh Chrestus"
+    ],
+    "ERAS": [
+      "v. Chr.",
+      "n. Chr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Jannewa",
+      "F\u00e4browa",
+      "M\u00e4\u00e4z",
+      "Aprell",
+      "M\u00e4i",
+      "Juuni",
+      "Juuli",
+      "Oujo\u00df",
+      "Sept\u00e4mber",
+      "Oktoober",
+      "Nov\u00e4mber",
+      "Dez\u00e4mber"
+    ],
+    "SHORTDAY": [
+      "Su.",
+      "Mo.",
+      "Di.",
+      "Me.",
+      "Du.",
+      "Fr.",
+      "Sa."
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "F\u00e4b",
+      "M\u00e4z",
+      "Apr",
+      "M\u00e4i",
+      "Jun",
+      "Jul",
+      "Ouj",
+      "S\u00e4p",
+      "Okt",
+      "Nov",
+      "Dez"
+    ],
+    "STANDALONEMONTH": [
+      "Jannewa",
+      "F\u00e4browa",
+      "M\u00e4\u00e4z",
+      "Aprell",
+      "M\u00e4i",
+      "Juuni",
+      "Juuli",
+      "Oujo\u00df",
+      "Sept\u00e4mber",
+      "Oktoober",
+      "Nov\u00e4mber",
+      "Dez\u00e4mber"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, 'd\u00e4' d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "d. MMM. y HH:mm:ss",
+    "mediumDate": "d. MMM. y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d. M. y HH:mm",
+    "shortDate": "d. M. y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "ksh",
+  "localeID": "ksh",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kw-gb.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kw-gb.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kw-gb.js
new file mode 100644
index 0000000..46a8c10
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kw-gb.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a.m.",
+      "p.m."
+    ],
+    "DAY": [
+      "dy Sul",
+      "dy Lun",
+      "dy Meurth",
+      "dy Merher",
+      "dy Yow",
+      "dy Gwener",
+      "dy Sadorn"
+    ],
+    "ERANAMES": [
+      "RC",
+      "AD"
+    ],
+    "ERAS": [
+      "RC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "mis Genver",
+      "mis Hwevrer",
+      "mis Meurth",
+      "mis Ebrel",
+      "mis Me",
+      "mis Metheven",
+      "mis Gortheren",
+      "mis Est",
+      "mis Gwynngala",
+      "mis Hedra",
+      "mis Du",
+      "mis Kevardhu"
+    ],
+    "SHORTDAY": [
+      "Sul",
+      "Lun",
+      "Mth",
+      "Mhr",
+      "Yow",
+      "Gwe",
+      "Sad"
+    ],
+    "SHORTMONTH": [
+      "Gen",
+      "Hwe",
+      "Meu",
+      "Ebr",
+      "Me",
+      "Met",
+      "Gor",
+      "Est",
+      "Gwn",
+      "Hed",
+      "Du",
+      "Kev"
+    ],
+    "STANDALONEMONTH": [
+      "mis Genver",
+      "mis Hwevrer",
+      "mis Meurth",
+      "mis Ebrel",
+      "mis Me",
+      "mis Metheven",
+      "mis Gortheren",
+      "mis Est",
+      "mis Gwynngala",
+      "mis Hedra",
+      "mis Du",
+      "mis Kevardhu"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u00a3",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "kw-gb",
+  "localeID": "kw_GB",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kw.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kw.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kw.js
new file mode 100644
index 0000000..d6a128b
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kw.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a.m.",
+      "p.m."
+    ],
+    "DAY": [
+      "dy Sul",
+      "dy Lun",
+      "dy Meurth",
+      "dy Merher",
+      "dy Yow",
+      "dy Gwener",
+      "dy Sadorn"
+    ],
+    "ERANAMES": [
+      "RC",
+      "AD"
+    ],
+    "ERAS": [
+      "RC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "mis Genver",
+      "mis Hwevrer",
+      "mis Meurth",
+      "mis Ebrel",
+      "mis Me",
+      "mis Metheven",
+      "mis Gortheren",
+      "mis Est",
+      "mis Gwynngala",
+      "mis Hedra",
+      "mis Du",
+      "mis Kevardhu"
+    ],
+    "SHORTDAY": [
+      "Sul",
+      "Lun",
+      "Mth",
+      "Mhr",
+      "Yow",
+      "Gwe",
+      "Sad"
+    ],
+    "SHORTMONTH": [
+      "Gen",
+      "Hwe",
+      "Meu",
+      "Ebr",
+      "Me",
+      "Met",
+      "Gor",
+      "Est",
+      "Gwn",
+      "Hed",
+      "Du",
+      "Kev"
+    ],
+    "STANDALONEMONTH": [
+      "mis Genver",
+      "mis Hwevrer",
+      "mis Meurth",
+      "mis Ebrel",
+      "mis Me",
+      "mis Metheven",
+      "mis Gortheren",
+      "mis Est",
+      "mis Gwynngala",
+      "mis Hedra",
+      "mis Du",
+      "mis Kevardhu"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u00a3",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "kw",
+  "localeID": "kw",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ky-cyrl-kg.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ky-cyrl-kg.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ky-cyrl-kg.js
new file mode 100644
index 0000000..31b8ace
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ky-cyrl-kg.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0442\u0430\u04a3\u043a\u044b",
+      "\u0442\u04af\u0448\u0442\u04e9\u043d \u043a\u0438\u0439\u0438\u043d"
+    ],
+    "DAY": [
+      "\u0436\u0435\u043a\u0448\u0435\u043c\u0431\u0438",
+      "\u0434\u04af\u0439\u0448\u04e9\u043c\u0431\u04af",
+      "\u0448\u0435\u0439\u0448\u0435\u043c\u0431\u0438",
+      "\u0448\u0430\u0440\u0448\u0435\u043c\u0431\u0438",
+      "\u0431\u0435\u0439\u0448\u0435\u043c\u0431\u0438",
+      "\u0436\u0443\u043c\u0430",
+      "\u0438\u0448\u0435\u043c\u0431\u0438"
+    ],
+    "ERANAMES": [
+      "\u0431\u0438\u0437\u0434\u0438\u043d \u0437\u0430\u043c\u0430\u043d\u0433\u0430 \u0447\u0435\u0439\u0438\u043d",
+      "\u0431\u0438\u0437\u0434\u0438\u043d \u0437\u0430\u043c\u0430\u043d"
+    ],
+    "ERAS": [
+      "\u0431.\u0437.\u0447.",
+      "\u0431.\u0437."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u044f\u043d\u0432\u0430\u0440\u044c",
+      "\u0444\u0435\u0432\u0440\u0430\u043b\u044c",
+      "\u043c\u0430\u0440\u0442",
+      "\u0430\u043f\u0440\u0435\u043b\u044c",
+      "\u043c\u0430\u0439",
+      "\u0438\u044e\u043d\u044c",
+      "\u0438\u044e\u043b\u044c",
+      "\u0430\u0432\u0433\u0443\u0441\u0442",
+      "\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c",
+      "\u043e\u043a\u0442\u044f\u0431\u0440\u044c",
+      "\u043d\u043e\u044f\u0431\u0440\u044c",
+      "\u0434\u0435\u043a\u0430\u0431\u0440\u044c"
+    ],
+    "SHORTDAY": [
+      "\u0436\u0435\u043a.",
+      "\u0434\u04af\u0439.",
+      "\u0448\u0435\u0439\u0448.",
+      "\u0448\u0430\u0440\u0448.",
+      "\u0431\u0435\u0439\u0448.",
+      "\u0436\u0443\u043c\u0430",
+      "\u0438\u0448\u043c."
+    ],
+    "SHORTMONTH": [
+      "\u044f\u043d\u0432.",
+      "\u0444\u0435\u0432.",
+      "\u043c\u0430\u0440.",
+      "\u0430\u043f\u0440.",
+      "\u043c\u0430\u0439",
+      "\u0438\u044e\u043d.",
+      "\u0438\u044e\u043b.",
+      "\u0430\u0432\u0433.",
+      "\u0441\u0435\u043d.",
+      "\u043e\u043a\u0442.",
+      "\u043d\u043e\u044f.",
+      "\u0434\u0435\u043a."
+    ],
+    "STANDALONEMONTH": [
+      "\u042f\u043d\u0432\u0430\u0440\u044c",
+      "\u0424\u0435\u0432\u0440\u0430\u043b\u044c",
+      "\u041c\u0430\u0440\u0442",
+      "\u0410\u043f\u0440\u0435\u043b\u044c",
+      "\u041c\u0430\u0439",
+      "\u0418\u044e\u043d\u044c",
+      "\u0418\u044e\u043b\u044c",
+      "\u0410\u0432\u0433\u0443\u0441\u0442",
+      "\u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c",
+      "\u041e\u043a\u0442\u044f\u0431\u0440\u044c",
+      "\u041d\u043e\u044f\u0431\u0440\u044c",
+      "\u0414\u0435\u043a\u0430\u0431\u0440\u044c"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d-MMMM, y-'\u0436'.",
+    "longDate": "y MMMM d",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.yy HH:mm",
+    "shortDate": "dd.MM.yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "KGS",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "ky-cyrl-kg",
+  "localeID": "ky_Cyrl_KG",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ky-cyrl.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ky-cyrl.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ky-cyrl.js
new file mode 100644
index 0000000..a3c9123
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ky-cyrl.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0442\u0430\u04a3\u043a\u044b",
+      "\u0442\u04af\u0448\u0442\u04e9\u043d \u043a\u0438\u0439\u0438\u043d"
+    ],
+    "DAY": [
+      "\u0436\u0435\u043a\u0448\u0435\u043c\u0431\u0438",
+      "\u0434\u04af\u0439\u0448\u04e9\u043c\u0431\u04af",
+      "\u0448\u0435\u0439\u0448\u0435\u043c\u0431\u0438",
+      "\u0448\u0430\u0440\u0448\u0435\u043c\u0431\u0438",
+      "\u0431\u0435\u0439\u0448\u0435\u043c\u0431\u0438",
+      "\u0436\u0443\u043c\u0430",
+      "\u0438\u0448\u0435\u043c\u0431\u0438"
+    ],
+    "ERANAMES": [
+      "\u0431\u0438\u0437\u0434\u0438\u043d \u0437\u0430\u043c\u0430\u043d\u0433\u0430 \u0447\u0435\u0439\u0438\u043d",
+      "\u0431\u0438\u0437\u0434\u0438\u043d \u0437\u0430\u043c\u0430\u043d"
+    ],
+    "ERAS": [
+      "\u0431.\u0437.\u0447.",
+      "\u0431.\u0437."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u044f\u043d\u0432\u0430\u0440\u044c",
+      "\u0444\u0435\u0432\u0440\u0430\u043b\u044c",
+      "\u043c\u0430\u0440\u0442",
+      "\u0430\u043f\u0440\u0435\u043b\u044c",
+      "\u043c\u0430\u0439",
+      "\u0438\u044e\u043d\u044c",
+      "\u0438\u044e\u043b\u044c",
+      "\u0430\u0432\u0433\u0443\u0441\u0442",
+      "\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c",
+      "\u043e\u043a\u0442\u044f\u0431\u0440\u044c",
+      "\u043d\u043e\u044f\u0431\u0440\u044c",
+      "\u0434\u0435\u043a\u0430\u0431\u0440\u044c"
+    ],
+    "SHORTDAY": [
+      "\u0436\u0435\u043a.",
+      "\u0434\u04af\u0439.",
+      "\u0448\u0435\u0439\u0448.",
+      "\u0448\u0430\u0440\u0448.",
+      "\u0431\u0435\u0439\u0448.",
+      "\u0436\u0443\u043c\u0430",
+      "\u0438\u0448\u043c."
+    ],
+    "SHORTMONTH": [
+      "\u044f\u043d\u0432.",
+      "\u0444\u0435\u0432.",
+      "\u043c\u0430\u0440.",
+      "\u0430\u043f\u0440.",
+      "\u043c\u0430\u0439",
+      "\u0438\u044e\u043d.",
+      "\u0438\u044e\u043b.",
+      "\u0430\u0432\u0433.",
+      "\u0441\u0435\u043d.",
+      "\u043e\u043a\u0442.",
+      "\u043d\u043e\u044f.",
+      "\u0434\u0435\u043a."
+    ],
+    "STANDALONEMONTH": [
+      "\u042f\u043d\u0432\u0430\u0440\u044c",
+      "\u0424\u0435\u0432\u0440\u0430\u043b\u044c",
+      "\u041c\u0430\u0440\u0442",
+      "\u0410\u043f\u0440\u0435\u043b\u044c",
+      "\u041c\u0430\u0439",
+      "\u0418\u044e\u043d\u044c",
+      "\u0418\u044e\u043b\u044c",
+      "\u0410\u0432\u0433\u0443\u0441\u0442",
+      "\u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c",
+      "\u041e\u043a\u0442\u044f\u0431\u0440\u044c",
+      "\u041d\u043e\u044f\u0431\u0440\u044c",
+      "\u0414\u0435\u043a\u0430\u0431\u0440\u044c"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d-MMMM, y-'\u0436'.",
+    "longDate": "y MMMM d",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.yy HH:mm",
+    "shortDate": "dd.MM.yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "KGS",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "ky-cyrl",
+  "localeID": "ky_Cyrl",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ky.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ky.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ky.js
new file mode 100644
index 0000000..bba5e7a
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ky.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0442\u0430\u04a3\u043a\u044b",
+      "\u0442\u04af\u0448\u0442\u04e9\u043d \u043a\u0438\u0439\u0438\u043d"
+    ],
+    "DAY": [
+      "\u0436\u0435\u043a\u0448\u0435\u043c\u0431\u0438",
+      "\u0434\u04af\u0439\u0448\u04e9\u043c\u0431\u04af",
+      "\u0448\u0435\u0439\u0448\u0435\u043c\u0431\u0438",
+      "\u0448\u0430\u0440\u0448\u0435\u043c\u0431\u0438",
+      "\u0431\u0435\u0439\u0448\u0435\u043c\u0431\u0438",
+      "\u0436\u0443\u043c\u0430",
+      "\u0438\u0448\u0435\u043c\u0431\u0438"
+    ],
+    "ERANAMES": [
+      "\u0431\u0438\u0437\u0434\u0438\u043d \u0437\u0430\u043c\u0430\u043d\u0433\u0430 \u0447\u0435\u0439\u0438\u043d",
+      "\u0431\u0438\u0437\u0434\u0438\u043d \u0437\u0430\u043c\u0430\u043d"
+    ],
+    "ERAS": [
+      "\u0431.\u0437.\u0447.",
+      "\u0431.\u0437."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u044f\u043d\u0432\u0430\u0440\u044c",
+      "\u0444\u0435\u0432\u0440\u0430\u043b\u044c",
+      "\u043c\u0430\u0440\u0442",
+      "\u0430\u043f\u0440\u0435\u043b\u044c",
+      "\u043c\u0430\u0439",
+      "\u0438\u044e\u043d\u044c",
+      "\u0438\u044e\u043b\u044c",
+      "\u0430\u0432\u0433\u0443\u0441\u0442",
+      "\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c",
+      "\u043e\u043a\u0442\u044f\u0431\u0440\u044c",
+      "\u043d\u043e\u044f\u0431\u0440\u044c",
+      "\u0434\u0435\u043a\u0430\u0431\u0440\u044c"
+    ],
+    "SHORTDAY": [
+      "\u0436\u0435\u043a.",
+      "\u0434\u04af\u0439.",
+      "\u0448\u0435\u0439\u0448.",
+      "\u0448\u0430\u0440\u0448.",
+      "\u0431\u0435\u0439\u0448.",
+      "\u0436\u0443\u043c\u0430",
+      "\u0438\u0448\u043c."
+    ],
+    "SHORTMONTH": [
+      "\u044f\u043d\u0432.",
+      "\u0444\u0435\u0432.",
+      "\u043c\u0430\u0440.",
+      "\u0430\u043f\u0440.",
+      "\u043c\u0430\u0439",
+      "\u0438\u044e\u043d.",
+      "\u0438\u044e\u043b.",
+      "\u0430\u0432\u0433.",
+      "\u0441\u0435\u043d.",
+      "\u043e\u043a\u0442.",
+      "\u043d\u043e\u044f.",
+      "\u0434\u0435\u043a."
+    ],
+    "STANDALONEMONTH": [
+      "\u042f\u043d\u0432\u0430\u0440\u044c",
+      "\u0424\u0435\u0432\u0440\u0430\u043b\u044c",
+      "\u041c\u0430\u0440\u0442",
+      "\u0410\u043f\u0440\u0435\u043b\u044c",
+      "\u041c\u0430\u0439",
+      "\u0418\u044e\u043d\u044c",
+      "\u0418\u044e\u043b\u044c",
+      "\u0410\u0432\u0433\u0443\u0441\u0442",
+      "\u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c",
+      "\u041e\u043a\u0442\u044f\u0431\u0440\u044c",
+      "\u041d\u043e\u044f\u0431\u0440\u044c",
+      "\u0414\u0435\u043a\u0430\u0431\u0440\u044c"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d-MMMM, y-'\u0436'.",
+    "longDate": "y MMMM d",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.yy HH:mm",
+    "shortDate": "dd.MM.yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "KGS",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "ky",
+  "localeID": "ky",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lag-tz.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lag-tz.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lag-tz.js
new file mode 100644
index 0000000..016705c
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lag-tz.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "TOO",
+      "MUU"
+    ],
+    "DAY": [
+      "Jumap\u00ediri",
+      "Jumat\u00e1tu",
+      "Juma\u00edne",
+      "Jumat\u00e1ano",
+      "Alam\u00edisi",
+      "Ijum\u00e1a",
+      "Jumam\u00f3osi"
+    ],
+    "ERANAMES": [
+      "K\u0268r\u0268sit\u0289 s\u0268 anavyaal",
+      "K\u0268r\u0268sit\u0289 akavyaalwe"
+    ],
+    "ERAS": [
+      "KSA",
+      "KA"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "K\u0289f\u00fangat\u0268",
+      "K\u0289naan\u0268",
+      "K\u0289keenda",
+      "Kwiikumi",
+      "Kwiinyamb\u00e1la",
+      "Kwiidwaata",
+      "K\u0289m\u0289\u0289nch\u0268",
+      "K\u0289v\u0268\u0268r\u0268",
+      "K\u0289saat\u0289",
+      "Kwiinyi",
+      "K\u0289saano",
+      "K\u0289sasat\u0289"
+    ],
+    "SHORTDAY": [
+      "P\u00edili",
+      "T\u00e1atu",
+      "\u00cdne",
+      "T\u00e1ano",
+      "Alh",
+      "Ijm",
+      "M\u00f3osi"
+    ],
+    "SHORTMONTH": [
+      "F\u00fangat\u0268",
+      "Naan\u0268",
+      "Keenda",
+      "Ik\u00fami",
+      "Inyambala",
+      "Idwaata",
+      "M\u0289\u0289nch\u0268",
+      "V\u0268\u0268r\u0268",
+      "Saat\u0289",
+      "Inyi",
+      "Saano",
+      "Sasat\u0289"
+    ],
+    "STANDALONEMONTH": [
+      "K\u0289f\u00fangat\u0268",
+      "K\u0289naan\u0268",
+      "K\u0289keenda",
+      "Kwiikumi",
+      "Kwiinyamb\u00e1la",
+      "Kwiidwaata",
+      "K\u0289m\u0289\u0289nch\u0268",
+      "K\u0289v\u0268\u0268r\u0268",
+      "K\u0289saat\u0289",
+      "Kwiinyi",
+      "K\u0289saano",
+      "K\u0289sasat\u0289"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "TSh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "lag-tz",
+  "localeID": "lag_TZ",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lag.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lag.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lag.js
new file mode 100644
index 0000000..db5682f
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lag.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "TOO",
+      "MUU"
+    ],
+    "DAY": [
+      "Jumap\u00ediri",
+      "Jumat\u00e1tu",
+      "Juma\u00edne",
+      "Jumat\u00e1ano",
+      "Alam\u00edisi",
+      "Ijum\u00e1a",
+      "Jumam\u00f3osi"
+    ],
+    "ERANAMES": [
+      "K\u0268r\u0268sit\u0289 s\u0268 anavyaal",
+      "K\u0268r\u0268sit\u0289 akavyaalwe"
+    ],
+    "ERAS": [
+      "KSA",
+      "KA"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "K\u0289f\u00fangat\u0268",
+      "K\u0289naan\u0268",
+      "K\u0289keenda",
+      "Kwiikumi",
+      "Kwiinyamb\u00e1la",
+      "Kwiidwaata",
+      "K\u0289m\u0289\u0289nch\u0268",
+      "K\u0289v\u0268\u0268r\u0268",
+      "K\u0289saat\u0289",
+      "Kwiinyi",
+      "K\u0289saano",
+      "K\u0289sasat\u0289"
+    ],
+    "SHORTDAY": [
+      "P\u00edili",
+      "T\u00e1atu",
+      "\u00cdne",
+      "T\u00e1ano",
+      "Alh",
+      "Ijm",
+      "M\u00f3osi"
+    ],
+    "SHORTMONTH": [
+      "F\u00fangat\u0268",
+      "Naan\u0268",
+      "Keenda",
+      "Ik\u00fami",
+      "Inyambala",
+      "Idwaata",
+      "M\u0289\u0289nch\u0268",
+      "V\u0268\u0268r\u0268",
+      "Saat\u0289",
+      "Inyi",
+      "Saano",
+      "Sasat\u0289"
+    ],
+    "STANDALONEMONTH": [
+      "K\u0289f\u00fangat\u0268",
+      "K\u0289naan\u0268",
+      "K\u0289keenda",
+      "Kwiikumi",
+      "Kwiinyamb\u00e1la",
+      "Kwiidwaata",
+      "K\u0289m\u0289\u0289nch\u0268",
+      "K\u0289v\u0268\u0268r\u0268",
+      "K\u0289saat\u0289",
+      "Kwiinyi",
+      "K\u0289saano",
+      "K\u0289sasat\u0289"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "TSh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "lag",
+  "localeID": "lag",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lb-lu.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lb-lu.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lb-lu.js
new file mode 100644
index 0000000..a55c1f0
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lb-lu.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "moies",
+      "nom\u00ebttes"
+    ],
+    "DAY": [
+      "Sonndeg",
+      "M\u00e9indeg",
+      "D\u00ebnschdeg",
+      "M\u00ebttwoch",
+      "Donneschdeg",
+      "Freideg",
+      "Samschdeg"
+    ],
+    "ERANAMES": [
+      "v. Chr.",
+      "n. Chr."
+    ],
+    "ERAS": [
+      "v. Chr.",
+      "n. Chr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Januar",
+      "Februar",
+      "M\u00e4erz",
+      "Abr\u00ebll",
+      "Mee",
+      "Juni",
+      "Juli",
+      "August",
+      "September",
+      "Oktober",
+      "November",
+      "Dezember"
+    ],
+    "SHORTDAY": [
+      "Son.",
+      "M\u00e9i.",
+      "D\u00ebn.",
+      "M\u00ebt.",
+      "Don.",
+      "Fre.",
+      "Sam."
+    ],
+    "SHORTMONTH": [
+      "Jan.",
+      "Feb.",
+      "M\u00e4e.",
+      "Abr.",
+      "Mee",
+      "Juni",
+      "Juli",
+      "Aug.",
+      "Sep.",
+      "Okt.",
+      "Nov.",
+      "Dez."
+    ],
+    "STANDALONEMONTH": [
+      "Januar",
+      "Februar",
+      "M\u00e4erz",
+      "Abr\u00ebll",
+      "Mee",
+      "Juni",
+      "Juli",
+      "August",
+      "September",
+      "Oktober",
+      "November",
+      "Dezember"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "d. MMM y HH:mm:ss",
+    "mediumDate": "d. MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.yy HH:mm",
+    "shortDate": "dd.MM.yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "lb-lu",
+  "localeID": "lb_LU",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lb.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lb.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lb.js
new file mode 100644
index 0000000..92fd0f9
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lb.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "moies",
+      "nom\u00ebttes"
+    ],
+    "DAY": [
+      "Sonndeg",
+      "M\u00e9indeg",
+      "D\u00ebnschdeg",
+      "M\u00ebttwoch",
+      "Donneschdeg",
+      "Freideg",
+      "Samschdeg"
+    ],
+    "ERANAMES": [
+      "v. Chr.",
+      "n. Chr."
+    ],
+    "ERAS": [
+      "v. Chr.",
+      "n. Chr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Januar",
+      "Februar",
+      "M\u00e4erz",
+      "Abr\u00ebll",
+      "Mee",
+      "Juni",
+      "Juli",
+      "August",
+      "September",
+      "Oktober",
+      "November",
+      "Dezember"
+    ],
+    "SHORTDAY": [
+      "Son.",
+      "M\u00e9i.",
+      "D\u00ebn.",
+      "M\u00ebt.",
+      "Don.",
+      "Fre.",
+      "Sam."
+    ],
+    "SHORTMONTH": [
+      "Jan.",
+      "Feb.",
+      "M\u00e4e.",
+      "Abr.",
+      "Mee",
+      "Juni",
+      "Juli",
+      "Aug.",
+      "Sep.",
+      "Okt.",
+      "Nov.",
+      "Dez."
+    ],
+    "STANDALONEMONTH": [
+      "Januar",
+      "Februar",
+      "M\u00e4erz",
+      "Abr\u00ebll",
+      "Mee",
+      "Juni",
+      "Juli",
+      "August",
+      "September",
+      "Oktober",
+      "November",
+      "Dezember"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "d. MMM y HH:mm:ss",
+    "mediumDate": "d. MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.yy HH:mm",
+    "shortDate": "dd.MM.yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "lb",
+  "localeID": "lb",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lg-ug.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lg-ug.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lg-ug.js
new file mode 100644
index 0000000..6e884f3
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lg-ug.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sabbiiti",
+      "Balaza",
+      "Lwakubiri",
+      "Lwakusatu",
+      "Lwakuna",
+      "Lwakutaano",
+      "Lwamukaaga"
+    ],
+    "ERANAMES": [
+      "Kulisito nga tannaza",
+      "Bukya Kulisito Azaal"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Janwaliyo",
+      "Febwaliyo",
+      "Marisi",
+      "Apuli",
+      "Maayi",
+      "Juuni",
+      "Julaayi",
+      "Agusito",
+      "Sebuttemba",
+      "Okitobba",
+      "Novemba",
+      "Desemba"
+    ],
+    "SHORTDAY": [
+      "Sab",
+      "Bal",
+      "Lw2",
+      "Lw3",
+      "Lw4",
+      "Lw5",
+      "Lw6"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apu",
+      "Maa",
+      "Juu",
+      "Jul",
+      "Agu",
+      "Seb",
+      "Oki",
+      "Nov",
+      "Des"
+    ],
+    "STANDALONEMONTH": [
+      "Janwaliyo",
+      "Febwaliyo",
+      "Marisi",
+      "Apuli",
+      "Maayi",
+      "Juuni",
+      "Julaayi",
+      "Agusito",
+      "Sebuttemba",
+      "Okitobba",
+      "Novemba",
+      "Desemba"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "UGX",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a4"
+      }
+    ]
+  },
+  "id": "lg-ug",
+  "localeID": "lg_UG",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lg.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lg.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lg.js
new file mode 100644
index 0000000..dd56614
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lg.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sabbiiti",
+      "Balaza",
+      "Lwakubiri",
+      "Lwakusatu",
+      "Lwakuna",
+      "Lwakutaano",
+      "Lwamukaaga"
+    ],
+    "ERANAMES": [
+      "Kulisito nga tannaza",
+      "Bukya Kulisito Azaal"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Janwaliyo",
+      "Febwaliyo",
+      "Marisi",
+      "Apuli",
+      "Maayi",
+      "Juuni",
+      "Julaayi",
+      "Agusito",
+      "Sebuttemba",
+      "Okitobba",
+      "Novemba",
+      "Desemba"
+    ],
+    "SHORTDAY": [
+      "Sab",
+      "Bal",
+      "Lw2",
+      "Lw3",
+      "Lw4",
+      "Lw5",
+      "Lw6"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apu",
+      "Maa",
+      "Juu",
+      "Jul",
+      "Agu",
+      "Seb",
+      "Oki",
+      "Nov",
+      "Des"
+    ],
+    "STANDALONEMONTH": [
+      "Janwaliyo",
+      "Febwaliyo",
+      "Marisi",
+      "Apuli",
+      "Maayi",
+      "Juuni",
+      "Julaayi",
+      "Agusito",
+      "Sebuttemba",
+      "Okitobba",
+      "Novemba",
+      "Desemba"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "UGX",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a4"
+      }
+    ]
+  },
+  "id": "lg",
+  "localeID": "lg",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);


[25/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular.min.js.map
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular.min.js.map b/rocketmq-console/src/main/resources/static/vendor/angular/angular.min.js.map
new file mode 100644
index 0000000..abf5127
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular.min.js.map
@@ -0,0 +1,8 @@
+{
+"version":3,
+"file":"angular.min.js",
+"lineCount":315,
+"mappings":"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

<TRUNCATED>


[23/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-eh.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-eh.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-eh.js
new file mode 100644
index 0000000..a1e4460
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-eh.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0635",
+      "\u0645"
+    ],
+    "DAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "ERANAMES": [
+      "\u0642\u0628\u0644 \u0627\u0644\u0645\u064a\u0644\u0627\u062f",
+      "\u0645\u064a\u0644\u0627\u062f\u064a"
+    ],
+    "ERAS": [
+      "\u0642.\u0645",
+      "\u0645"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "SHORTDAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "SHORTMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "STANDALONEMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE\u060c d MMMM\u060c y",
+    "longDate": "d MMMM\u060c y",
+    "medium": "dd\u200f/MM\u200f/y h:mm:ss a",
+    "mediumDate": "dd\u200f/MM\u200f/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d\u200f/M\u200f/y h:mm a",
+    "shortDate": "d\u200f/M\u200f/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "dh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ar-eh",
+  "localeID": "ar_EH",
+  "pluralCat": function(n, opt_precision) {  if (n == 0) {    return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  if (n == 2) {    return PLURAL_CATEGORY.TWO;  }  if (n % 100 >= 3 && n % 100 <= 10) {    return PLURAL_CATEGORY.FEW;  }  if (n % 100 >= 11 && n % 100 <= 99) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-er.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-er.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-er.js
new file mode 100644
index 0000000..edbbccd
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-er.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0635",
+      "\u0645"
+    ],
+    "DAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "ERANAMES": [
+      "\u0642\u0628\u0644 \u0627\u0644\u0645\u064a\u0644\u0627\u062f",
+      "\u0645\u064a\u0644\u0627\u062f\u064a"
+    ],
+    "ERAS": [
+      "\u0642.\u0645",
+      "\u0645"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "SHORTDAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "SHORTMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "STANDALONEMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE\u060c d MMMM\u060c y",
+    "longDate": "d MMMM\u060c y",
+    "medium": "dd\u200f/MM\u200f/y h:mm:ss a",
+    "mediumDate": "dd\u200f/MM\u200f/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d\u200f/M\u200f/y h:mm a",
+    "shortDate": "d\u200f/M\u200f/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Nfk",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ar-er",
+  "localeID": "ar_ER",
+  "pluralCat": function(n, opt_precision) {  if (n == 0) {    return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  if (n == 2) {    return PLURAL_CATEGORY.TWO;  }  if (n % 100 >= 3 && n % 100 <= 10) {    return PLURAL_CATEGORY.FEW;  }  if (n % 100 >= 11 && n % 100 <= 99) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-il.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-il.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-il.js
new file mode 100644
index 0000000..7c1e4fd
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-il.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0635",
+      "\u0645"
+    ],
+    "DAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "ERANAMES": [
+      "\u0642\u0628\u0644 \u0627\u0644\u0645\u064a\u0644\u0627\u062f",
+      "\u0645\u064a\u0644\u0627\u062f\u064a"
+    ],
+    "ERAS": [
+      "\u0642.\u0645",
+      "\u0645"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "SHORTDAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "SHORTMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "STANDALONEMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      5
+    ],
+    "fullDate": "EEEE\u060c d MMMM\u060c y",
+    "longDate": "d MMMM\u060c y",
+    "medium": "dd\u200f/MM\u200f/y h:mm:ss a",
+    "mediumDate": "dd\u200f/MM\u200f/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d\u200f/M\u200f/y h:mm a",
+    "shortDate": "d\u200f/M\u200f/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20aa",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ar-il",
+  "localeID": "ar_IL",
+  "pluralCat": function(n, opt_precision) {  if (n == 0) {    return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  if (n == 2) {    return PLURAL_CATEGORY.TWO;  }  if (n % 100 >= 3 && n % 100 <= 10) {    return PLURAL_CATEGORY.FEW;  }  if (n % 100 >= 11 && n % 100 <= 99) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-iq.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-iq.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-iq.js
new file mode 100644
index 0000000..4c26108
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-iq.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0635",
+      "\u0645"
+    ],
+    "DAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "ERANAMES": [
+      "\u0642\u0628\u0644 \u0627\u0644\u0645\u064a\u0644\u0627\u062f",
+      "\u0645\u064a\u0644\u0627\u062f\u064a"
+    ],
+    "ERAS": [
+      "\u0642.\u0645",
+      "\u0645"
+    ],
+    "FIRSTDAYOFWEEK": 5,
+    "MONTH": [
+      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+      "\u0634\u0628\u0627\u0637",
+      "\u0622\u0630\u0627\u0631",
+      "\u0646\u064a\u0633\u0627\u0646",
+      "\u0623\u064a\u0627\u0631",
+      "\u062d\u0632\u064a\u0631\u0627\u0646",
+      "\u062a\u0645\u0648\u0632",
+      "\u0622\u0628",
+      "\u0623\u064a\u0644\u0648\u0644",
+      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644",
+      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"
+    ],
+    "SHORTDAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "SHORTMONTH": [
+      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+      "\u0634\u0628\u0627\u0637",
+      "\u0622\u0630\u0627\u0631",
+      "\u0646\u064a\u0633\u0627\u0646",
+      "\u0623\u064a\u0627\u0631",
+      "\u062d\u0632\u064a\u0631\u0627\u0646",
+      "\u062a\u0645\u0648\u0632",
+      "\u0622\u0628",
+      "\u0623\u064a\u0644\u0648\u0644",
+      "\u062a\u0634\u0631\u06cc\u0646 \u0627\u0644\u0623\u0648\u0644",
+      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"
+    ],
+    "STANDALONEMONTH": [
+      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+      "\u0634\u0628\u0627\u0637",
+      "\u0622\u0630\u0627\u0631",
+      "\u0646\u064a\u0633\u0627\u0646",
+      "\u0623\u064a\u0627\u0631",
+      "\u062d\u0632\u064a\u0631\u0627\u0646",
+      "\u062a\u0645\u0648\u0632",
+      "\u0622\u0628",
+      "\u0623\u064a\u0644\u0648\u0644",
+      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644",
+      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      5
+    ],
+    "fullDate": "EEEE\u060c d MMMM\u060c y",
+    "longDate": "d MMMM\u060c y",
+    "medium": "dd\u200f/MM\u200f/y h:mm:ss a",
+    "mediumDate": "dd\u200f/MM\u200f/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d\u200f/M\u200f/y h:mm a",
+    "shortDate": "d\u200f/M\u200f/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "din",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ar-iq",
+  "localeID": "ar_IQ",
+  "pluralCat": function(n, opt_precision) {  if (n == 0) {    return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  if (n == 2) {    return PLURAL_CATEGORY.TWO;  }  if (n % 100 >= 3 && n % 100 <= 10) {    return PLURAL_CATEGORY.FEW;  }  if (n % 100 >= 11 && n % 100 <= 99) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-jo.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-jo.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-jo.js
new file mode 100644
index 0000000..8bd5a66
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-jo.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0635",
+      "\u0645"
+    ],
+    "DAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "ERANAMES": [
+      "\u0642\u0628\u0644 \u0627\u0644\u0645\u064a\u0644\u0627\u062f",
+      "\u0645\u064a\u0644\u0627\u062f\u064a"
+    ],
+    "ERAS": [
+      "\u0642.\u0645",
+      "\u0645"
+    ],
+    "FIRSTDAYOFWEEK": 5,
+    "MONTH": [
+      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+      "\u0634\u0628\u0627\u0637",
+      "\u0622\u0630\u0627\u0631",
+      "\u0646\u064a\u0633\u0627\u0646",
+      "\u0623\u064a\u0627\u0631",
+      "\u062d\u0632\u064a\u0631\u0627\u0646",
+      "\u062a\u0645\u0648\u0632",
+      "\u0622\u0628",
+      "\u0623\u064a\u0644\u0648\u0644",
+      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644",
+      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"
+    ],
+    "SHORTDAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "SHORTMONTH": [
+      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+      "\u0634\u0628\u0627\u0637",
+      "\u0622\u0630\u0627\u0631",
+      "\u0646\u064a\u0633\u0627\u0646",
+      "\u0623\u064a\u0627\u0631",
+      "\u062d\u0632\u064a\u0631\u0627\u0646",
+      "\u062a\u0645\u0648\u0632",
+      "\u0622\u0628",
+      "\u0623\u064a\u0644\u0648\u0644",
+      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644",
+      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"
+    ],
+    "STANDALONEMONTH": [
+      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+      "\u0634\u0628\u0627\u0637",
+      "\u0622\u0630\u0627\u0631",
+      "\u0646\u064a\u0633\u0627\u0646",
+      "\u0623\u064a\u0627\u0631",
+      "\u062d\u0632\u064a\u0631\u0627\u0646",
+      "\u062a\u0645\u0648\u0632",
+      "\u0622\u0628",
+      "\u0623\u064a\u0644\u0648\u0644",
+      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644",
+      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      5
+    ],
+    "fullDate": "EEEE\u060c d MMMM\u060c y",
+    "longDate": "d MMMM\u060c y",
+    "medium": "dd\u200f/MM\u200f/y h:mm:ss a",
+    "mediumDate": "dd\u200f/MM\u200f/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d\u200f/M\u200f/y h:mm a",
+    "shortDate": "d\u200f/M\u200f/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "din",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ar-jo",
+  "localeID": "ar_JO",
+  "pluralCat": function(n, opt_precision) {  if (n == 0) {    return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  if (n == 2) {    return PLURAL_CATEGORY.TWO;  }  if (n % 100 >= 3 && n % 100 <= 10) {    return PLURAL_CATEGORY.FEW;  }  if (n % 100 >= 11 && n % 100 <= 99) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-km.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-km.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-km.js
new file mode 100644
index 0000000..00d205d
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-km.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0635",
+      "\u0645"
+    ],
+    "DAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "ERANAMES": [
+      "\u0642\u0628\u0644 \u0627\u0644\u0645\u064a\u0644\u0627\u062f",
+      "\u0645\u064a\u0644\u0627\u062f\u064a"
+    ],
+    "ERAS": [
+      "\u0642.\u0645",
+      "\u0645"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "SHORTDAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "SHORTMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "STANDALONEMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE\u060c d MMMM\u060c y",
+    "longDate": "d MMMM\u060c y",
+    "medium": "dd\u200f/MM\u200f/y h:mm:ss a",
+    "mediumDate": "dd\u200f/MM\u200f/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d\u200f/M\u200f/y h:mm a",
+    "shortDate": "d\u200f/M\u200f/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "CF",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ar-km",
+  "localeID": "ar_KM",
+  "pluralCat": function(n, opt_precision) {  if (n == 0) {    return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  if (n == 2) {    return PLURAL_CATEGORY.TWO;  }  if (n % 100 >= 3 && n % 100 <= 10) {    return PLURAL_CATEGORY.FEW;  }  if (n % 100 >= 11 && n % 100 <= 99) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-kw.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-kw.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-kw.js
new file mode 100644
index 0000000..c986311
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-kw.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0635",
+      "\u0645"
+    ],
+    "DAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "ERANAMES": [
+      "\u0642\u0628\u0644 \u0627\u0644\u0645\u064a\u0644\u0627\u062f",
+      "\u0645\u064a\u0644\u0627\u062f\u064a"
+    ],
+    "ERAS": [
+      "\u0642.\u0645",
+      "\u0645"
+    ],
+    "FIRSTDAYOFWEEK": 5,
+    "MONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "SHORTDAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "SHORTMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "STANDALONEMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      5
+    ],
+    "fullDate": "EEEE\u060c d MMMM\u060c y",
+    "longDate": "d MMMM\u060c y",
+    "medium": "dd\u200f/MM\u200f/y h:mm:ss a",
+    "mediumDate": "dd\u200f/MM\u200f/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d\u200f/M\u200f/y h:mm a",
+    "shortDate": "d\u200f/M\u200f/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "din",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ar-kw",
+  "localeID": "ar_KW",
+  "pluralCat": function(n, opt_precision) {  if (n == 0) {    return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  if (n == 2) {    return PLURAL_CATEGORY.TWO;  }  if (n % 100 >= 3 && n % 100 <= 10) {    return PLURAL_CATEGORY.FEW;  }  if (n % 100 >= 11 && n % 100 <= 99) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-lb.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-lb.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-lb.js
new file mode 100644
index 0000000..2bb07fc
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-lb.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0635",
+      "\u0645"
+    ],
+    "DAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "ERANAMES": [
+      "\u0642\u0628\u0644 \u0627\u0644\u0645\u064a\u0644\u0627\u062f",
+      "\u0645\u064a\u0644\u0627\u062f\u064a"
+    ],
+    "ERAS": [
+      "\u0642.\u0645",
+      "\u0645"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+      "\u0634\u0628\u0627\u0637",
+      "\u0622\u0630\u0627\u0631",
+      "\u0646\u064a\u0633\u0627\u0646",
+      "\u0623\u064a\u0627\u0631",
+      "\u062d\u0632\u064a\u0631\u0627\u0646",
+      "\u062a\u0645\u0648\u0632",
+      "\u0622\u0628",
+      "\u0623\u064a\u0644\u0648\u0644",
+      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644",
+      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"
+    ],
+    "SHORTDAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "SHORTMONTH": [
+      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+      "\u0634\u0628\u0627\u0637",
+      "\u0622\u0630\u0627\u0631",
+      "\u0646\u064a\u0633\u0627\u0646",
+      "\u0623\u064a\u0627\u0631",
+      "\u062d\u0632\u064a\u0631\u0627\u0646",
+      "\u062a\u0645\u0648\u0632",
+      "\u0622\u0628",
+      "\u0623\u064a\u0644\u0648\u0644",
+      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644",
+      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"
+    ],
+    "STANDALONEMONTH": [
+      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+      "\u0634\u0628\u0627\u0637",
+      "\u0622\u0630\u0627\u0631",
+      "\u0646\u064a\u0633\u0627\u0646",
+      "\u0623\u064a\u0627\u0631",
+      "\u062d\u0632\u064a\u0631\u0627\u0646",
+      "\u062a\u0645\u0648\u0632",
+      "\u0622\u0628",
+      "\u0623\u064a\u0644\u0648\u0644",
+      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644",
+      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE\u060c d MMMM\u060c y",
+    "longDate": "d MMMM\u060c y",
+    "medium": "dd\u200f/MM\u200f/y h:mm:ss a",
+    "mediumDate": "dd\u200f/MM\u200f/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d\u200f/M\u200f/y h:mm a",
+    "shortDate": "d\u200f/M\u200f/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "L\u00a3",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ar-lb",
+  "localeID": "ar_LB",
+  "pluralCat": function(n, opt_precision) {  if (n == 0) {    return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  if (n == 2) {    return PLURAL_CATEGORY.TWO;  }  if (n % 100 >= 3 && n % 100 <= 10) {    return PLURAL_CATEGORY.FEW;  }  if (n % 100 >= 11 && n % 100 <= 99) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-ly.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-ly.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-ly.js
new file mode 100644
index 0000000..622bde2
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-ly.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0635",
+      "\u0645"
+    ],
+    "DAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "ERANAMES": [
+      "\u0642\u0628\u0644 \u0627\u0644\u0645\u064a\u0644\u0627\u062f",
+      "\u0645\u064a\u0644\u0627\u062f\u064a"
+    ],
+    "ERAS": [
+      "\u0642.\u0645",
+      "\u0645"
+    ],
+    "FIRSTDAYOFWEEK": 5,
+    "MONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "SHORTDAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "SHORTMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "STANDALONEMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      5
+    ],
+    "fullDate": "EEEE\u060c d MMMM\u060c y",
+    "longDate": "d MMMM\u060c y",
+    "medium": "dd\u200f/MM\u200f/y h:mm:ss a",
+    "mediumDate": "dd\u200f/MM\u200f/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d\u200f/M\u200f/y h:mm a",
+    "shortDate": "d\u200f/M\u200f/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "din",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ar-ly",
+  "localeID": "ar_LY",
+  "pluralCat": function(n, opt_precision) {  if (n == 0) {    return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  if (n == 2) {    return PLURAL_CATEGORY.TWO;  }  if (n % 100 >= 3 && n % 100 <= 10) {    return PLURAL_CATEGORY.FEW;  }  if (n % 100 >= 11 && n % 100 <= 99) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-ma.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-ma.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-ma.js
new file mode 100644
index 0000000..e00bfd7
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-ma.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0635",
+      "\u0645"
+    ],
+    "DAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "ERANAMES": [
+      "\u0642\u0628\u0644 \u0627\u0644\u0645\u064a\u0644\u0627\u062f",
+      "\u0645\u064a\u0644\u0627\u062f\u064a"
+    ],
+    "ERAS": [
+      "\u0642.\u0645",
+      "\u0645"
+    ],
+    "FIRSTDAYOFWEEK": 5,
+    "MONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648\u0632",
+      "\u063a\u0634\u062a",
+      "\u0634\u062a\u0646\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0646\u0628\u0631",
+      "\u062f\u062c\u0646\u0628\u0631"
+    ],
+    "SHORTDAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "SHORTMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648\u0632",
+      "\u063a\u0634\u062a",
+      "\u0634\u062a\u0646\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0646\u0628\u0631",
+      "\u062f\u062c\u0646\u0628\u0631"
+    ],
+    "STANDALONEMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648\u0632",
+      "\u063a\u0634\u062a",
+      "\u0634\u062a\u0646\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0646\u0628\u0631",
+      "\u062f\u062c\u0646\u0628\u0631"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      5
+    ],
+    "fullDate": "EEEE\u060c d MMMM\u060c y",
+    "longDate": "d MMMM\u060c y",
+    "medium": "dd\u200f/MM\u200f/y h:mm:ss a",
+    "mediumDate": "dd\u200f/MM\u200f/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d\u200f/M\u200f/y h:mm a",
+    "shortDate": "d\u200f/M\u200f/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "dh",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ar-ma",
+  "localeID": "ar_MA",
+  "pluralCat": function(n, opt_precision) {  if (n == 0) {    return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  if (n == 2) {    return PLURAL_CATEGORY.TWO;  }  if (n % 100 >= 3 && n % 100 <= 10) {    return PLURAL_CATEGORY.FEW;  }  if (n % 100 >= 11 && n % 100 <= 99) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-mr.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-mr.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-mr.js
new file mode 100644
index 0000000..259a617
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-mr.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0635",
+      "\u0645"
+    ],
+    "DAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "ERANAMES": [
+      "\u0642\u0628\u0644 \u0627\u0644\u0645\u064a\u0644\u0627\u062f",
+      "\u0645\u064a\u0644\u0627\u062f\u064a"
+    ],
+    "ERAS": [
+      "\u0642.\u0645",
+      "\u0645"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0625\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0634\u062a",
+      "\u0634\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u062c\u0645\u0628\u0631"
+    ],
+    "SHORTDAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "SHORTMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0625\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0634\u062a",
+      "\u0634\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u062c\u0645\u0628\u0631"
+    ],
+    "STANDALONEMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0625\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0634\u062a",
+      "\u0634\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u062c\u0645\u0628\u0631"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE\u060c d MMMM\u060c y",
+    "longDate": "d MMMM\u060c y",
+    "medium": "dd\u200f/MM\u200f/y h:mm:ss a",
+    "mediumDate": "dd\u200f/MM\u200f/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d\u200f/M\u200f/y h:mm a",
+    "shortDate": "d\u200f/M\u200f/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "MRO",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ar-mr",
+  "localeID": "ar_MR",
+  "pluralCat": function(n, opt_precision) {  if (n == 0) {    return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  if (n == 2) {    return PLURAL_CATEGORY.TWO;  }  if (n % 100 >= 3 && n % 100 <= 10) {    return PLURAL_CATEGORY.FEW;  }  if (n % 100 >= 11 && n % 100 <= 99) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-om.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-om.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-om.js
new file mode 100644
index 0000000..947fe89
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-om.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0635",
+      "\u0645"
+    ],
+    "DAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "ERANAMES": [
+      "\u0642\u0628\u0644 \u0627\u0644\u0645\u064a\u0644\u0627\u062f",
+      "\u0645\u064a\u0644\u0627\u062f\u064a"
+    ],
+    "ERAS": [
+      "\u0642.\u0645",
+      "\u0645"
+    ],
+    "FIRSTDAYOFWEEK": 5,
+    "MONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "SHORTDAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "SHORTMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "STANDALONEMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      5
+    ],
+    "fullDate": "EEEE\u060c d MMMM\u060c y",
+    "longDate": "d MMMM\u060c y",
+    "medium": "dd\u200f/MM\u200f/y h:mm:ss a",
+    "mediumDate": "dd\u200f/MM\u200f/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d\u200f/M\u200f/y h:mm a",
+    "shortDate": "d\u200f/M\u200f/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Rial",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ar-om",
+  "localeID": "ar_OM",
+  "pluralCat": function(n, opt_precision) {  if (n == 0) {    return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  if (n == 2) {    return PLURAL_CATEGORY.TWO;  }  if (n % 100 >= 3 && n % 100 <= 10) {    return PLURAL_CATEGORY.FEW;  }  if (n % 100 >= 11 && n % 100 <= 99) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-ps.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-ps.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-ps.js
new file mode 100644
index 0000000..26baca0
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-ps.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0635",
+      "\u0645"
+    ],
+    "DAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "ERANAMES": [
+      "\u0642\u0628\u0644 \u0627\u0644\u0645\u064a\u0644\u0627\u062f",
+      "\u0645\u064a\u0644\u0627\u062f\u064a"
+    ],
+    "ERAS": [
+      "\u0642.\u0645",
+      "\u0645"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+      "\u0634\u0628\u0627\u0637",
+      "\u0622\u0630\u0627\u0631",
+      "\u0646\u064a\u0633\u0627\u0646",
+      "\u0623\u064a\u0627\u0631",
+      "\u062d\u0632\u064a\u0631\u0627\u0646",
+      "\u062a\u0645\u0648\u0632",
+      "\u0622\u0628",
+      "\u0623\u064a\u0644\u0648\u0644",
+      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644",
+      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"
+    ],
+    "SHORTDAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "SHORTMONTH": [
+      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+      "\u0634\u0628\u0627\u0637",
+      "\u0622\u0630\u0627\u0631",
+      "\u0646\u064a\u0633\u0627\u0646",
+      "\u0623\u064a\u0627\u0631",
+      "\u062d\u0632\u064a\u0631\u0627\u0646",
+      "\u062a\u0645\u0648\u0632",
+      "\u0622\u0628",
+      "\u0623\u064a\u0644\u0648\u0644",
+      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644",
+      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"
+    ],
+    "STANDALONEMONTH": [
+      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+      "\u0634\u0628\u0627\u0637",
+      "\u0622\u0630\u0627\u0631",
+      "\u0646\u064a\u0633\u0627\u0646",
+      "\u0623\u064a\u0627\u0631",
+      "\u062d\u0632\u064a\u0631\u0627\u0646",
+      "\u062a\u0645\u0648\u0632",
+      "\u0622\u0628",
+      "\u0623\u064a\u0644\u0648\u0644",
+      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644",
+      "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+      "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE\u060c d MMMM\u060c y",
+    "longDate": "d MMMM\u060c y",
+    "medium": "dd\u200f/MM\u200f/y h:mm:ss a",
+    "mediumDate": "dd\u200f/MM\u200f/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d\u200f/M\u200f/y h:mm a",
+    "shortDate": "d\u200f/M\u200f/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20aa",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ar-ps",
+  "localeID": "ar_PS",
+  "pluralCat": function(n, opt_precision) {  if (n == 0) {    return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  if (n == 2) {    return PLURAL_CATEGORY.TWO;  }  if (n % 100 >= 3 && n % 100 <= 10) {    return PLURAL_CATEGORY.FEW;  }  if (n % 100 >= 11 && n % 100 <= 99) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-qa.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-qa.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-qa.js
new file mode 100644
index 0000000..7d9ea68
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-qa.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0635",
+      "\u0645"
+    ],
+    "DAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "ERANAMES": [
+      "\u0642\u0628\u0644 \u0627\u0644\u0645\u064a\u0644\u0627\u062f",
+      "\u0645\u064a\u0644\u0627\u062f\u064a"
+    ],
+    "ERAS": [
+      "\u0642.\u0645",
+      "\u0645"
+    ],
+    "FIRSTDAYOFWEEK": 5,
+    "MONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "SHORTDAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "SHORTMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "STANDALONEMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      5
+    ],
+    "fullDate": "EEEE\u060c d MMMM\u060c y",
+    "longDate": "d MMMM\u060c y",
+    "medium": "dd\u200f/MM\u200f/y h:mm:ss a",
+    "mediumDate": "dd\u200f/MM\u200f/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d\u200f/M\u200f/y h:mm a",
+    "shortDate": "d\u200f/M\u200f/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Rial",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ar-qa",
+  "localeID": "ar_QA",
+  "pluralCat": function(n, opt_precision) {  if (n == 0) {    return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  if (n == 2) {    return PLURAL_CATEGORY.TWO;  }  if (n % 100 >= 3 && n % 100 <= 10) {    return PLURAL_CATEGORY.FEW;  }  if (n % 100 >= 11 && n % 100 <= 99) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-sa.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-sa.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-sa.js
new file mode 100644
index 0000000..5fb6653
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-sa.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0635",
+      "\u0645"
+    ],
+    "DAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "ERANAMES": [
+      "\u0642\u0628\u0644 \u0627\u0644\u0645\u064a\u0644\u0627\u062f",
+      "\u0645\u064a\u0644\u0627\u062f\u064a"
+    ],
+    "ERAS": [
+      "\u0642.\u0645",
+      "\u0645"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "SHORTDAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "SHORTMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "STANDALONEMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      5
+    ],
+    "fullDate": "EEEE\u060c d MMMM\u060c y",
+    "longDate": "d MMMM\u060c y",
+    "medium": "dd\u200f/MM\u200f/y h:mm:ss a",
+    "mediumDate": "dd\u200f/MM\u200f/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d\u200f/M\u200f/y h:mm a",
+    "shortDate": "d\u200f/M\u200f/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Rial",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ar-sa",
+  "localeID": "ar_SA",
+  "pluralCat": function(n, opt_precision) {  if (n == 0) {    return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  if (n == 2) {    return PLURAL_CATEGORY.TWO;  }  if (n % 100 >= 3 && n % 100 <= 10) {    return PLURAL_CATEGORY.FEW;  }  if (n % 100 >= 11 && n % 100 <= 99) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-sd.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-sd.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-sd.js
new file mode 100644
index 0000000..e8c6494
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-sd.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0635",
+      "\u0645"
+    ],
+    "DAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "ERANAMES": [
+      "\u0642\u0628\u0644 \u0627\u0644\u0645\u064a\u0644\u0627\u062f",
+      "\u0645\u064a\u0644\u0627\u062f\u064a"
+    ],
+    "ERAS": [
+      "\u0642.\u0645",
+      "\u0645"
+    ],
+    "FIRSTDAYOFWEEK": 5,
+    "MONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "SHORTDAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "SHORTMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "STANDALONEMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      5
+    ],
+    "fullDate": "EEEE\u060c d MMMM\u060c y",
+    "longDate": "d MMMM\u060c y",
+    "medium": "dd\u200f/MM\u200f/y h:mm:ss a",
+    "mediumDate": "dd\u200f/MM\u200f/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d\u200f/M\u200f/y h:mm a",
+    "shortDate": "d\u200f/M\u200f/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "SDG",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ar-sd",
+  "localeID": "ar_SD",
+  "pluralCat": function(n, opt_precision) {  if (n == 0) {    return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  if (n == 2) {    return PLURAL_CATEGORY.TWO;  }  if (n % 100 >= 3 && n % 100 <= 10) {    return PLURAL_CATEGORY.FEW;  }  if (n % 100 >= 11 && n % 100 <= 99) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-so.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-so.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-so.js
new file mode 100644
index 0000000..7ab6a54
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-so.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0635",
+      "\u0645"
+    ],
+    "DAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "ERANAMES": [
+      "\u0642\u0628\u0644 \u0627\u0644\u0645\u064a\u0644\u0627\u062f",
+      "\u0645\u064a\u0644\u0627\u062f\u064a"
+    ],
+    "ERAS": [
+      "\u0642.\u0645",
+      "\u0645"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "SHORTDAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "SHORTMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "STANDALONEMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE\u060c d MMMM\u060c y",
+    "longDate": "d MMMM\u060c y",
+    "medium": "dd\u200f/MM\u200f/y h:mm:ss a",
+    "mediumDate": "dd\u200f/MM\u200f/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d\u200f/M\u200f/y h:mm a",
+    "shortDate": "d\u200f/M\u200f/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "SOS",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ar-so",
+  "localeID": "ar_SO",
+  "pluralCat": function(n, opt_precision) {  if (n == 0) {    return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  if (n == 2) {    return PLURAL_CATEGORY.TWO;  }  if (n % 100 >= 3 && n % 100 <= 10) {    return PLURAL_CATEGORY.FEW;  }  if (n % 100 >= 11 && n % 100 <= 99) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-ss.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-ss.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-ss.js
new file mode 100644
index 0000000..c5afc29
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-ss.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0635",
+      "\u0645"
+    ],
+    "DAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "ERANAMES": [
+      "\u0642\u0628\u0644 \u0627\u0644\u0645\u064a\u0644\u0627\u062f",
+      "\u0645\u064a\u0644\u0627\u062f\u064a"
+    ],
+    "ERAS": [
+      "\u0642.\u0645",
+      "\u0645"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "SHORTDAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "SHORTMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "STANDALONEMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE\u060c d MMMM\u060c y",
+    "longDate": "d MMMM\u060c y",
+    "medium": "dd\u200f/MM\u200f/y h:mm:ss a",
+    "mediumDate": "dd\u200f/MM\u200f/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d\u200f/M\u200f/y h:mm a",
+    "shortDate": "d\u200f/M\u200f/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u00a3",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ar-ss",
+  "localeID": "ar_SS",
+  "pluralCat": function(n, opt_precision) {  if (n == 0) {    return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  if (n == 2) {    return PLURAL_CATEGORY.TWO;  }  if (n % 100 >= 3 && n % 100 <= 10) {    return PLURAL_CATEGORY.FEW;  }  if (n % 100 >= 11 && n % 100 <= 99) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);



[39/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-aria.min.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-aria.min.js b/rocketmq-console/src/main/resources/static/vendor/angular/angular-aria.min.js
new file mode 100644
index 0000000..6942fb6
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-aria.min.js
@@ -0,0 +1,14 @@
+/*
+ AngularJS v1.5.6
+ (c) 2010-2016 Google, Inc. http://angularjs.org
+ License: MIT
+*/
+(function(t,p){'use strict';var b="BUTTON A INPUT TEXTAREA SELECT DETAILS SUMMARY".split(" "),l=function(a,c){if(-1!==c.indexOf(a[0].nodeName))return!0};p.module("ngAria",["ng"]).provider("$aria",function(){function a(a,b,m,h){return function(d,f,e){var q=e.$normalize(b);!c[q]||l(f,m)||e[q]||d.$watch(e[a],function(a){a=h?!a:!!a;f.attr(b,a)})}}var c={ariaHidden:!0,ariaChecked:!0,ariaReadonly:!0,ariaDisabled:!0,ariaRequired:!0,ariaInvalid:!0,ariaValue:!0,tabindex:!0,bindKeypress:!0,bindRoleForClick:!0};
+this.config=function(a){c=p.extend(c,a)};this.$get=function(){return{config:function(a){return c[a]},$$watchExpr:a}}}).directive("ngShow",["$aria",function(a){return a.$$watchExpr("ngShow","aria-hidden",[],!0)}]).directive("ngHide",["$aria",function(a){return a.$$watchExpr("ngHide","aria-hidden",[],!1)}]).directive("ngValue",["$aria",function(a){return a.$$watchExpr("ngValue","aria-checked",b,!1)}]).directive("ngChecked",["$aria",function(a){return a.$$watchExpr("ngChecked","aria-checked",b,!1)}]).directive("ngReadonly",
+["$aria",function(a){return a.$$watchExpr("ngReadonly","aria-readonly",b,!1)}]).directive("ngRequired",["$aria",function(a){return a.$$watchExpr("ngRequired","aria-required",b,!1)}]).directive("ngModel",["$aria",function(a){function c(c,h,d,f){return a.config(h)&&!d.attr(c)&&(f||!l(d,b))}function g(a,c){return!c.attr("role")&&c.attr("type")===a&&"INPUT"!==c[0].nodeName}function k(a,c){var d=a.type,f=a.role;return"checkbox"===(d||f)||"menuitemcheckbox"===f?"checkbox":"radio"===(d||f)||"menuitemradio"===
+f?"radio":"range"===d||"progressbar"===f||"slider"===f?"range":""}return{restrict:"A",require:"ngModel",priority:200,compile:function(b,h){var d=k(h,b);return{pre:function(a,e,c,b){"checkbox"===d&&(b.$isEmpty=function(a){return!1===a})},post:function(f,e,b,n){function h(){return n.$modelValue}function k(a){e.attr("aria-checked",b.value==n.$viewValue)}function l(){e.attr("aria-checked",!n.$isEmpty(n.$viewValue))}var m=c("tabindex","tabindex",e,!1);switch(d){case "radio":case "checkbox":g(d,e)&&e.attr("role",
+d);c("aria-checked","ariaChecked",e,!1)&&f.$watch(h,"radio"===d?k:l);m&&e.attr("tabindex",0);break;case "range":g(d,e)&&e.attr("role","slider");if(a.config("ariaValue")){var p=!e.attr("aria-valuemin")&&(b.hasOwnProperty("min")||b.hasOwnProperty("ngMin")),r=!e.attr("aria-valuemax")&&(b.hasOwnProperty("max")||b.hasOwnProperty("ngMax")),s=!e.attr("aria-valuenow");p&&b.$observe("min",function(a){e.attr("aria-valuemin",a)});r&&b.$observe("max",function(a){e.attr("aria-valuemax",a)});s&&f.$watch(h,function(a){e.attr("aria-valuenow",
+a)})}m&&e.attr("tabindex",0)}!b.hasOwnProperty("ngRequired")&&n.$validators.required&&c("aria-required","ariaRequired",e,!1)&&b.$observe("required",function(){e.attr("aria-required",!!b.required)});c("aria-invalid","ariaInvalid",e,!0)&&f.$watch(function(){return n.$invalid},function(a){e.attr("aria-invalid",!!a)})}}}}}]).directive("ngDisabled",["$aria",function(a){return a.$$watchExpr("ngDisabled","aria-disabled",b,!1)}]).directive("ngMessages",function(){return{restrict:"A",require:"?ngMessages",
+link:function(a,b,g,k){b.attr("aria-live")||b.attr("aria-live","assertive")}}}).directive("ngClick",["$aria","$parse",function(a,c){return{restrict:"A",compile:function(g,k){var m=c(k.ngClick,null,!0);return function(c,d,f){if(!l(d,b)&&(a.config("bindRoleForClick")&&!d.attr("role")&&d.attr("role","button"),a.config("tabindex")&&!d.attr("tabindex")&&d.attr("tabindex",0),a.config("bindKeypress")&&!f.ngKeypress))d.on("keypress",function(a){function b(){m(c,{$event:a})}var d=a.which||a.keyCode;32!==d&&
+13!==d||c.$apply(b)})}}}}]).directive("ngDblclick",["$aria",function(a){return function(c,g,k){!a.config("tabindex")||g.attr("tabindex")||l(g,b)||g.attr("tabindex",0)}}])})(window,window.angular);
+//# sourceMappingURL=angular-aria.min.js.map

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-aria.min.js.map
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-aria.min.js.map b/rocketmq-console/src/main/resources/static/vendor/angular/angular-aria.min.js.map
new file mode 100644
index 0000000..925779b
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-aria.min.js.map
@@ -0,0 +1,8 @@
+{
+"version":3,
+"file":"angular-aria.min.js",
+"lineCount":13,
+"mappings":"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",
+"sources":["angular-aria.js"],
+"names":["window","angular","nodeBlackList","isNodeOneOf","elem","nodeTypeArray","indexOf","nodeName","module","provider","ngAriaModule","$AriaProvider","watchExpr","attrName","ariaAttr","negate","scope","attr","ariaCamelName","$normalize","config","$watch","boolVal","ariaHidden","ariaChecked","ariaReadonly","ariaDisabled","ariaRequired","ariaInvalid","ariaValue","tabindex","bindKeypress","bindRoleForClick","this.config","newConfig","extend","$get","this.$get","key","$$watchExpr","directive","$aria","shouldAttachAttr","normalizedAttr","allowBlacklistEls","shouldAttachRole","role","getShape","type","restrict","require","priority","compile","shape","pre","ngModel","$isEmpty","ngModel.$isEmpty","value","post","ngAriaWatchModelValue","$modelValue","getRadioReaction","newVal","$viewValue","getCheckboxReaction","needsTabIndex","needsAriaValuemin","hasOwnProperty","needsAriaValuemax","needsAriaValuenow","$observe","ngAriaValueMinReaction","ngAriaValueNowReaction","$validators","required","
 ngAriaInvalidWatch","$invalid","ngAriaInvalidReaction","link","ngMessages","$parse","fn","ngClick","ngKeypress","on","event","callback","$event","keyCode","which","$apply"]
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-cookies.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-cookies.js b/rocketmq-console/src/main/resources/static/vendor/angular/angular-cookies.js
new file mode 100644
index 0000000..f4801f2
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-cookies.js
@@ -0,0 +1,322 @@
+/**
+ * @license AngularJS v1.5.6
+ * (c) 2010-2016 Google, Inc. http://angularjs.org
+ * License: MIT
+ */
+(function(window, angular) {'use strict';
+
+/**
+ * @ngdoc module
+ * @name ngCookies
+ * @description
+ *
+ * # ngCookies
+ *
+ * The `ngCookies` module provides a convenient wrapper for reading and writing browser cookies.
+ *
+ *
+ * <div doc-module-components="ngCookies"></div>
+ *
+ * See {@link ngCookies.$cookies `$cookies`} for usage.
+ */
+
+
+angular.module('ngCookies', ['ng']).
+  /**
+   * @ngdoc provider
+   * @name $cookiesProvider
+   * @description
+   * Use `$cookiesProvider` to change the default behavior of the {@link ngCookies.$cookies $cookies} service.
+   * */
+   provider('$cookies', [function $CookiesProvider() {
+    /**
+     * @ngdoc property
+     * @name $cookiesProvider#defaults
+     * @description
+     *
+     * Object containing default options to pass when setting cookies.
+     *
+     * The object may have following properties:
+     *
+     * - **path** - `{string}` - The cookie will be available only for this path and its
+     *   sub-paths. By default, this is the URL that appears in your `<base>` tag.
+     * - **domain** - `{string}` - The cookie will be available only for this domain and
+     *   its sub-domains. For security reasons the user agent will not accept the cookie
+     *   if the current domain is not a sub-domain of this domain or equal to it.
+     * - **expires** - `{string|Date}` - String of the form "Wdy, DD Mon YYYY HH:MM:SS GMT"
+     *   or a Date object indicating the exact date/time this cookie will expire.
+     * - **secure** - `{boolean}` - If `true`, then the cookie will only be available through a
+     *   secured connection.
+     *
+     * Note: By default, the address that appears in your `<base>` tag will be used as the path.
+     * This is important so that cookies will be visible for all routes when html5mode is enabled.
+     *
+     **/
+    var defaults = this.defaults = {};
+
+    function calcOptions(options) {
+      return options ? angular.extend({}, defaults, options) : defaults;
+    }
+
+    /**
+     * @ngdoc service
+     * @name $cookies
+     *
+     * @description
+     * Provides read/write access to browser's cookies.
+     *
+     * <div class="alert alert-info">
+     * Up until Angular 1.3, `$cookies` exposed properties that represented the
+     * current browser cookie values. In version 1.4, this behavior has changed, and
+     * `$cookies` now provides a standard api of getters, setters etc.
+     * </div>
+     *
+     * Requires the {@link ngCookies `ngCookies`} module to be installed.
+     *
+     * @example
+     *
+     * ```js
+     * angular.module('cookiesExample', ['ngCookies'])
+     *   .controller('ExampleController', ['$cookies', function($cookies) {
+     *     // Retrieving a cookie
+     *     var favoriteCookie = $cookies.get('myFavorite');
+     *     // Setting a cookie
+     *     $cookies.put('myFavorite', 'oatmeal');
+     *   }]);
+     * ```
+     */
+    this.$get = ['$$cookieReader', '$$cookieWriter', function($$cookieReader, $$cookieWriter) {
+      return {
+        /**
+         * @ngdoc method
+         * @name $cookies#get
+         *
+         * @description
+         * Returns the value of given cookie key
+         *
+         * @param {string} key Id to use for lookup.
+         * @returns {string} Raw cookie value.
+         */
+        get: function(key) {
+          return $$cookieReader()[key];
+        },
+
+        /**
+         * @ngdoc method
+         * @name $cookies#getObject
+         *
+         * @description
+         * Returns the deserialized value of given cookie key
+         *
+         * @param {string} key Id to use for lookup.
+         * @returns {Object} Deserialized cookie value.
+         */
+        getObject: function(key) {
+          var value = this.get(key);
+          return value ? angular.fromJson(value) : value;
+        },
+
+        /**
+         * @ngdoc method
+         * @name $cookies#getAll
+         *
+         * @description
+         * Returns a key value object with all the cookies
+         *
+         * @returns {Object} All cookies
+         */
+        getAll: function() {
+          return $$cookieReader();
+        },
+
+        /**
+         * @ngdoc method
+         * @name $cookies#put
+         *
+         * @description
+         * Sets a value for given cookie key
+         *
+         * @param {string} key Id for the `value`.
+         * @param {string} value Raw value to be stored.
+         * @param {Object=} options Options object.
+         *    See {@link ngCookies.$cookiesProvider#defaults $cookiesProvider.defaults}
+         */
+        put: function(key, value, options) {
+          $$cookieWriter(key, value, calcOptions(options));
+        },
+
+        /**
+         * @ngdoc method
+         * @name $cookies#putObject
+         *
+         * @description
+         * Serializes and sets a value for given cookie key
+         *
+         * @param {string} key Id for the `value`.
+         * @param {Object} value Value to be stored.
+         * @param {Object=} options Options object.
+         *    See {@link ngCookies.$cookiesProvider#defaults $cookiesProvider.defaults}
+         */
+        putObject: function(key, value, options) {
+          this.put(key, angular.toJson(value), options);
+        },
+
+        /**
+         * @ngdoc method
+         * @name $cookies#remove
+         *
+         * @description
+         * Remove given cookie
+         *
+         * @param {string} key Id of the key-value pair to delete.
+         * @param {Object=} options Options object.
+         *    See {@link ngCookies.$cookiesProvider#defaults $cookiesProvider.defaults}
+         */
+        remove: function(key, options) {
+          $$cookieWriter(key, undefined, calcOptions(options));
+        }
+      };
+    }];
+  }]);
+
+angular.module('ngCookies').
+/**
+ * @ngdoc service
+ * @name $cookieStore
+ * @deprecated
+ * @requires $cookies
+ *
+ * @description
+ * Provides a key-value (string-object) storage, that is backed by session cookies.
+ * Objects put or retrieved from this storage are automatically serialized or
+ * deserialized by angular's toJson/fromJson.
+ *
+ * Requires the {@link ngCookies `ngCookies`} module to be installed.
+ *
+ * <div class="alert alert-danger">
+ * **Note:** The $cookieStore service is **deprecated**.
+ * Please use the {@link ngCookies.$cookies `$cookies`} service instead.
+ * </div>
+ *
+ * @example
+ *
+ * ```js
+ * angular.module('cookieStoreExample', ['ngCookies'])
+ *   .controller('ExampleController', ['$cookieStore', function($cookieStore) {
+ *     // Put cookie
+ *     $cookieStore.put('myFavorite','oatmeal');
+ *     // Get cookie
+ *     var favoriteCookie = $cookieStore.get('myFavorite');
+ *     // Removing a cookie
+ *     $cookieStore.remove('myFavorite');
+ *   }]);
+ * ```
+ */
+ factory('$cookieStore', ['$cookies', function($cookies) {
+
+    return {
+      /**
+       * @ngdoc method
+       * @name $cookieStore#get
+       *
+       * @description
+       * Returns the value of given cookie key
+       *
+       * @param {string} key Id to use for lookup.
+       * @returns {Object} Deserialized cookie value, undefined if the cookie does not exist.
+       */
+      get: function(key) {
+        return $cookies.getObject(key);
+      },
+
+      /**
+       * @ngdoc method
+       * @name $cookieStore#put
+       *
+       * @description
+       * Sets a value for given cookie key
+       *
+       * @param {string} key Id for the `value`.
+       * @param {Object} value Value to be stored.
+       */
+      put: function(key, value) {
+        $cookies.putObject(key, value);
+      },
+
+      /**
+       * @ngdoc method
+       * @name $cookieStore#remove
+       *
+       * @description
+       * Remove given cookie
+       *
+       * @param {string} key Id of the key-value pair to delete.
+       */
+      remove: function(key) {
+        $cookies.remove(key);
+      }
+    };
+
+  }]);
+
+/**
+ * @name $$cookieWriter
+ * @requires $document
+ *
+ * @description
+ * This is a private service for writing cookies
+ *
+ * @param {string} name Cookie name
+ * @param {string=} value Cookie value (if undefined, cookie will be deleted)
+ * @param {Object=} options Object with options that need to be stored for the cookie.
+ */
+function $$CookieWriter($document, $log, $browser) {
+  var cookiePath = $browser.baseHref();
+  var rawDocument = $document[0];
+
+  function buildCookieString(name, value, options) {
+    var path, expires;
+    options = options || {};
+    expires = options.expires;
+    path = angular.isDefined(options.path) ? options.path : cookiePath;
+    if (angular.isUndefined(value)) {
+      expires = 'Thu, 01 Jan 1970 00:00:00 GMT';
+      value = '';
+    }
+    if (angular.isString(expires)) {
+      expires = new Date(expires);
+    }
+
+    var str = encodeURIComponent(name) + '=' + encodeURIComponent(value);
+    str += path ? ';path=' + path : '';
+    str += options.domain ? ';domain=' + options.domain : '';
+    str += expires ? ';expires=' + expires.toUTCString() : '';
+    str += options.secure ? ';secure' : '';
+
+    // per http://www.ietf.org/rfc/rfc2109.txt browser must allow at minimum:
+    // - 300 cookies
+    // - 20 cookies per unique domain
+    // - 4096 bytes per cookie
+    var cookieLength = str.length + 1;
+    if (cookieLength > 4096) {
+      $log.warn("Cookie '" + name +
+        "' possibly not set or overflowed because it was too large (" +
+        cookieLength + " > 4096 bytes)!");
+    }
+
+    return str;
+  }
+
+  return function(name, value, options) {
+    rawDocument.cookie = buildCookieString(name, value, options);
+  };
+}
+
+$$CookieWriter.$inject = ['$document', '$log', '$browser'];
+
+angular.module('ngCookies').provider('$$cookieWriter', function $$CookieWriterProvider() {
+  this.$get = $$CookieWriter;
+});
+
+
+})(window, window.angular);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-cookies.min.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-cookies.min.js b/rocketmq-console/src/main/resources/static/vendor/angular/angular-cookies.min.js
new file mode 100644
index 0000000..2ddcf26
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-cookies.min.js
@@ -0,0 +1,9 @@
+/*
+ AngularJS v1.5.6
+ (c) 2010-2016 Google, Inc. http://angularjs.org
+ License: MIT
+*/
+(function(n,c){'use strict';function l(b,a,g){var d=g.baseHref(),k=b[0];return function(b,e,f){var g,h;f=f||{};h=f.expires;g=c.isDefined(f.path)?f.path:d;c.isUndefined(e)&&(h="Thu, 01 Jan 1970 00:00:00 GMT",e="");c.isString(h)&&(h=new Date(h));e=encodeURIComponent(b)+"="+encodeURIComponent(e);e=e+(g?";path="+g:"")+(f.domain?";domain="+f.domain:"");e+=h?";expires="+h.toUTCString():"";e+=f.secure?";secure":"";f=e.length+1;4096<f&&a.warn("Cookie '"+b+"' possibly not set or overflowed because it was too large ("+
+f+" > 4096 bytes)!");k.cookie=e}}c.module("ngCookies",["ng"]).provider("$cookies",[function(){var b=this.defaults={};this.$get=["$$cookieReader","$$cookieWriter",function(a,g){return{get:function(d){return a()[d]},getObject:function(d){return(d=this.get(d))?c.fromJson(d):d},getAll:function(){return a()},put:function(d,a,m){g(d,a,m?c.extend({},b,m):b)},putObject:function(d,b,a){this.put(d,c.toJson(b),a)},remove:function(a,k){g(a,void 0,k?c.extend({},b,k):b)}}}]}]);c.module("ngCookies").factory("$cookieStore",
+["$cookies",function(b){return{get:function(a){return b.getObject(a)},put:function(a,c){b.putObject(a,c)},remove:function(a){b.remove(a)}}}]);l.$inject=["$document","$log","$browser"];c.module("ngCookies").provider("$$cookieWriter",function(){this.$get=l})})(window,window.angular);
+//# sourceMappingURL=angular-cookies.min.js.map

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-cookies.min.js.map
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-cookies.min.js.map b/rocketmq-console/src/main/resources/static/vendor/angular/angular-cookies.min.js.map
new file mode 100644
index 0000000..42f748a
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-cookies.min.js.map
@@ -0,0 +1,8 @@
+{
+"version":3,
+"file":"angular-cookies.min.js",
+"lineCount":8,
+"mappings":"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",
+"sources":["angular-cookies.js"],
+"names":["window","angular","$$CookieWriter","$document","$log","$browser","cookiePath","baseHref","rawDocument","name","value","options","path","expires","isDefined","isUndefined","isString","Date","str","encodeURIComponent","domain","toUTCString","secure","cookieLength","length","warn","cookie","module","provider","$CookiesProvider","defaults","$get","$$cookieReader","$$cookieWriter","get","key","getObject","fromJson","getAll","put","extend","putObject","toJson","remove","undefined","factory","$cookies","$inject","$$CookieWriterProvider"]
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-csp.css
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-csp.css b/rocketmq-console/src/main/resources/static/vendor/angular/angular-csp.css
new file mode 100644
index 0000000..f3cd926
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-csp.css
@@ -0,0 +1,21 @@
+/* Include this file in your html if you are using the CSP mode. */
+
+@charset "UTF-8";
+
+[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak],
+.ng-cloak, .x-ng-cloak,
+.ng-hide:not(.ng-hide-animate) {
+  display: none !important;
+}
+
+ng\:form {
+  display: block;
+}
+
+.ng-animate-shim {
+  visibility:hidden;
+}
+
+.ng-anchor {
+  position:absolute;
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-loader.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-loader.js b/rocketmq-console/src/main/resources/static/vendor/angular/angular-loader.js
new file mode 100644
index 0000000..f9b21b3
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-loader.js
@@ -0,0 +1,484 @@
+/**
+ * @license AngularJS v1.5.6
+ * (c) 2010-2016 Google, Inc. http://angularjs.org
+ * License: MIT
+ */
+
+(function() {'use strict';
+    function isFunction(value) {return typeof value === 'function';};
+
+/* global: toDebugString: true */
+
+function serializeObject(obj) {
+  var seen = [];
+
+  return JSON.stringify(obj, function(key, val) {
+    val = toJsonReplacer(key, val);
+    if (isObject(val)) {
+
+      if (seen.indexOf(val) >= 0) return '...';
+
+      seen.push(val);
+    }
+    return val;
+  });
+}
+
+function toDebugString(obj) {
+  if (typeof obj === 'function') {
+    return obj.toString().replace(/ \{[\s\S]*$/, '');
+  } else if (isUndefined(obj)) {
+    return 'undefined';
+  } else if (typeof obj !== 'string') {
+    return serializeObject(obj);
+  }
+  return obj;
+}
+
+/**
+ * @description
+ *
+ * This object provides a utility for producing rich Error messages within
+ * Angular. It can be called as follows:
+ *
+ * var exampleMinErr = minErr('example');
+ * throw exampleMinErr('one', 'This {0} is {1}', foo, bar);
+ *
+ * The above creates an instance of minErr in the example namespace. The
+ * resulting error will have a namespaced error code of example.one.  The
+ * resulting error will replace {0} with the value of foo, and {1} with the
+ * value of bar. The object is not restricted in the number of arguments it can
+ * take.
+ *
+ * If fewer arguments are specified than necessary for interpolation, the extra
+ * interpolation markers will be preserved in the final string.
+ *
+ * Since data will be parsed statically during a build step, some restrictions
+ * are applied with respect to how minErr instances are created and called.
+ * Instances should have names of the form namespaceMinErr for a minErr created
+ * using minErr('namespace') . Error codes, namespaces and template strings
+ * should all be static strings, not variables or general expressions.
+ *
+ * @param {string} module The namespace to use for the new minErr instance.
+ * @param {function} ErrorConstructor Custom error constructor to be instantiated when returning
+ *   error from returned function, for cases when a particular type of error is useful.
+ * @returns {function(code:string, template:string, ...templateArgs): Error} minErr instance
+ */
+
+function minErr(module, ErrorConstructor) {
+  ErrorConstructor = ErrorConstructor || Error;
+  return function() {
+    var SKIP_INDEXES = 2;
+
+    var templateArgs = arguments,
+      code = templateArgs[0],
+      message = '[' + (module ? module + ':' : '') + code + '] ',
+      template = templateArgs[1],
+      paramPrefix, i;
+
+    message += template.replace(/\{\d+\}/g, function(match) {
+      var index = +match.slice(1, -1),
+        shiftedIndex = index + SKIP_INDEXES;
+
+      if (shiftedIndex < templateArgs.length) {
+        return toDebugString(templateArgs[shiftedIndex]);
+      }
+
+      return match;
+    });
+
+    message += '\nhttp://errors.angularjs.org/1.5.6/' +
+      (module ? module + '/' : '') + code;
+
+    for (i = SKIP_INDEXES, paramPrefix = '?'; i < templateArgs.length; i++, paramPrefix = '&') {
+      message += paramPrefix + 'p' + (i - SKIP_INDEXES) + '=' +
+        encodeURIComponent(toDebugString(templateArgs[i]));
+    }
+
+    return new ErrorConstructor(message);
+  };
+}
+
+/**
+ * @ngdoc type
+ * @name angular.Module
+ * @module ng
+ * @description
+ *
+ * Interface for configuring angular {@link angular.module modules}.
+ */
+
+function setupModuleLoader(window) {
+
+  var $injectorMinErr = minErr('$injector');
+  var ngMinErr = minErr('ng');
+
+  function ensure(obj, name, factory) {
+    return obj[name] || (obj[name] = factory());
+  }
+
+  var angular = ensure(window, 'angular', Object);
+
+  // We need to expose `angular.$$minErr` to modules such as `ngResource` that reference it during bootstrap
+  angular.$$minErr = angular.$$minErr || minErr;
+
+  return ensure(angular, 'module', function() {
+    /** @type {Object.<string, angular.Module>} */
+    var modules = {};
+
+    /**
+     * @ngdoc function
+     * @name angular.module
+     * @module ng
+     * @description
+     *
+     * The `angular.module` is a global place for creating, registering and retrieving Angular
+     * modules.
+     * All modules (angular core or 3rd party) that should be available to an application must be
+     * registered using this mechanism.
+     *
+     * Passing one argument retrieves an existing {@link angular.Module},
+     * whereas passing more than one argument creates a new {@link angular.Module}
+     *
+     *
+     * # Module
+     *
+     * A module is a collection of services, directives, controllers, filters, and configuration information.
+     * `angular.module` is used to configure the {@link auto.$injector $injector}.
+     *
+     * ```js
+     * // Create a new module
+     * var myModule = angular.module('myModule', []);
+     *
+     * // register a new service
+     * myModule.value('appName', 'MyCoolApp');
+     *
+     * // configure existing services inside initialization blocks.
+     * myModule.config(['$locationProvider', function($locationProvider) {
+     *   // Configure existing providers
+     *   $locationProvider.hashPrefix('!');
+     * }]);
+     * ```
+     *
+     * Then you can create an injector and load your modules like this:
+     *
+     * ```js
+     * var injector = angular.injector(['ng', 'myModule'])
+     * ```
+     *
+     * However it's more likely that you'll just use
+     * {@link ng.directive:ngApp ngApp} or
+     * {@link angular.bootstrap} to simplify this process for you.
+     *
+     * @param {!string} name The name of the module to create or retrieve.
+     * @param {!Array.<string>=} requires If specified then new module is being created. If
+     *        unspecified then the module is being retrieved for further configuration.
+     * @param {Function=} configFn Optional configuration function for the module. Same as
+     *        {@link angular.Module#config Module#config()}.
+     * @returns {angular.Module} new module with the {@link angular.Module} api.
+     */
+    return function module(name, requires, configFn) {
+      var assertNotHasOwnProperty = function(name, context) {
+        if (name === 'hasOwnProperty') {
+          throw ngMinErr('badname', 'hasOwnProperty is not a valid {0} name', context);
+        }
+      };
+
+      assertNotHasOwnProperty(name, 'module');
+      if (requires && modules.hasOwnProperty(name)) {
+        modules[name] = null;
+      }
+      return ensure(modules, name, function() {
+        if (!requires) {
+          throw $injectorMinErr('nomod', "Module '{0}' is not available! You either misspelled " +
+             "the module name or forgot to load it. If registering a module ensure that you " +
+             "specify the dependencies as the second argument.", name);
+        }
+
+        /** @type {!Array.<Array.<*>>} */
+        var invokeQueue = [];
+
+        /** @type {!Array.<Function>} */
+        var configBlocks = [];
+
+        /** @type {!Array.<Function>} */
+        var runBlocks = [];
+
+        var config = invokeLater('$injector', 'invoke', 'push', configBlocks);
+
+        /** @type {angular.Module} */
+        var moduleInstance = {
+          // Private state
+          _invokeQueue: invokeQueue,
+          _configBlocks: configBlocks,
+          _runBlocks: runBlocks,
+
+          /**
+           * @ngdoc property
+           * @name angular.Module#requires
+           * @module ng
+           *
+           * @description
+           * Holds the list of modules which the injector will load before the current module is
+           * loaded.
+           */
+          requires: requires,
+
+          /**
+           * @ngdoc property
+           * @name angular.Module#name
+           * @module ng
+           *
+           * @description
+           * Name of the module.
+           */
+          name: name,
+
+
+          /**
+           * @ngdoc method
+           * @name angular.Module#provider
+           * @module ng
+           * @param {string} name service name
+           * @param {Function} providerType Construction function for creating new instance of the
+           *                                service.
+           * @description
+           * See {@link auto.$provide#provider $provide.provider()}.
+           */
+          provider: invokeLaterAndSetModuleName('$provide', 'provider'),
+
+          /**
+           * @ngdoc method
+           * @name angular.Module#factory
+           * @module ng
+           * @param {string} name service name
+           * @param {Function} providerFunction Function for creating new instance of the service.
+           * @description
+           * See {@link auto.$provide#factory $provide.factory()}.
+           */
+          factory: invokeLaterAndSetModuleName('$provide', 'factory'),
+
+          /**
+           * @ngdoc method
+           * @name angular.Module#service
+           * @module ng
+           * @param {string} name service name
+           * @param {Function} constructor A constructor function that will be instantiated.
+           * @description
+           * See {@link auto.$provide#service $provide.service()}.
+           */
+          service: invokeLaterAndSetModuleName('$provide', 'service'),
+
+          /**
+           * @ngdoc method
+           * @name angular.Module#value
+           * @module ng
+           * @param {string} name service name
+           * @param {*} object Service instance object.
+           * @description
+           * See {@link auto.$provide#value $provide.value()}.
+           */
+          value: invokeLater('$provide', 'value'),
+
+          /**
+           * @ngdoc method
+           * @name angular.Module#constant
+           * @module ng
+           * @param {string} name constant name
+           * @param {*} object Constant value.
+           * @description
+           * Because the constants are fixed, they get applied before other provide methods.
+           * See {@link auto.$provide#constant $provide.constant()}.
+           */
+          constant: invokeLater('$provide', 'constant', 'unshift'),
+
+           /**
+           * @ngdoc method
+           * @name angular.Module#decorator
+           * @module ng
+           * @param {string} name The name of the service to decorate.
+           * @param {Function} decorFn This function will be invoked when the service needs to be
+           *                           instantiated and should return the decorated service instance.
+           * @description
+           * See {@link auto.$provide#decorator $provide.decorator()}.
+           */
+          decorator: invokeLaterAndSetModuleName('$provide', 'decorator'),
+
+          /**
+           * @ngdoc method
+           * @name angular.Module#animation
+           * @module ng
+           * @param {string} name animation name
+           * @param {Function} animationFactory Factory function for creating new instance of an
+           *                                    animation.
+           * @description
+           *
+           * **NOTE**: animations take effect only if the **ngAnimate** module is loaded.
+           *
+           *
+           * Defines an animation hook that can be later used with
+           * {@link $animate $animate} service and directives that use this service.
+           *
+           * ```js
+           * module.animation('.animation-name', function($inject1, $inject2) {
+           *   return {
+           *     eventName : function(element, done) {
+           *       //code to run the animation
+           *       //once complete, then run done()
+           *       return function cancellationFunction(element) {
+           *         //code to cancel the animation
+           *       }
+           *     }
+           *   }
+           * })
+           * ```
+           *
+           * See {@link ng.$animateProvider#register $animateProvider.register()} and
+           * {@link ngAnimate ngAnimate module} for more information.
+           */
+          animation: invokeLaterAndSetModuleName('$animateProvider', 'register'),
+
+          /**
+           * @ngdoc method
+           * @name angular.Module#filter
+           * @module ng
+           * @param {string} name Filter name - this must be a valid angular expression identifier
+           * @param {Function} filterFactory Factory function for creating new instance of filter.
+           * @description
+           * See {@link ng.$filterProvider#register $filterProvider.register()}.
+           *
+           * <div class="alert alert-warning">
+           * **Note:** Filter names must be valid angular {@link expression} identifiers, such as `uppercase` or `orderBy`.
+           * Names with special characters, such as hyphens and dots, are not allowed. If you wish to namespace
+           * your filters, then you can use capitalization (`myappSubsectionFilterx`) or underscores
+           * (`myapp_subsection_filterx`).
+           * </div>
+           */
+          filter: invokeLaterAndSetModuleName('$filterProvider', 'register'),
+
+          /**
+           * @ngdoc method
+           * @name angular.Module#controller
+           * @module ng
+           * @param {string|Object} name Controller name, or an object map of controllers where the
+           *    keys are the names and the values are the constructors.
+           * @param {Function} constructor Controller constructor function.
+           * @description
+           * See {@link ng.$controllerProvider#register $controllerProvider.register()}.
+           */
+          controller: invokeLaterAndSetModuleName('$controllerProvider', 'register'),
+
+          /**
+           * @ngdoc method
+           * @name angular.Module#directive
+           * @module ng
+           * @param {string|Object} name Directive name, or an object map of directives where the
+           *    keys are the names and the values are the factories.
+           * @param {Function} directiveFactory Factory function for creating new instance of
+           * directives.
+           * @description
+           * See {@link ng.$compileProvider#directive $compileProvider.directive()}.
+           */
+          directive: invokeLaterAndSetModuleName('$compileProvider', 'directive'),
+
+          /**
+           * @ngdoc method
+           * @name angular.Module#component
+           * @module ng
+           * @param {string} name Name of the component in camel-case (i.e. myComp which will match as my-comp)
+           * @param {Object} options Component definition object (a simplified
+           *    {@link ng.$compile#directive-definition-object directive definition object})
+           *
+           * @description
+           * See {@link ng.$compileProvider#component $compileProvider.component()}.
+           */
+          component: invokeLaterAndSetModuleName('$compileProvider', 'component'),
+
+          /**
+           * @ngdoc method
+           * @name angular.Module#config
+           * @module ng
+           * @param {Function} configFn Execute this function on module load. Useful for service
+           *    configuration.
+           * @description
+           * Use this method to register work which needs to be performed on module loading.
+           * For more about how to configure services, see
+           * {@link providers#provider-recipe Provider Recipe}.
+           */
+          config: config,
+
+          /**
+           * @ngdoc method
+           * @name angular.Module#run
+           * @module ng
+           * @param {Function} initializationFn Execute this function after injector creation.
+           *    Useful for application initialization.
+           * @description
+           * Use this method to register work which should be performed when the injector is done
+           * loading all modules.
+           */
+          run: function(block) {
+            runBlocks.push(block);
+            return this;
+          }
+        };
+
+        if (configFn) {
+          config(configFn);
+        }
+
+        return moduleInstance;
+
+        /**
+         * @param {string} provider
+         * @param {string} method
+         * @param {String=} insertMethod
+         * @returns {angular.Module}
+         */
+        function invokeLater(provider, method, insertMethod, queue) {
+          if (!queue) queue = invokeQueue;
+          return function() {
+            queue[insertMethod || 'push']([provider, method, arguments]);
+            return moduleInstance;
+          };
+        }
+
+        /**
+         * @param {string} provider
+         * @param {string} method
+         * @returns {angular.Module}
+         */
+        function invokeLaterAndSetModuleName(provider, method) {
+          return function(recipeName, factoryFunction) {
+            if (factoryFunction && isFunction(factoryFunction)) factoryFunction.$$moduleName = name;
+            invokeQueue.push([provider, method, arguments]);
+            return moduleInstance;
+          };
+        }
+      });
+    };
+  });
+
+}
+
+setupModuleLoader(window);
+})(window);
+
+/**
+ * Closure compiler type information
+ *
+ * @typedef { {
+ *   requires: !Array.<string>,
+ *   invokeQueue: !Array.<Array.<*>>,
+ *
+ *   service: function(string, Function):angular.Module,
+ *   factory: function(string, Function):angular.Module,
+ *   value: function(string, *):angular.Module,
+ *
+ *   filter: function(string, Function):angular.Module,
+ *
+ *   init: function(Function):angular.Module
+ * } }
+ */
+angular.Module;
+

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-loader.min.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-loader.min.js b/rocketmq-console/src/main/resources/static/vendor/angular/angular-loader.min.js
new file mode 100644
index 0000000..1796d87
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-loader.min.js
@@ -0,0 +1,10 @@
+/*
+ AngularJS v1.5.6
+ (c) 2010-2016 Google, Inc. http://angularjs.org
+ License: MIT
+*/
+(function(){'use strict';function d(b){return function(){var a=arguments[0],e;e="["+(b?b+":":"")+a+"] http://errors.angularjs.org/1.5.6/"+(b?b+"/":"")+a;for(a=1;a<arguments.length;a++){e=e+(1==a?"?":"&")+"p"+(a-1)+"=";var d=encodeURIComponent,c;c=arguments[a];c="function"==typeof c?c.toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof c?"undefined":"string"!=typeof c?JSON.stringify(c):c;e+=d(c)}return Error(e)}}(function(b){function a(c,a,b){return c[a]||(c[a]=b())}var e=d("$injector"),n=d("ng");
+b=a(b,"angular",Object);b.$$minErr=b.$$minErr||d;return a(b,"module",function(){var c={};return function(b,d,h){if("hasOwnProperty"===b)throw n("badname","module");d&&c.hasOwnProperty(b)&&(c[b]=null);return a(c,b,function(){function c(a,b,d,e){e||(e=f);return function(){e[d||"push"]([a,b,arguments]);return g}}function a(c,e){return function(a,d){d&&"function"===typeof d&&(d.$$moduleName=b);f.push([c,e,arguments]);return g}}if(!d)throw e("nomod",b);var f=[],k=[],l=[],m=c("$injector","invoke","push",
+k),g={_invokeQueue:f,_configBlocks:k,_runBlocks:l,requires:d,name:b,provider:a("$provide","provider"),factory:a("$provide","factory"),service:a("$provide","service"),value:c("$provide","value"),constant:c("$provide","constant","unshift"),decorator:a("$provide","decorator"),animation:a("$animateProvider","register"),filter:a("$filterProvider","register"),controller:a("$controllerProvider","register"),directive:a("$compileProvider","directive"),component:a("$compileProvider","component"),config:m,run:function(a){l.push(a);
+return this}};h&&m(h);return g})}})})(window)})(window);
+//# sourceMappingURL=angular-loader.min.js.map

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-loader.min.js.map
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-loader.min.js.map b/rocketmq-console/src/main/resources/static/vendor/angular/angular-loader.min.js.map
new file mode 100644
index 0000000..67ebb8b
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-loader.min.js.map
@@ -0,0 +1,8 @@
+{
+"version":3,
+"file":"angular-loader.min.js",
+"lineCount":9,
+"mappings":"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",
+"sources":["angular-loader.js"],
+"names":["minErr","setupModuleLoader","window","ensure","obj","name","factory","$injectorMinErr","ngMinErr","angular","Object","$$minErr","modules","module","requires","configFn","context","hasOwnProperty","invokeLater","provider","method","insertMethod","queue","invokeQueue","arguments","moduleInstance","invokeLaterAndSetModuleName","recipeName","factoryFunction","$$moduleName","push","configBlocks","runBlocks","config","_invokeQueue","_configBlocks","_runBlocks","service","value","constant","decorator","animation","filter","controller","directive","component","run","block"]
+}


[19/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ckb-ir.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ckb-ir.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ckb-ir.js
new file mode 100644
index 0000000..03dced5
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ckb-ir.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0628.\u0646",
+      "\u062f.\u0646"
+    ],
+    "DAY": [
+      "\u06cc\u06d5\u06a9\u0634\u06d5\u0645\u0645\u06d5",
+      "\u062f\u0648\u0648\u0634\u06d5\u0645\u0645\u06d5",
+      "\u0633\u06ce\u0634\u06d5\u0645\u0645\u06d5",
+      "\u0686\u0648\u0627\u0631\u0634\u06d5\u0645\u0645\u06d5",
+      "\u067e\u06ce\u0646\u062c\u0634\u06d5\u0645\u0645\u06d5",
+      "\u06be\u06d5\u06cc\u0646\u06cc",
+      "\u0634\u06d5\u0645\u0645\u06d5"
+    ],
+    "ERANAMES": [
+      "\u067e\u06ce\u0634 \u0632\u0627\u06cc\u06cc\u0646",
+      "\u0632\u0627\u06cc\u06cc\u0646\u06cc"
+    ],
+    "ERAS": [
+      "\u067e\u06ce\u0634 \u0632\u0627\u06cc\u06cc\u06cc\u0646",
+      "\u0632"
+    ],
+    "FIRSTDAYOFWEEK": 5,
+    "MONTH": [
+      "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u0634\u0648\u0628\u0627\u062a",
+      "\u0626\u0627\u0632\u0627\u0631",
+      "\u0646\u06cc\u0633\u0627\u0646",
+      "\u0626\u0627\u06cc\u0627\u0631",
+      "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646",
+      "\u062a\u06d5\u0645\u0648\u0648\u0632",
+      "\u0626\u0627\u0628",
+      "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"
+    ],
+    "SHORTDAY": [
+      "\u06cc\u06d5\u06a9\u0634\u06d5\u0645\u0645\u06d5",
+      "\u062f\u0648\u0648\u0634\u06d5\u0645\u0645\u06d5",
+      "\u0633\u06ce\u0634\u06d5\u0645\u0645\u06d5",
+      "\u0686\u0648\u0627\u0631\u0634\u06d5\u0645\u0645\u06d5",
+      "\u067e\u06ce\u0646\u062c\u0634\u06d5\u0645\u0645\u06d5",
+      "\u06be\u06d5\u06cc\u0646\u06cc",
+      "\u0634\u06d5\u0645\u0645\u06d5"
+    ],
+    "SHORTMONTH": [
+      "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u0634\u0648\u0628\u0627\u062a",
+      "\u0626\u0627\u0632\u0627\u0631",
+      "\u0646\u06cc\u0633\u0627\u0646",
+      "\u0626\u0627\u06cc\u0627\u0631",
+      "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646",
+      "\u062a\u06d5\u0645\u0648\u0648\u0632",
+      "\u0626\u0627\u0628",
+      "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"
+    ],
+    "STANDALONEMONTH": [
+      "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u0634\u0648\u0628\u0627\u062a",
+      "\u0626\u0627\u0632\u0627\u0631",
+      "\u0646\u06cc\u0633\u0627\u0646",
+      "\u0626\u0627\u06cc\u0627\u0631",
+      "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646",
+      "\u062a\u06d5\u0645\u0648\u0648\u0632",
+      "\u0626\u0627\u0628",
+      "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      5
+    ],
+    "fullDate": "y MMMM d, EEEE",
+    "longDate": "d\u06cc MMMM\u06cc y",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "y-MM-dd HH:mm",
+    "shortDate": "y-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Rial",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ckb-ir",
+  "localeID": "ckb_IR",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ckb-latn-iq.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ckb-latn-iq.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ckb-latn-iq.js
new file mode 100644
index 0000000..07eaee8
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ckb-latn-iq.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0628.\u0646",
+      "\u062f.\u0646"
+    ],
+    "DAY": [
+      "\u06cc\u06d5\u06a9\u0634\u06d5\u0645\u0645\u06d5",
+      "\u062f\u0648\u0648\u0634\u06d5\u0645\u0645\u06d5",
+      "\u0633\u06ce\u0634\u06d5\u0645\u0645\u06d5",
+      "\u0686\u0648\u0627\u0631\u0634\u06d5\u0645\u0645\u06d5",
+      "\u067e\u06ce\u0646\u062c\u0634\u06d5\u0645\u0645\u06d5",
+      "\u06be\u06d5\u06cc\u0646\u06cc",
+      "\u0634\u06d5\u0645\u0645\u06d5"
+    ],
+    "ERANAMES": [
+      "\u067e\u06ce\u0634 \u0632\u0627\u06cc\u06cc\u0646",
+      "\u0632\u0627\u06cc\u06cc\u0646\u06cc"
+    ],
+    "ERAS": [
+      "\u067e\u06ce\u0634 \u0632\u0627\u06cc\u06cc\u06cc\u0646",
+      "\u0632"
+    ],
+    "FIRSTDAYOFWEEK": 5,
+    "MONTH": [
+      "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u0634\u0648\u0628\u0627\u062a",
+      "\u0626\u0627\u0632\u0627\u0631",
+      "\u0646\u06cc\u0633\u0627\u0646",
+      "\u0626\u0627\u06cc\u0627\u0631",
+      "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646",
+      "\u062a\u06d5\u0645\u0648\u0648\u0632",
+      "\u0626\u0627\u0628",
+      "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"
+    ],
+    "SHORTDAY": [
+      "\u06cc\u06d5\u06a9\u0634\u06d5\u0645\u0645\u06d5",
+      "\u062f\u0648\u0648\u0634\u06d5\u0645\u0645\u06d5",
+      "\u0633\u06ce\u0634\u06d5\u0645\u0645\u06d5",
+      "\u0686\u0648\u0627\u0631\u0634\u06d5\u0645\u0645\u06d5",
+      "\u067e\u06ce\u0646\u062c\u0634\u06d5\u0645\u0645\u06d5",
+      "\u06be\u06d5\u06cc\u0646\u06cc",
+      "\u0634\u06d5\u0645\u0645\u06d5"
+    ],
+    "SHORTMONTH": [
+      "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u0634\u0648\u0628\u0627\u062a",
+      "\u0626\u0627\u0632\u0627\u0631",
+      "\u0646\u06cc\u0633\u0627\u0646",
+      "\u0626\u0627\u06cc\u0627\u0631",
+      "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646",
+      "\u062a\u06d5\u0645\u0648\u0648\u0632",
+      "\u0626\u0627\u0628",
+      "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"
+    ],
+    "STANDALONEMONTH": [
+      "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u0634\u0648\u0628\u0627\u062a",
+      "\u0626\u0627\u0632\u0627\u0631",
+      "\u0646\u06cc\u0633\u0627\u0646",
+      "\u0626\u0627\u06cc\u0627\u0631",
+      "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646",
+      "\u062a\u06d5\u0645\u0648\u0648\u0632",
+      "\u0626\u0627\u0628",
+      "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      5
+    ],
+    "fullDate": "y MMMM d, EEEE",
+    "longDate": "d\u06cc MMMM\u06cc y",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "y-MM-dd HH:mm",
+    "shortDate": "y-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "din",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ckb-latn-iq",
+  "localeID": "ckb_Latn_IQ",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ckb-latn.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ckb-latn.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ckb-latn.js
new file mode 100644
index 0000000..26f961f
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ckb-latn.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0628.\u0646",
+      "\u062f.\u0646"
+    ],
+    "DAY": [
+      "\u06cc\u06d5\u06a9\u0634\u06d5\u0645\u0645\u06d5",
+      "\u062f\u0648\u0648\u0634\u06d5\u0645\u0645\u06d5",
+      "\u0633\u06ce\u0634\u06d5\u0645\u0645\u06d5",
+      "\u0686\u0648\u0627\u0631\u0634\u06d5\u0645\u0645\u06d5",
+      "\u067e\u06ce\u0646\u062c\u0634\u06d5\u0645\u0645\u06d5",
+      "\u06be\u06d5\u06cc\u0646\u06cc",
+      "\u0634\u06d5\u0645\u0645\u06d5"
+    ],
+    "ERANAMES": [
+      "\u067e\u06ce\u0634 \u0632\u0627\u06cc\u06cc\u0646",
+      "\u0632\u0627\u06cc\u06cc\u0646\u06cc"
+    ],
+    "ERAS": [
+      "\u067e\u06ce\u0634 \u0632\u0627\u06cc\u06cc\u06cc\u0646",
+      "\u0632"
+    ],
+    "FIRSTDAYOFWEEK": 5,
+    "MONTH": [
+      "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u0634\u0648\u0628\u0627\u062a",
+      "\u0626\u0627\u0632\u0627\u0631",
+      "\u0646\u06cc\u0633\u0627\u0646",
+      "\u0626\u0627\u06cc\u0627\u0631",
+      "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646",
+      "\u062a\u06d5\u0645\u0648\u0648\u0632",
+      "\u0626\u0627\u0628",
+      "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"
+    ],
+    "SHORTDAY": [
+      "\u06cc\u06d5\u06a9\u0634\u06d5\u0645\u0645\u06d5",
+      "\u062f\u0648\u0648\u0634\u06d5\u0645\u0645\u06d5",
+      "\u0633\u06ce\u0634\u06d5\u0645\u0645\u06d5",
+      "\u0686\u0648\u0627\u0631\u0634\u06d5\u0645\u0645\u06d5",
+      "\u067e\u06ce\u0646\u062c\u0634\u06d5\u0645\u0645\u06d5",
+      "\u06be\u06d5\u06cc\u0646\u06cc",
+      "\u0634\u06d5\u0645\u0645\u06d5"
+    ],
+    "SHORTMONTH": [
+      "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u0634\u0648\u0628\u0627\u062a",
+      "\u0626\u0627\u0632\u0627\u0631",
+      "\u0646\u06cc\u0633\u0627\u0646",
+      "\u0626\u0627\u06cc\u0627\u0631",
+      "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646",
+      "\u062a\u06d5\u0645\u0648\u0648\u0632",
+      "\u0626\u0627\u0628",
+      "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"
+    ],
+    "STANDALONEMONTH": [
+      "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u0634\u0648\u0628\u0627\u062a",
+      "\u0626\u0627\u0632\u0627\u0631",
+      "\u0646\u06cc\u0633\u0627\u0646",
+      "\u0626\u0627\u06cc\u0627\u0631",
+      "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646",
+      "\u062a\u06d5\u0645\u0648\u0648\u0632",
+      "\u0626\u0627\u0628",
+      "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      5
+    ],
+    "fullDate": "y MMMM d, EEEE",
+    "longDate": "d\u06cc MMMM\u06cc y",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "y-MM-dd HH:mm",
+    "shortDate": "y-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "din",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ckb-latn",
+  "localeID": "ckb_Latn",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ckb.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ckb.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ckb.js
new file mode 100644
index 0000000..47f879e
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ckb.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0628.\u0646",
+      "\u062f.\u0646"
+    ],
+    "DAY": [
+      "\u06cc\u06d5\u06a9\u0634\u06d5\u0645\u0645\u06d5",
+      "\u062f\u0648\u0648\u0634\u06d5\u0645\u0645\u06d5",
+      "\u0633\u06ce\u0634\u06d5\u0645\u0645\u06d5",
+      "\u0686\u0648\u0627\u0631\u0634\u06d5\u0645\u0645\u06d5",
+      "\u067e\u06ce\u0646\u062c\u0634\u06d5\u0645\u0645\u06d5",
+      "\u06be\u06d5\u06cc\u0646\u06cc",
+      "\u0634\u06d5\u0645\u0645\u06d5"
+    ],
+    "ERANAMES": [
+      "\u067e\u06ce\u0634 \u0632\u0627\u06cc\u06cc\u0646",
+      "\u0632\u0627\u06cc\u06cc\u0646\u06cc"
+    ],
+    "ERAS": [
+      "\u067e\u06ce\u0634 \u0632\u0627\u06cc\u06cc\u06cc\u0646",
+      "\u0632"
+    ],
+    "FIRSTDAYOFWEEK": 5,
+    "MONTH": [
+      "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u0634\u0648\u0628\u0627\u062a",
+      "\u0626\u0627\u0632\u0627\u0631",
+      "\u0646\u06cc\u0633\u0627\u0646",
+      "\u0626\u0627\u06cc\u0627\u0631",
+      "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646",
+      "\u062a\u06d5\u0645\u0648\u0648\u0632",
+      "\u0626\u0627\u0628",
+      "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"
+    ],
+    "SHORTDAY": [
+      "\u06cc\u06d5\u06a9\u0634\u06d5\u0645\u0645\u06d5",
+      "\u062f\u0648\u0648\u0634\u06d5\u0645\u0645\u06d5",
+      "\u0633\u06ce\u0634\u06d5\u0645\u0645\u06d5",
+      "\u0686\u0648\u0627\u0631\u0634\u06d5\u0645\u0645\u06d5",
+      "\u067e\u06ce\u0646\u062c\u0634\u06d5\u0645\u0645\u06d5",
+      "\u06be\u06d5\u06cc\u0646\u06cc",
+      "\u0634\u06d5\u0645\u0645\u06d5"
+    ],
+    "SHORTMONTH": [
+      "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u0634\u0648\u0628\u0627\u062a",
+      "\u0626\u0627\u0632\u0627\u0631",
+      "\u0646\u06cc\u0633\u0627\u0646",
+      "\u0626\u0627\u06cc\u0627\u0631",
+      "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646",
+      "\u062a\u06d5\u0645\u0648\u0648\u0632",
+      "\u0626\u0627\u0628",
+      "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"
+    ],
+    "STANDALONEMONTH": [
+      "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u0634\u0648\u0628\u0627\u062a",
+      "\u0626\u0627\u0632\u0627\u0631",
+      "\u0646\u06cc\u0633\u0627\u0646",
+      "\u0626\u0627\u06cc\u0627\u0631",
+      "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646",
+      "\u062a\u06d5\u0645\u0648\u0648\u0632",
+      "\u0626\u0627\u0628",
+      "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      5
+    ],
+    "fullDate": "y MMMM d, EEEE",
+    "longDate": "d\u06cc MMMM\u06cc y",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "y-MM-dd HH:mm",
+    "shortDate": "y-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "din",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ckb",
+  "localeID": "ckb",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_cs-cz.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_cs-cz.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_cs-cz.js
new file mode 100644
index 0000000..237ee3a
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_cs-cz.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "dopoledne",
+      "odpoledne"
+    ],
+    "DAY": [
+      "ned\u011ble",
+      "pond\u011bl\u00ed",
+      "\u00fater\u00fd",
+      "st\u0159eda",
+      "\u010dtvrtek",
+      "p\u00e1tek",
+      "sobota"
+    ],
+    "ERANAMES": [
+      "p\u0159. n. l.",
+      "n. l."
+    ],
+    "ERAS": [
+      "p\u0159. n. l.",
+      "n. l."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "ledna",
+      "\u00fanora",
+      "b\u0159ezna",
+      "dubna",
+      "kv\u011btna",
+      "\u010dervna",
+      "\u010dervence",
+      "srpna",
+      "z\u00e1\u0159\u00ed",
+      "\u0159\u00edjna",
+      "listopadu",
+      "prosince"
+    ],
+    "SHORTDAY": [
+      "ne",
+      "po",
+      "\u00fat",
+      "st",
+      "\u010dt",
+      "p\u00e1",
+      "so"
+    ],
+    "SHORTMONTH": [
+      "led",
+      "\u00fano",
+      "b\u0159e",
+      "dub",
+      "kv\u011b",
+      "\u010dvn",
+      "\u010dvc",
+      "srp",
+      "z\u00e1\u0159",
+      "\u0159\u00edj",
+      "lis",
+      "pro"
+    ],
+    "STANDALONEMONTH": [
+      "leden",
+      "\u00fanor",
+      "b\u0159ezen",
+      "duben",
+      "kv\u011bten",
+      "\u010derven",
+      "\u010dervenec",
+      "srpen",
+      "z\u00e1\u0159\u00ed",
+      "\u0159\u00edjen",
+      "listopad",
+      "prosinec"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "d. M. y H:mm:ss",
+    "mediumDate": "d. M. y",
+    "mediumTime": "H:mm:ss",
+    "short": "dd.MM.yy H:mm",
+    "shortDate": "dd.MM.yy",
+    "shortTime": "H:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "K\u010d",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "cs-cz",
+  "localeID": "cs_CZ",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  if (i >= 2 && i <= 4 && vf.v == 0) {    return PLURAL_CATEGORY.FEW;  }  if (vf.v != 0) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_cs.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_cs.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_cs.js
new file mode 100644
index 0000000..5be6daf
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_cs.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "dopoledne",
+      "odpoledne"
+    ],
+    "DAY": [
+      "ned\u011ble",
+      "pond\u011bl\u00ed",
+      "\u00fater\u00fd",
+      "st\u0159eda",
+      "\u010dtvrtek",
+      "p\u00e1tek",
+      "sobota"
+    ],
+    "ERANAMES": [
+      "p\u0159. n. l.",
+      "n. l."
+    ],
+    "ERAS": [
+      "p\u0159. n. l.",
+      "n. l."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "ledna",
+      "\u00fanora",
+      "b\u0159ezna",
+      "dubna",
+      "kv\u011btna",
+      "\u010dervna",
+      "\u010dervence",
+      "srpna",
+      "z\u00e1\u0159\u00ed",
+      "\u0159\u00edjna",
+      "listopadu",
+      "prosince"
+    ],
+    "SHORTDAY": [
+      "ne",
+      "po",
+      "\u00fat",
+      "st",
+      "\u010dt",
+      "p\u00e1",
+      "so"
+    ],
+    "SHORTMONTH": [
+      "led",
+      "\u00fano",
+      "b\u0159e",
+      "dub",
+      "kv\u011b",
+      "\u010dvn",
+      "\u010dvc",
+      "srp",
+      "z\u00e1\u0159",
+      "\u0159\u00edj",
+      "lis",
+      "pro"
+    ],
+    "STANDALONEMONTH": [
+      "leden",
+      "\u00fanor",
+      "b\u0159ezen",
+      "duben",
+      "kv\u011bten",
+      "\u010derven",
+      "\u010dervenec",
+      "srpen",
+      "z\u00e1\u0159\u00ed",
+      "\u0159\u00edjen",
+      "listopad",
+      "prosinec"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "d. M. y H:mm:ss",
+    "mediumDate": "d. M. y",
+    "mediumTime": "H:mm:ss",
+    "short": "dd.MM.yy H:mm",
+    "shortDate": "dd.MM.yy",
+    "shortTime": "H:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "K\u010d",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "cs",
+  "localeID": "cs",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  if (i >= 2 && i <= 4 && vf.v == 0) {    return PLURAL_CATEGORY.FEW;  }  if (vf.v != 0) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_cy-gb.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_cy-gb.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_cy-gb.js
new file mode 100644
index 0000000..d0074f8
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_cy-gb.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Dydd Sul",
+      "Dydd Llun",
+      "Dydd Mawrth",
+      "Dydd Mercher",
+      "Dydd Iau",
+      "Dydd Gwener",
+      "Dydd Sadwrn"
+    ],
+    "ERANAMES": [
+      "Cyn Crist",
+      "Oed Crist"
+    ],
+    "ERAS": [
+      "CC",
+      "OC"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Ionawr",
+      "Chwefror",
+      "Mawrth",
+      "Ebrill",
+      "Mai",
+      "Mehefin",
+      "Gorffennaf",
+      "Awst",
+      "Medi",
+      "Hydref",
+      "Tachwedd",
+      "Rhagfyr"
+    ],
+    "SHORTDAY": [
+      "Sul",
+      "Llun",
+      "Maw",
+      "Mer",
+      "Iau",
+      "Gwen",
+      "Sad"
+    ],
+    "SHORTMONTH": [
+      "Ion",
+      "Chwef",
+      "Mawrth",
+      "Ebrill",
+      "Mai",
+      "Meh",
+      "Gorff",
+      "Awst",
+      "Medi",
+      "Hyd",
+      "Tach",
+      "Rhag"
+    ],
+    "STANDALONEMONTH": [
+      "Ionawr",
+      "Chwefror",
+      "Mawrth",
+      "Ebrill",
+      "Mai",
+      "Mehefin",
+      "Gorffennaf",
+      "Awst",
+      "Medi",
+      "Hydref",
+      "Tachwedd",
+      "Rhagfyr"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/yy HH:mm",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u00a3",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "cy-gb",
+  "localeID": "cy_GB",
+  "pluralCat": function(n, opt_precision) {  if (n == 0) {    return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  if (n == 2) {    return PLURAL_CATEGORY.TWO;  }  if (n == 3) {    return PLURAL_CATEGORY.FEW;  }  if (n == 6) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_cy.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_cy.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_cy.js
new file mode 100644
index 0000000..ca37d81
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_cy.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Dydd Sul",
+      "Dydd Llun",
+      "Dydd Mawrth",
+      "Dydd Mercher",
+      "Dydd Iau",
+      "Dydd Gwener",
+      "Dydd Sadwrn"
+    ],
+    "ERANAMES": [
+      "Cyn Crist",
+      "Oed Crist"
+    ],
+    "ERAS": [
+      "CC",
+      "OC"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Ionawr",
+      "Chwefror",
+      "Mawrth",
+      "Ebrill",
+      "Mai",
+      "Mehefin",
+      "Gorffennaf",
+      "Awst",
+      "Medi",
+      "Hydref",
+      "Tachwedd",
+      "Rhagfyr"
+    ],
+    "SHORTDAY": [
+      "Sul",
+      "Llun",
+      "Maw",
+      "Mer",
+      "Iau",
+      "Gwen",
+      "Sad"
+    ],
+    "SHORTMONTH": [
+      "Ion",
+      "Chwef",
+      "Mawrth",
+      "Ebrill",
+      "Mai",
+      "Meh",
+      "Gorff",
+      "Awst",
+      "Medi",
+      "Hyd",
+      "Tach",
+      "Rhag"
+    ],
+    "STANDALONEMONTH": [
+      "Ionawr",
+      "Chwefror",
+      "Mawrth",
+      "Ebrill",
+      "Mai",
+      "Mehefin",
+      "Gorffennaf",
+      "Awst",
+      "Medi",
+      "Hydref",
+      "Tachwedd",
+      "Rhagfyr"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/yy HH:mm",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u00a3",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "cy",
+  "localeID": "cy",
+  "pluralCat": function(n, opt_precision) {  if (n == 0) {    return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  if (n == 2) {    return PLURAL_CATEGORY.TWO;  }  if (n == 3) {    return PLURAL_CATEGORY.FEW;  }  if (n == 6) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_da-dk.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_da-dk.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_da-dk.js
new file mode 100644
index 0000000..f0ef36f
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_da-dk.js
@@ -0,0 +1,156 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+function getWT(v, f) {
+  if (f === 0) {
+    return {w: 0, t: 0};
+  }
+
+  while ((f % 10) === 0) {
+    f /= 10;
+    v--;
+  }
+
+  return {w: v, t: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "s\u00f8ndag",
+      "mandag",
+      "tirsdag",
+      "onsdag",
+      "torsdag",
+      "fredag",
+      "l\u00f8rdag"
+    ],
+    "ERANAMES": [
+      "f.Kr.",
+      "e.Kr."
+    ],
+    "ERAS": [
+      "f.Kr.",
+      "e.Kr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "januar",
+      "februar",
+      "marts",
+      "april",
+      "maj",
+      "juni",
+      "juli",
+      "august",
+      "september",
+      "oktober",
+      "november",
+      "december"
+    ],
+    "SHORTDAY": [
+      "s\u00f8n.",
+      "man.",
+      "tir.",
+      "ons.",
+      "tor.",
+      "fre.",
+      "l\u00f8r."
+    ],
+    "SHORTMONTH": [
+      "jan.",
+      "feb.",
+      "mar.",
+      "apr.",
+      "maj",
+      "jun.",
+      "jul.",
+      "aug.",
+      "sep.",
+      "okt.",
+      "nov.",
+      "dec."
+    ],
+    "STANDALONEMONTH": [
+      "januar",
+      "februar",
+      "marts",
+      "april",
+      "maj",
+      "juni",
+      "juli",
+      "august",
+      "september",
+      "oktober",
+      "november",
+      "december"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE 'den' d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "d. MMM y HH.mm.ss",
+    "mediumDate": "d. MMM y",
+    "mediumTime": "HH.mm.ss",
+    "short": "dd/MM/y HH.mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH.mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "kr",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "da-dk",
+  "localeID": "da_DK",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  var wt = getWT(vf.v, vf.f);  if (n == 1 || wt.t != 0 && (i == 0 || i == 1)) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_da-gl.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_da-gl.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_da-gl.js
new file mode 100644
index 0000000..f1329d0
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_da-gl.js
@@ -0,0 +1,156 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+function getWT(v, f) {
+  if (f === 0) {
+    return {w: 0, t: 0};
+  }
+
+  while ((f % 10) === 0) {
+    f /= 10;
+    v--;
+  }
+
+  return {w: v, t: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "s\u00f8ndag",
+      "mandag",
+      "tirsdag",
+      "onsdag",
+      "torsdag",
+      "fredag",
+      "l\u00f8rdag"
+    ],
+    "ERANAMES": [
+      "f.Kr.",
+      "e.Kr."
+    ],
+    "ERAS": [
+      "f.Kr.",
+      "e.Kr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "januar",
+      "februar",
+      "marts",
+      "april",
+      "maj",
+      "juni",
+      "juli",
+      "august",
+      "september",
+      "oktober",
+      "november",
+      "december"
+    ],
+    "SHORTDAY": [
+      "s\u00f8n.",
+      "man.",
+      "tir.",
+      "ons.",
+      "tor.",
+      "fre.",
+      "l\u00f8r."
+    ],
+    "SHORTMONTH": [
+      "jan.",
+      "feb.",
+      "mar.",
+      "apr.",
+      "maj",
+      "jun.",
+      "jul.",
+      "aug.",
+      "sep.",
+      "okt.",
+      "nov.",
+      "dec."
+    ],
+    "STANDALONEMONTH": [
+      "januar",
+      "februar",
+      "marts",
+      "april",
+      "maj",
+      "juni",
+      "juli",
+      "august",
+      "september",
+      "oktober",
+      "november",
+      "december"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE 'den' d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "d. MMM y HH.mm.ss",
+    "mediumDate": "d. MMM y",
+    "mediumTime": "HH.mm.ss",
+    "short": "dd/MM/y HH.mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH.mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "kr",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "da-gl",
+  "localeID": "da_GL",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  var wt = getWT(vf.v, vf.f);  if (n == 1 || wt.t != 0 && (i == 0 || i == 1)) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_da.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_da.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_da.js
new file mode 100644
index 0000000..5297d98
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_da.js
@@ -0,0 +1,156 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+function getWT(v, f) {
+  if (f === 0) {
+    return {w: 0, t: 0};
+  }
+
+  while ((f % 10) === 0) {
+    f /= 10;
+    v--;
+  }
+
+  return {w: v, t: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "s\u00f8ndag",
+      "mandag",
+      "tirsdag",
+      "onsdag",
+      "torsdag",
+      "fredag",
+      "l\u00f8rdag"
+    ],
+    "ERANAMES": [
+      "f.Kr.",
+      "e.Kr."
+    ],
+    "ERAS": [
+      "f.Kr.",
+      "e.Kr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "januar",
+      "februar",
+      "marts",
+      "april",
+      "maj",
+      "juni",
+      "juli",
+      "august",
+      "september",
+      "oktober",
+      "november",
+      "december"
+    ],
+    "SHORTDAY": [
+      "s\u00f8n.",
+      "man.",
+      "tir.",
+      "ons.",
+      "tor.",
+      "fre.",
+      "l\u00f8r."
+    ],
+    "SHORTMONTH": [
+      "jan.",
+      "feb.",
+      "mar.",
+      "apr.",
+      "maj",
+      "jun.",
+      "jul.",
+      "aug.",
+      "sep.",
+      "okt.",
+      "nov.",
+      "dec."
+    ],
+    "STANDALONEMONTH": [
+      "januar",
+      "februar",
+      "marts",
+      "april",
+      "maj",
+      "juni",
+      "juli",
+      "august",
+      "september",
+      "oktober",
+      "november",
+      "december"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE 'den' d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "d. MMM y HH.mm.ss",
+    "mediumDate": "d. MMM y",
+    "mediumTime": "HH.mm.ss",
+    "short": "dd/MM/y HH.mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH.mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "kr",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "da",
+  "localeID": "da",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  var wt = getWT(vf.v, vf.f);  if (n == 1 || wt.t != 0 && (i == 0 || i == 1)) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dav-ke.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dav-ke.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dav-ke.js
new file mode 100644
index 0000000..4511181
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dav-ke.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "Luma lwa K",
+      "luma lwa p"
+    ],
+    "DAY": [
+      "Ituku ja jumwa",
+      "Kuramuka jimweri",
+      "Kuramuka kawi",
+      "Kuramuka kadadu",
+      "Kuramuka kana",
+      "Kuramuka kasanu",
+      "Kifula nguwo"
+    ],
+    "ERANAMES": [
+      "Kabla ya Kristo",
+      "Baada ya Kristo"
+    ],
+    "ERAS": [
+      "KK",
+      "BK"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Mori ghwa imbiri",
+      "Mori ghwa kawi",
+      "Mori ghwa kadadu",
+      "Mori ghwa kana",
+      "Mori ghwa kasanu",
+      "Mori ghwa karandadu",
+      "Mori ghwa mfungade",
+      "Mori ghwa wunyanya",
+      "Mori ghwa ikenda",
+      "Mori ghwa ikumi",
+      "Mori ghwa ikumi na imweri",
+      "Mori ghwa ikumi na iwi"
+    ],
+    "SHORTDAY": [
+      "Jum",
+      "Jim",
+      "Kaw",
+      "Kad",
+      "Kan",
+      "Kas",
+      "Ngu"
+    ],
+    "SHORTMONTH": [
+      "Imb",
+      "Kaw",
+      "Kad",
+      "Kan",
+      "Kas",
+      "Kar",
+      "Mfu",
+      "Wun",
+      "Ike",
+      "Iku",
+      "Imw",
+      "Iwi"
+    ],
+    "STANDALONEMONTH": [
+      "Mori ghwa imbiri",
+      "Mori ghwa kawi",
+      "Mori ghwa kadadu",
+      "Mori ghwa kana",
+      "Mori ghwa kasanu",
+      "Mori ghwa karandadu",
+      "Mori ghwa mfungade",
+      "Mori ghwa wunyanya",
+      "Mori ghwa ikenda",
+      "Mori ghwa ikumi",
+      "Mori ghwa ikumi na imweri",
+      "Mori ghwa ikumi na iwi"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Ksh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "dav-ke",
+  "localeID": "dav_KE",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dav.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dav.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dav.js
new file mode 100644
index 0000000..642c1fe
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dav.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "Luma lwa K",
+      "luma lwa p"
+    ],
+    "DAY": [
+      "Ituku ja jumwa",
+      "Kuramuka jimweri",
+      "Kuramuka kawi",
+      "Kuramuka kadadu",
+      "Kuramuka kana",
+      "Kuramuka kasanu",
+      "Kifula nguwo"
+    ],
+    "ERANAMES": [
+      "Kabla ya Kristo",
+      "Baada ya Kristo"
+    ],
+    "ERAS": [
+      "KK",
+      "BK"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Mori ghwa imbiri",
+      "Mori ghwa kawi",
+      "Mori ghwa kadadu",
+      "Mori ghwa kana",
+      "Mori ghwa kasanu",
+      "Mori ghwa karandadu",
+      "Mori ghwa mfungade",
+      "Mori ghwa wunyanya",
+      "Mori ghwa ikenda",
+      "Mori ghwa ikumi",
+      "Mori ghwa ikumi na imweri",
+      "Mori ghwa ikumi na iwi"
+    ],
+    "SHORTDAY": [
+      "Jum",
+      "Jim",
+      "Kaw",
+      "Kad",
+      "Kan",
+      "Kas",
+      "Ngu"
+    ],
+    "SHORTMONTH": [
+      "Imb",
+      "Kaw",
+      "Kad",
+      "Kan",
+      "Kas",
+      "Kar",
+      "Mfu",
+      "Wun",
+      "Ike",
+      "Iku",
+      "Imw",
+      "Iwi"
+    ],
+    "STANDALONEMONTH": [
+      "Mori ghwa imbiri",
+      "Mori ghwa kawi",
+      "Mori ghwa kadadu",
+      "Mori ghwa kana",
+      "Mori ghwa kasanu",
+      "Mori ghwa karandadu",
+      "Mori ghwa mfungade",
+      "Mori ghwa wunyanya",
+      "Mori ghwa ikenda",
+      "Mori ghwa ikumi",
+      "Mori ghwa ikumi na imweri",
+      "Mori ghwa ikumi na iwi"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Ksh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "dav",
+  "localeID": "dav",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_de-at.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_de-at.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_de-at.js
new file mode 100644
index 0000000..22f83e4
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_de-at.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "vorm.",
+      "nachm."
+    ],
+    "DAY": [
+      "Sonntag",
+      "Montag",
+      "Dienstag",
+      "Mittwoch",
+      "Donnerstag",
+      "Freitag",
+      "Samstag"
+    ],
+    "ERANAMES": [
+      "v. Chr.",
+      "n. Chr."
+    ],
+    "ERAS": [
+      "v. Chr.",
+      "n. Chr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "J\u00e4nner",
+      "Februar",
+      "M\u00e4rz",
+      "April",
+      "Mai",
+      "Juni",
+      "Juli",
+      "August",
+      "September",
+      "Oktober",
+      "November",
+      "Dezember"
+    ],
+    "SHORTDAY": [
+      "So.",
+      "Mo.",
+      "Di.",
+      "Mi.",
+      "Do.",
+      "Fr.",
+      "Sa."
+    ],
+    "SHORTMONTH": [
+      "J\u00e4n.",
+      "Feb.",
+      "M\u00e4rz",
+      "Apr.",
+      "Mai",
+      "Juni",
+      "Juli",
+      "Aug.",
+      "Sep.",
+      "Okt.",
+      "Nov.",
+      "Dez."
+    ],
+    "STANDALONEMONTH": [
+      "J\u00e4nner",
+      "Februar",
+      "M\u00e4rz",
+      "April",
+      "Mai",
+      "Juni",
+      "Juli",
+      "August",
+      "September",
+      "Oktober",
+      "November",
+      "Dezember"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "dd.MM.y HH:mm:ss",
+    "mediumDate": "dd.MM.y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.yy HH:mm",
+    "shortDate": "dd.MM.yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "de-at",
+  "localeID": "de_AT",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_de-be.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_de-be.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_de-be.js
new file mode 100644
index 0000000..0b519bd
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_de-be.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "vorm.",
+      "nachm."
+    ],
+    "DAY": [
+      "Sonntag",
+      "Montag",
+      "Dienstag",
+      "Mittwoch",
+      "Donnerstag",
+      "Freitag",
+      "Samstag"
+    ],
+    "ERANAMES": [
+      "v. Chr.",
+      "n. Chr."
+    ],
+    "ERAS": [
+      "v. Chr.",
+      "n. Chr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Januar",
+      "Februar",
+      "M\u00e4rz",
+      "April",
+      "Mai",
+      "Juni",
+      "Juli",
+      "August",
+      "September",
+      "Oktober",
+      "November",
+      "Dezember"
+    ],
+    "SHORTDAY": [
+      "So.",
+      "Mo.",
+      "Di.",
+      "Mi.",
+      "Do.",
+      "Fr.",
+      "Sa."
+    ],
+    "SHORTMONTH": [
+      "Jan.",
+      "Feb.",
+      "M\u00e4rz",
+      "Apr.",
+      "Mai",
+      "Juni",
+      "Juli",
+      "Aug.",
+      "Sep.",
+      "Okt.",
+      "Nov.",
+      "Dez."
+    ],
+    "STANDALONEMONTH": [
+      "Januar",
+      "Februar",
+      "M\u00e4rz",
+      "April",
+      "Mai",
+      "Juni",
+      "Juli",
+      "August",
+      "September",
+      "Oktober",
+      "November",
+      "Dezember"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "dd.MM.y HH:mm:ss",
+    "mediumDate": "dd.MM.y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.yy HH:mm",
+    "shortDate": "dd.MM.yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "de-be",
+  "localeID": "de_BE",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_de-ch.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_de-ch.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_de-ch.js
new file mode 100644
index 0000000..14554f9
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_de-ch.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "vorm.",
+      "nachm."
+    ],
+    "DAY": [
+      "Sonntag",
+      "Montag",
+      "Dienstag",
+      "Mittwoch",
+      "Donnerstag",
+      "Freitag",
+      "Samstag"
+    ],
+    "ERANAMES": [
+      "v. Chr.",
+      "n. Chr."
+    ],
+    "ERAS": [
+      "v. Chr.",
+      "n. Chr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Januar",
+      "Februar",
+      "M\u00e4rz",
+      "April",
+      "Mai",
+      "Juni",
+      "Juli",
+      "August",
+      "September",
+      "Oktober",
+      "November",
+      "Dezember"
+    ],
+    "SHORTDAY": [
+      "So.",
+      "Mo.",
+      "Di.",
+      "Mi.",
+      "Do.",
+      "Fr.",
+      "Sa."
+    ],
+    "SHORTMONTH": [
+      "Jan.",
+      "Feb.",
+      "M\u00e4rz",
+      "Apr.",
+      "Mai",
+      "Juni",
+      "Juli",
+      "Aug.",
+      "Sep.",
+      "Okt.",
+      "Nov.",
+      "Dez."
+    ],
+    "STANDALONEMONTH": [
+      "Januar",
+      "Februar",
+      "M\u00e4rz",
+      "April",
+      "Mai",
+      "Juni",
+      "Juli",
+      "August",
+      "September",
+      "Oktober",
+      "November",
+      "Dezember"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "dd.MM.y HH:mm:ss",
+    "mediumDate": "dd.MM.y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.yy HH:mm",
+    "shortDate": "dd.MM.yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "CHF",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": "'",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4-",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "de-ch",
+  "localeID": "de_CH",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_de-de.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_de-de.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_de-de.js
new file mode 100644
index 0000000..5227312
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_de-de.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "vorm.",
+      "nachm."
+    ],
+    "DAY": [
+      "Sonntag",
+      "Montag",
+      "Dienstag",
+      "Mittwoch",
+      "Donnerstag",
+      "Freitag",
+      "Samstag"
+    ],
+    "ERANAMES": [
+      "v. Chr.",
+      "n. Chr."
+    ],
+    "ERAS": [
+      "v. Chr.",
+      "n. Chr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Januar",
+      "Februar",
+      "M\u00e4rz",
+      "April",
+      "Mai",
+      "Juni",
+      "Juli",
+      "August",
+      "September",
+      "Oktober",
+      "November",
+      "Dezember"
+    ],
+    "SHORTDAY": [
+      "So.",
+      "Mo.",
+      "Di.",
+      "Mi.",
+      "Do.",
+      "Fr.",
+      "Sa."
+    ],
+    "SHORTMONTH": [
+      "Jan.",
+      "Feb.",
+      "M\u00e4rz",
+      "Apr.",
+      "Mai",
+      "Juni",
+      "Juli",
+      "Aug.",
+      "Sep.",
+      "Okt.",
+      "Nov.",
+      "Dez."
+    ],
+    "STANDALONEMONTH": [
+      "Januar",
+      "Februar",
+      "M\u00e4rz",
+      "April",
+      "Mai",
+      "Juni",
+      "Juli",
+      "August",
+      "September",
+      "Oktober",
+      "November",
+      "Dezember"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "dd.MM.y HH:mm:ss",
+    "mediumDate": "dd.MM.y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.yy HH:mm",
+    "shortDate": "dd.MM.yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "de-de",
+  "localeID": "de_DE",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_de-li.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_de-li.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_de-li.js
new file mode 100644
index 0000000..fa93e9d
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_de-li.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "vorm.",
+      "nachm."
+    ],
+    "DAY": [
+      "Sonntag",
+      "Montag",
+      "Dienstag",
+      "Mittwoch",
+      "Donnerstag",
+      "Freitag",
+      "Samstag"
+    ],
+    "ERANAMES": [
+      "v. Chr.",
+      "n. Chr."
+    ],
+    "ERAS": [
+      "v. Chr.",
+      "n. Chr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Januar",
+      "Februar",
+      "M\u00e4rz",
+      "April",
+      "Mai",
+      "Juni",
+      "Juli",
+      "August",
+      "September",
+      "Oktober",
+      "November",
+      "Dezember"
+    ],
+    "SHORTDAY": [
+      "So.",
+      "Mo.",
+      "Di.",
+      "Mi.",
+      "Do.",
+      "Fr.",
+      "Sa."
+    ],
+    "SHORTMONTH": [
+      "Jan.",
+      "Feb.",
+      "M\u00e4rz",
+      "Apr.",
+      "Mai",
+      "Juni",
+      "Juli",
+      "Aug.",
+      "Sep.",
+      "Okt.",
+      "Nov.",
+      "Dez."
+    ],
+    "STANDALONEMONTH": [
+      "Januar",
+      "Februar",
+      "M\u00e4rz",
+      "April",
+      "Mai",
+      "Juni",
+      "Juli",
+      "August",
+      "September",
+      "Oktober",
+      "November",
+      "Dezember"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "dd.MM.y HH:mm:ss",
+    "mediumDate": "dd.MM.y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.yy HH:mm",
+    "shortDate": "dd.MM.yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "CHF",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": "'",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "de-li",
+  "localeID": "de_LI",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_de-lu.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_de-lu.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_de-lu.js
new file mode 100644
index 0000000..2bca130
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_de-lu.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "vorm.",
+      "nachm."
+    ],
+    "DAY": [
+      "Sonntag",
+      "Montag",
+      "Dienstag",
+      "Mittwoch",
+      "Donnerstag",
+      "Freitag",
+      "Samstag"
+    ],
+    "ERANAMES": [
+      "v. Chr.",
+      "n. Chr."
+    ],
+    "ERAS": [
+      "v. Chr.",
+      "n. Chr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Januar",
+      "Februar",
+      "M\u00e4rz",
+      "April",
+      "Mai",
+      "Juni",
+      "Juli",
+      "August",
+      "September",
+      "Oktober",
+      "November",
+      "Dezember"
+    ],
+    "SHORTDAY": [
+      "So.",
+      "Mo.",
+      "Di.",
+      "Mi.",
+      "Do.",
+      "Fr.",
+      "Sa."
+    ],
+    "SHORTMONTH": [
+      "Jan.",
+      "Feb.",
+      "M\u00e4rz",
+      "Apr.",
+      "Mai",
+      "Juni",
+      "Juli",
+      "Aug.",
+      "Sep.",
+      "Okt.",
+      "Nov.",
+      "Dez."
+    ],
+    "STANDALONEMONTH": [
+      "Januar",
+      "Februar",
+      "M\u00e4rz",
+      "April",
+      "Mai",
+      "Juni",
+      "Juli",
+      "August",
+      "September",
+      "Oktober",
+      "November",
+      "Dezember"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "dd.MM.y HH:mm:ss",
+    "mediumDate": "dd.MM.y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.yy HH:mm",
+    "shortDate": "dd.MM.yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "de-lu",
+  "localeID": "de_LU",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_de.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_de.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_de.js
new file mode 100644
index 0000000..cc69b3a
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_de.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "vorm.",
+      "nachm."
+    ],
+    "DAY": [
+      "Sonntag",
+      "Montag",
+      "Dienstag",
+      "Mittwoch",
+      "Donnerstag",
+      "Freitag",
+      "Samstag"
+    ],
+    "ERANAMES": [
+      "v. Chr.",
+      "n. Chr."
+    ],
+    "ERAS": [
+      "v. Chr.",
+      "n. Chr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Januar",
+      "Februar",
+      "M\u00e4rz",
+      "April",
+      "Mai",
+      "Juni",
+      "Juli",
+      "August",
+      "September",
+      "Oktober",
+      "November",
+      "Dezember"
+    ],
+    "SHORTDAY": [
+      "So.",
+      "Mo.",
+      "Di.",
+      "Mi.",
+      "Do.",
+      "Fr.",
+      "Sa."
+    ],
+    "SHORTMONTH": [
+      "Jan.",
+      "Feb.",
+      "M\u00e4rz",
+      "Apr.",
+      "Mai",
+      "Juni",
+      "Juli",
+      "Aug.",
+      "Sep.",
+      "Okt.",
+      "Nov.",
+      "Dez."
+    ],
+    "STANDALONEMONTH": [
+      "Januar",
+      "Februar",
+      "M\u00e4rz",
+      "April",
+      "Mai",
+      "Juni",
+      "Juli",
+      "August",
+      "September",
+      "Oktober",
+      "November",
+      "Dezember"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "dd.MM.y HH:mm:ss",
+    "mediumDate": "dd.MM.y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.yy HH:mm",
+    "shortDate": "dd.MM.yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "de",
+  "localeID": "de",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dje-ne.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dje-ne.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dje-ne.js
new file mode 100644
index 0000000..468c855
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dje-ne.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "Subbaahi",
+      "Zaarikay b"
+    ],
+    "DAY": [
+      "Alhadi",
+      "Atinni",
+      "Atalaata",
+      "Alarba",
+      "Alhamisi",
+      "Alzuma",
+      "Asibti"
+    ],
+    "ERANAMES": [
+      "Isaa jine",
+      "Isaa zamanoo"
+    ],
+    "ERAS": [
+      "IJ",
+      "IZ"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u017danwiye",
+      "Feewiriye",
+      "Marsi",
+      "Awiril",
+      "Me",
+      "\u017duwe\u014b",
+      "\u017duyye",
+      "Ut",
+      "Sektanbur",
+      "Oktoobur",
+      "Noowanbur",
+      "Deesanbur"
+    ],
+    "SHORTDAY": [
+      "Alh",
+      "Ati",
+      "Ata",
+      "Ala",
+      "Alm",
+      "Alz",
+      "Asi"
+    ],
+    "SHORTMONTH": [
+      "\u017dan",
+      "Fee",
+      "Mar",
+      "Awi",
+      "Me",
+      "\u017duw",
+      "\u017duy",
+      "Ut",
+      "Sek",
+      "Okt",
+      "Noo",
+      "Dee"
+    ],
+    "STANDALONEMONTH": [
+      "\u017danwiye",
+      "Feewiriye",
+      "Marsi",
+      "Awiril",
+      "Me",
+      "\u017duwe\u014b",
+      "\u017duyye",
+      "Ut",
+      "Sektanbur",
+      "Oktoobur",
+      "Noowanbur",
+      "Deesanbur"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "CFA",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a4"
+      }
+    ]
+  },
+  "id": "dje-ne",
+  "localeID": "dje_NE",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dje.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dje.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dje.js
new file mode 100644
index 0000000..6b1f122
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dje.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "Subbaahi",
+      "Zaarikay b"
+    ],
+    "DAY": [
+      "Alhadi",
+      "Atinni",
+      "Atalaata",
+      "Alarba",
+      "Alhamisi",
+      "Alzuma",
+      "Asibti"
+    ],
+    "ERANAMES": [
+      "Isaa jine",
+      "Isaa zamanoo"
+    ],
+    "ERAS": [
+      "IJ",
+      "IZ"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u017danwiye",
+      "Feewiriye",
+      "Marsi",
+      "Awiril",
+      "Me",
+      "\u017duwe\u014b",
+      "\u017duyye",
+      "Ut",
+      "Sektanbur",
+      "Oktoobur",
+      "Noowanbur",
+      "Deesanbur"
+    ],
+    "SHORTDAY": [
+      "Alh",
+      "Ati",
+      "Ata",
+      "Ala",
+      "Alm",
+      "Alz",
+      "Asi"
+    ],
+    "SHORTMONTH": [
+      "\u017dan",
+      "Fee",
+      "Mar",
+      "Awi",
+      "Me",
+      "\u017duw",
+      "\u017duy",
+      "Ut",
+      "Sek",
+      "Okt",
+      "Noo",
+      "Dee"
+    ],
+    "STANDALONEMONTH": [
+      "\u017danwiye",
+      "Feewiriye",
+      "Marsi",
+      "Awiril",
+      "Me",
+      "\u017duwe\u014b",
+      "\u017duyye",
+      "Ut",
+      "Sektanbur",
+      "Oktoobur",
+      "Noowanbur",
+      "Deesanbur"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "CFA",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a4"
+      }
+    ]
+  },
+  "id": "dje",
+  "localeID": "dje",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);


[16/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ie.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ie.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ie.js
new file mode 100644
index 0000000..9c79dd4
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ie.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a.m.",
+      "p.m."
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-ie",
+  "localeID": "en_IE",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-im.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-im.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-im.js
new file mode 100644
index 0000000..c81583b
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-im.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u00a3",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-im",
+  "localeID": "en_IM",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-in.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-in.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-in.js
new file mode 100644
index 0000000..617f6bf
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-in.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      6,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "dd-MMM-y h:mm:ss a",
+    "mediumDate": "dd-MMM-y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/yy h:mm a",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20b9",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-in",
+  "localeID": "en_IN",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-io.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-io.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-io.js
new file mode 100644
index 0000000..6925279
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-io.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-io",
+  "localeID": "en_IO",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-iso.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-iso.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-iso.js
new file mode 100644
index 0000000..a297093
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-iso.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, y MMMM dd",
+    "longDate": "y MMMM d",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "yyyy-MM-dd HH:mm",
+    "shortDate": "yyyy-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-iso",
+  "localeID": "en_ISO",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-je.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-je.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-je.js
new file mode 100644
index 0000000..1186c5c
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-je.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u00a3",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-je",
+  "localeID": "en_JE",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-jm.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-jm.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-jm.js
new file mode 100644
index 0000000..174002b
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-jm.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/M/yy h:mm a",
+    "shortDate": "d/M/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-jm",
+  "localeID": "en_JM",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ke.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ke.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ke.js
new file mode 100644
index 0000000..3af38b4
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ke.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Ksh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-ke",
+  "localeID": "en_KE",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ki.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ki.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ki.js
new file mode 100644
index 0000000..2fe2ef3
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ki.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-ki",
+  "localeID": "en_KI",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-kn.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-kn.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-kn.js
new file mode 100644
index 0000000..09101c9
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-kn.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-kn",
+  "localeID": "en_KN",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ky.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ky.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ky.js
new file mode 100644
index 0000000..1d7d454
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ky.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-ky",
+  "localeID": "en_KY",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-lc.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-lc.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-lc.js
new file mode 100644
index 0000000..5a82bd0
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-lc.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-lc",
+  "localeID": "en_LC",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-lr.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-lr.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-lr.js
new file mode 100644
index 0000000..ade846b
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-lr.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-lr",
+  "localeID": "en_LR",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ls.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ls.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ls.js
new file mode 100644
index 0000000..cd8e927
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ls.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "R",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-ls",
+  "localeID": "en_LS",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-mg.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-mg.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-mg.js
new file mode 100644
index 0000000..23a37d8
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-mg.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Ar",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-mg",
+  "localeID": "en_MG",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-mh.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-mh.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-mh.js
new file mode 100644
index 0000000..8c068a5
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-mh.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, MMMM d, y",
+    "longDate": "MMMM d, y",
+    "medium": "MMM d, y h:mm:ss a",
+    "mediumDate": "MMM d, y",
+    "mediumTime": "h:mm:ss a",
+    "short": "M/d/yy h:mm a",
+    "shortDate": "M/d/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-mh",
+  "localeID": "en_MH",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-mo.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-mo.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-mo.js
new file mode 100644
index 0000000..d24c8b3
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-mo.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "MOP",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-mo",
+  "localeID": "en_MO",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-mp.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-mp.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-mp.js
new file mode 100644
index 0000000..ff8b6b4
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-mp.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, MMMM d, y",
+    "longDate": "MMMM d, y",
+    "medium": "MMM d, y h:mm:ss a",
+    "mediumDate": "MMM d, y",
+    "mediumTime": "h:mm:ss a",
+    "short": "M/d/yy h:mm a",
+    "shortDate": "M/d/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-mp",
+  "localeID": "en_MP",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ms.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ms.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ms.js
new file mode 100644
index 0000000..7c44e8f
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ms.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-ms",
+  "localeID": "en_MS",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-mt.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-mt.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-mt.js
new file mode 100644
index 0000000..63c4255
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-mt.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "dd MMMM y",
+    "medium": "dd MMM y h:mm:ss a",
+    "mediumDate": "dd MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-mt",
+  "localeID": "en_MT",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-mu.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-mu.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-mu.js
new file mode 100644
index 0000000..5ededb9
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-mu.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "MURs",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-mu",
+  "localeID": "en_MU",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-mw.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-mw.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-mw.js
new file mode 100644
index 0000000..ed68012
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-mw.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "MWK",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-mw",
+  "localeID": "en_MW",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-my.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-my.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-my.js
new file mode 100644
index 0000000..ae1315b
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-my.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "RM",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-my",
+  "localeID": "en_MY",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-na.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-na.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-na.js
new file mode 100644
index 0000000..d7240f3
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-na.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-na",
+  "localeID": "en_NA",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-nf.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-nf.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-nf.js
new file mode 100644
index 0000000..d238507
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-nf.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-nf",
+  "localeID": "en_NF",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ng.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ng.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ng.js
new file mode 100644
index 0000000..a6e01a5
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ng.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20a6",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-ng",
+  "localeID": "en_NG",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);



[04/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mer-ke.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mer-ke.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mer-ke.js
new file mode 100644
index 0000000..a4eda25
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mer-ke.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "R\u0168",
+      "\u0168G"
+    ],
+    "DAY": [
+      "Kiumia",
+      "Muramuko",
+      "Wairi",
+      "Wethatu",
+      "Wena",
+      "Wetano",
+      "Jumamosi"
+    ],
+    "ERANAMES": [
+      "Mbere ya Krist\u0169",
+      "Nyuma ya Krist\u0169"
+    ],
+    "ERAS": [
+      "MK",
+      "NK"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Januar\u0129",
+      "Feburuar\u0129",
+      "Machi",
+      "\u0128pur\u0169",
+      "M\u0129\u0129",
+      "Njuni",
+      "Njura\u0129",
+      "Agasti",
+      "Septemba",
+      "Okt\u0169ba",
+      "Novemba",
+      "Dicemba"
+    ],
+    "SHORTDAY": [
+      "KIU",
+      "MRA",
+      "WAI",
+      "WET",
+      "WEN",
+      "WTN",
+      "JUM"
+    ],
+    "SHORTMONTH": [
+      "JAN",
+      "FEB",
+      "MAC",
+      "\u0128PU",
+      "M\u0128\u0128",
+      "NJU",
+      "NJR",
+      "AGA",
+      "SPT",
+      "OKT",
+      "NOV",
+      "DEC"
+    ],
+    "STANDALONEMONTH": [
+      "Januar\u0129",
+      "Feburuar\u0129",
+      "Machi",
+      "\u0128pur\u0169",
+      "M\u0129\u0129",
+      "Njuni",
+      "Njura\u0129",
+      "Agasti",
+      "Septemba",
+      "Okt\u0169ba",
+      "Novemba",
+      "Dicemba"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Ksh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "mer-ke",
+  "localeID": "mer_KE",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mer.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mer.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mer.js
new file mode 100644
index 0000000..6cc84a0
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mer.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "R\u0168",
+      "\u0168G"
+    ],
+    "DAY": [
+      "Kiumia",
+      "Muramuko",
+      "Wairi",
+      "Wethatu",
+      "Wena",
+      "Wetano",
+      "Jumamosi"
+    ],
+    "ERANAMES": [
+      "Mbere ya Krist\u0169",
+      "Nyuma ya Krist\u0169"
+    ],
+    "ERAS": [
+      "MK",
+      "NK"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Januar\u0129",
+      "Feburuar\u0129",
+      "Machi",
+      "\u0128pur\u0169",
+      "M\u0129\u0129",
+      "Njuni",
+      "Njura\u0129",
+      "Agasti",
+      "Septemba",
+      "Okt\u0169ba",
+      "Novemba",
+      "Dicemba"
+    ],
+    "SHORTDAY": [
+      "KIU",
+      "MRA",
+      "WAI",
+      "WET",
+      "WEN",
+      "WTN",
+      "JUM"
+    ],
+    "SHORTMONTH": [
+      "JAN",
+      "FEB",
+      "MAC",
+      "\u0128PU",
+      "M\u0128\u0128",
+      "NJU",
+      "NJR",
+      "AGA",
+      "SPT",
+      "OKT",
+      "NOV",
+      "DEC"
+    ],
+    "STANDALONEMONTH": [
+      "Januar\u0129",
+      "Feburuar\u0129",
+      "Machi",
+      "\u0128pur\u0169",
+      "M\u0129\u0129",
+      "Njuni",
+      "Njura\u0129",
+      "Agasti",
+      "Septemba",
+      "Okt\u0169ba",
+      "Novemba",
+      "Dicemba"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Ksh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "mer",
+  "localeID": "mer",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mfe-mu.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mfe-mu.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mfe-mu.js
new file mode 100644
index 0000000..55ef1ff
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mfe-mu.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimans",
+      "lindi",
+      "mardi",
+      "merkredi",
+      "zedi",
+      "vandredi",
+      "samdi"
+    ],
+    "ERANAMES": [
+      "avan Zezi-Krist",
+      "apre Zezi-Krist"
+    ],
+    "ERAS": [
+      "av. Z-K",
+      "ap. Z-K"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "zanvie",
+      "fevriye",
+      "mars",
+      "avril",
+      "me",
+      "zin",
+      "zilye",
+      "out",
+      "septam",
+      "oktob",
+      "novam",
+      "desam"
+    ],
+    "SHORTDAY": [
+      "dim",
+      "lin",
+      "mar",
+      "mer",
+      "ze",
+      "van",
+      "sam"
+    ],
+    "SHORTMONTH": [
+      "zan",
+      "fev",
+      "mar",
+      "avr",
+      "me",
+      "zin",
+      "zil",
+      "out",
+      "sep",
+      "okt",
+      "nov",
+      "des"
+    ],
+    "STANDALONEMONTH": [
+      "zanvie",
+      "fevriye",
+      "mars",
+      "avril",
+      "me",
+      "zin",
+      "zilye",
+      "out",
+      "septam",
+      "oktob",
+      "novam",
+      "desam"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "MURs",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "mfe-mu",
+  "localeID": "mfe_MU",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mfe.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mfe.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mfe.js
new file mode 100644
index 0000000..e48e27b
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mfe.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimans",
+      "lindi",
+      "mardi",
+      "merkredi",
+      "zedi",
+      "vandredi",
+      "samdi"
+    ],
+    "ERANAMES": [
+      "avan Zezi-Krist",
+      "apre Zezi-Krist"
+    ],
+    "ERAS": [
+      "av. Z-K",
+      "ap. Z-K"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "zanvie",
+      "fevriye",
+      "mars",
+      "avril",
+      "me",
+      "zin",
+      "zilye",
+      "out",
+      "septam",
+      "oktob",
+      "novam",
+      "desam"
+    ],
+    "SHORTDAY": [
+      "dim",
+      "lin",
+      "mar",
+      "mer",
+      "ze",
+      "van",
+      "sam"
+    ],
+    "SHORTMONTH": [
+      "zan",
+      "fev",
+      "mar",
+      "avr",
+      "me",
+      "zin",
+      "zil",
+      "out",
+      "sep",
+      "okt",
+      "nov",
+      "des"
+    ],
+    "STANDALONEMONTH": [
+      "zanvie",
+      "fevriye",
+      "mars",
+      "avril",
+      "me",
+      "zin",
+      "zilye",
+      "out",
+      "septam",
+      "oktob",
+      "novam",
+      "desam"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "MURs",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "mfe",
+  "localeID": "mfe",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mg-mg.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mg-mg.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mg-mg.js
new file mode 100644
index 0000000..1bb99a0
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mg-mg.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Alahady",
+      "Alatsinainy",
+      "Talata",
+      "Alarobia",
+      "Alakamisy",
+      "Zoma",
+      "Asabotsy"
+    ],
+    "ERANAMES": [
+      "Alohan\u2019i JK",
+      "Aorian\u2019i JK"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Janoary",
+      "Febroary",
+      "Martsa",
+      "Aprily",
+      "Mey",
+      "Jona",
+      "Jolay",
+      "Aogositra",
+      "Septambra",
+      "Oktobra",
+      "Novambra",
+      "Desambra"
+    ],
+    "SHORTDAY": [
+      "Alah",
+      "Alats",
+      "Tal",
+      "Alar",
+      "Alak",
+      "Zom",
+      "Asab"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "Mey",
+      "Jon",
+      "Jol",
+      "Aog",
+      "Sep",
+      "Okt",
+      "Nov",
+      "Des"
+    ],
+    "STANDALONEMONTH": [
+      "Janoary",
+      "Febroary",
+      "Martsa",
+      "Aprily",
+      "Mey",
+      "Jona",
+      "Jolay",
+      "Aogositra",
+      "Septambra",
+      "Oktobra",
+      "Novambra",
+      "Desambra"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Ar",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "mg-mg",
+  "localeID": "mg_MG",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mg.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mg.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mg.js
new file mode 100644
index 0000000..5c27790
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mg.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Alahady",
+      "Alatsinainy",
+      "Talata",
+      "Alarobia",
+      "Alakamisy",
+      "Zoma",
+      "Asabotsy"
+    ],
+    "ERANAMES": [
+      "Alohan\u2019i JK",
+      "Aorian\u2019i JK"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Janoary",
+      "Febroary",
+      "Martsa",
+      "Aprily",
+      "Mey",
+      "Jona",
+      "Jolay",
+      "Aogositra",
+      "Septambra",
+      "Oktobra",
+      "Novambra",
+      "Desambra"
+    ],
+    "SHORTDAY": [
+      "Alah",
+      "Alats",
+      "Tal",
+      "Alar",
+      "Alak",
+      "Zom",
+      "Asab"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "Mey",
+      "Jon",
+      "Jol",
+      "Aog",
+      "Sep",
+      "Okt",
+      "Nov",
+      "Des"
+    ],
+    "STANDALONEMONTH": [
+      "Janoary",
+      "Febroary",
+      "Martsa",
+      "Aprily",
+      "Mey",
+      "Jona",
+      "Jolay",
+      "Aogositra",
+      "Septambra",
+      "Oktobra",
+      "Novambra",
+      "Desambra"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Ar",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "mg",
+  "localeID": "mg",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mgh-mz.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mgh-mz.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mgh-mz.js
new file mode 100644
index 0000000..f883d1c
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mgh-mz.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "wichishu",
+      "mchochil\u2019l"
+    ],
+    "DAY": [
+      "Sabato",
+      "Jumatatu",
+      "Jumanne",
+      "Jumatano",
+      "Arahamisi",
+      "Ijumaa",
+      "Jumamosi"
+    ],
+    "ERANAMES": [
+      "Hinapiya yesu",
+      "Yopia yesu"
+    ],
+    "ERAS": [
+      "HY",
+      "YY"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Mweri wo kwanza",
+      "Mweri wo unayeli",
+      "Mweri wo uneraru",
+      "Mweri wo unecheshe",
+      "Mweri wo unethanu",
+      "Mweri wo thanu na mocha",
+      "Mweri wo saba",
+      "Mweri wo nane",
+      "Mweri wo tisa",
+      "Mweri wo kumi",
+      "Mweri wo kumi na moja",
+      "Mweri wo kumi na yel\u2019li"
+    ],
+    "SHORTDAY": [
+      "Sab",
+      "Jtt",
+      "Jnn",
+      "Jtn",
+      "Ara",
+      "Iju",
+      "Jmo"
+    ],
+    "SHORTMONTH": [
+      "Kwa",
+      "Una",
+      "Rar",
+      "Che",
+      "Tha",
+      "Moc",
+      "Sab",
+      "Nan",
+      "Tis",
+      "Kum",
+      "Moj",
+      "Yel"
+    ],
+    "STANDALONEMONTH": [
+      "Mweri wo kwanza",
+      "Mweri wo unayeli",
+      "Mweri wo uneraru",
+      "Mweri wo unecheshe",
+      "Mweri wo unethanu",
+      "Mweri wo thanu na mocha",
+      "Mweri wo saba",
+      "Mweri wo nane",
+      "Mweri wo tisa",
+      "Mweri wo kumi",
+      "Mweri wo kumi na moja",
+      "Mweri wo kumi na yel\u2019li"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "MTn",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "mgh-mz",
+  "localeID": "mgh_MZ",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mgh.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mgh.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mgh.js
new file mode 100644
index 0000000..e35cb07
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mgh.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "wichishu",
+      "mchochil\u2019l"
+    ],
+    "DAY": [
+      "Sabato",
+      "Jumatatu",
+      "Jumanne",
+      "Jumatano",
+      "Arahamisi",
+      "Ijumaa",
+      "Jumamosi"
+    ],
+    "ERANAMES": [
+      "Hinapiya yesu",
+      "Yopia yesu"
+    ],
+    "ERAS": [
+      "HY",
+      "YY"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Mweri wo kwanza",
+      "Mweri wo unayeli",
+      "Mweri wo uneraru",
+      "Mweri wo unecheshe",
+      "Mweri wo unethanu",
+      "Mweri wo thanu na mocha",
+      "Mweri wo saba",
+      "Mweri wo nane",
+      "Mweri wo tisa",
+      "Mweri wo kumi",
+      "Mweri wo kumi na moja",
+      "Mweri wo kumi na yel\u2019li"
+    ],
+    "SHORTDAY": [
+      "Sab",
+      "Jtt",
+      "Jnn",
+      "Jtn",
+      "Ara",
+      "Iju",
+      "Jmo"
+    ],
+    "SHORTMONTH": [
+      "Kwa",
+      "Una",
+      "Rar",
+      "Che",
+      "Tha",
+      "Moc",
+      "Sab",
+      "Nan",
+      "Tis",
+      "Kum",
+      "Moj",
+      "Yel"
+    ],
+    "STANDALONEMONTH": [
+      "Mweri wo kwanza",
+      "Mweri wo unayeli",
+      "Mweri wo uneraru",
+      "Mweri wo unecheshe",
+      "Mweri wo unethanu",
+      "Mweri wo thanu na mocha",
+      "Mweri wo saba",
+      "Mweri wo nane",
+      "Mweri wo tisa",
+      "Mweri wo kumi",
+      "Mweri wo kumi na moja",
+      "Mweri wo kumi na yel\u2019li"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "MTn",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "mgh",
+  "localeID": "mgh",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mgo-cm.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mgo-cm.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mgo-cm.js
new file mode 100644
index 0000000..d1dc4f6
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mgo-cm.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Aneg 1",
+      "Aneg 2",
+      "Aneg 3",
+      "Aneg 4",
+      "Aneg 5",
+      "Aneg 6",
+      "Aneg 7"
+    ],
+    "ERANAMES": [
+      "BCE",
+      "CE"
+    ],
+    "ERAS": [
+      "BCE",
+      "CE"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "im\u0259g mbegtug",
+      "imeg \u00e0b\u00f9b\u00ec",
+      "imeg mb\u0259\u014bchubi",
+      "im\u0259g ngw\u0259\u0300t",
+      "im\u0259g fog",
+      "im\u0259g ichiib\u0254d",
+      "im\u0259g \u00e0d\u00f9mb\u0259\u0300\u014b",
+      "im\u0259g ichika",
+      "im\u0259g kud",
+      "im\u0259g t\u00e8si\u02bce",
+      "im\u0259g z\u00f2",
+      "im\u0259g krizmed"
+    ],
+    "SHORTDAY": [
+      "Aneg 1",
+      "Aneg 2",
+      "Aneg 3",
+      "Aneg 4",
+      "Aneg 5",
+      "Aneg 6",
+      "Aneg 7"
+    ],
+    "SHORTMONTH": [
+      "mbegtug",
+      "imeg \u00e0b\u00f9b\u00ec",
+      "imeg mb\u0259\u014bchubi",
+      "im\u0259g ngw\u0259\u0300t",
+      "im\u0259g fog",
+      "im\u0259g ichiib\u0254d",
+      "im\u0259g \u00e0d\u00f9mb\u0259\u0300\u014b",
+      "im\u0259g ichika",
+      "im\u0259g kud",
+      "im\u0259g t\u00e8si\u02bce",
+      "im\u0259g z\u00f2",
+      "im\u0259g krizmed"
+    ],
+    "STANDALONEMONTH": [
+      "im\u0259g mbegtug",
+      "imeg \u00e0b\u00f9b\u00ec",
+      "imeg mb\u0259\u014bchubi",
+      "im\u0259g ngw\u0259\u0300t",
+      "im\u0259g fog",
+      "im\u0259g ichiib\u0254d",
+      "im\u0259g \u00e0d\u00f9mb\u0259\u0300\u014b",
+      "im\u0259g ichika",
+      "im\u0259g kud",
+      "im\u0259g t\u00e8si\u02bce",
+      "im\u0259g z\u00f2",
+      "im\u0259g krizmed"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, y MMMM dd",
+    "longDate": "y MMMM d",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "y-MM-dd HH:mm",
+    "shortDate": "y-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFA",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "mgo-cm",
+  "localeID": "mgo_CM",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mgo.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mgo.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mgo.js
new file mode 100644
index 0000000..23ab0b1
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mgo.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Aneg 1",
+      "Aneg 2",
+      "Aneg 3",
+      "Aneg 4",
+      "Aneg 5",
+      "Aneg 6",
+      "Aneg 7"
+    ],
+    "ERANAMES": [
+      "BCE",
+      "CE"
+    ],
+    "ERAS": [
+      "BCE",
+      "CE"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "im\u0259g mbegtug",
+      "imeg \u00e0b\u00f9b\u00ec",
+      "imeg mb\u0259\u014bchubi",
+      "im\u0259g ngw\u0259\u0300t",
+      "im\u0259g fog",
+      "im\u0259g ichiib\u0254d",
+      "im\u0259g \u00e0d\u00f9mb\u0259\u0300\u014b",
+      "im\u0259g ichika",
+      "im\u0259g kud",
+      "im\u0259g t\u00e8si\u02bce",
+      "im\u0259g z\u00f2",
+      "im\u0259g krizmed"
+    ],
+    "SHORTDAY": [
+      "Aneg 1",
+      "Aneg 2",
+      "Aneg 3",
+      "Aneg 4",
+      "Aneg 5",
+      "Aneg 6",
+      "Aneg 7"
+    ],
+    "SHORTMONTH": [
+      "mbegtug",
+      "imeg \u00e0b\u00f9b\u00ec",
+      "imeg mb\u0259\u014bchubi",
+      "im\u0259g ngw\u0259\u0300t",
+      "im\u0259g fog",
+      "im\u0259g ichiib\u0254d",
+      "im\u0259g \u00e0d\u00f9mb\u0259\u0300\u014b",
+      "im\u0259g ichika",
+      "im\u0259g kud",
+      "im\u0259g t\u00e8si\u02bce",
+      "im\u0259g z\u00f2",
+      "im\u0259g krizmed"
+    ],
+    "STANDALONEMONTH": [
+      "im\u0259g mbegtug",
+      "imeg \u00e0b\u00f9b\u00ec",
+      "imeg mb\u0259\u014bchubi",
+      "im\u0259g ngw\u0259\u0300t",
+      "im\u0259g fog",
+      "im\u0259g ichiib\u0254d",
+      "im\u0259g \u00e0d\u00f9mb\u0259\u0300\u014b",
+      "im\u0259g ichika",
+      "im\u0259g kud",
+      "im\u0259g t\u00e8si\u02bce",
+      "im\u0259g z\u00f2",
+      "im\u0259g krizmed"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, y MMMM dd",
+    "longDate": "y MMMM d",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "y-MM-dd HH:mm",
+    "shortDate": "y-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFA",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "mgo",
+  "localeID": "mgo",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mk-mk.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mk-mk.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mk-mk.js
new file mode 100644
index 0000000..1eb4837
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mk-mk.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u043f\u0440\u0435\u0442\u043f\u043b\u0430\u0434\u043d\u0435",
+      "\u043f\u043e\u043f\u043b\u0430\u0434\u043d\u0435"
+    ],
+    "DAY": [
+      "\u043d\u0435\u0434\u0435\u043b\u0430",
+      "\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a",
+      "\u0432\u0442\u043e\u0440\u043d\u0438\u043a",
+      "\u0441\u0440\u0435\u0434\u0430",
+      "\u0447\u0435\u0442\u0432\u0440\u0442\u043e\u043a",
+      "\u043f\u0435\u0442\u043e\u043a",
+      "\u0441\u0430\u0431\u043e\u0442\u0430"
+    ],
+    "ERANAMES": [
+      "\u043f\u0440\u0435\u0434 \u043d\u0430\u0448\u0430\u0442\u0430 \u0435\u0440\u0430",
+      "\u043e\u0434 \u043d\u0430\u0448\u0430\u0442\u0430 \u0435\u0440\u0430"
+    ],
+    "ERAS": [
+      "\u043f\u0440.\u043d.\u0435.",
+      "\u043d.\u0435."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u0458\u0430\u043d\u0443\u0430\u0440\u0438",
+      "\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438",
+      "\u043c\u0430\u0440\u0442",
+      "\u0430\u043f\u0440\u0438\u043b",
+      "\u043c\u0430\u0458",
+      "\u0458\u0443\u043d\u0438",
+      "\u0458\u0443\u043b\u0438",
+      "\u0430\u0432\u0433\u0443\u0441\u0442",
+      "\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438",
+      "\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438",
+      "\u043d\u043e\u0435\u043c\u0432\u0440\u0438",
+      "\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438"
+    ],
+    "SHORTDAY": [
+      "\u043d\u0435\u0434.",
+      "\u043f\u043e\u043d.",
+      "\u0432\u0442.",
+      "\u0441\u0440\u0435.",
+      "\u0447\u0435\u0442.",
+      "\u043f\u0435\u0442.",
+      "\u0441\u0430\u0431."
+    ],
+    "SHORTMONTH": [
+      "\u0458\u0430\u043d.",
+      "\u0444\u0435\u0432.",
+      "\u043c\u0430\u0440.",
+      "\u0430\u043f\u0440.",
+      "\u043c\u0430\u0458",
+      "\u0458\u0443\u043d.",
+      "\u0458\u0443\u043b.",
+      "\u0430\u0432\u0433.",
+      "\u0441\u0435\u043f\u0442.",
+      "\u043e\u043a\u0442.",
+      "\u043d\u043e\u0435\u043c.",
+      "\u0434\u0435\u043a."
+    ],
+    "STANDALONEMONTH": [
+      "\u0458\u0430\u043d\u0443\u0430\u0440\u0438",
+      "\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438",
+      "\u043c\u0430\u0440\u0442",
+      "\u0430\u043f\u0440\u0438\u043b",
+      "\u043c\u0430\u0458",
+      "\u0458\u0443\u043d\u0438",
+      "\u0458\u0443\u043b\u0438",
+      "\u0430\u0432\u0433\u0443\u0441\u0442",
+      "\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438",
+      "\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438",
+      "\u043d\u043e\u0435\u043c\u0432\u0440\u0438",
+      "\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, dd MMMM y",
+    "longDate": "dd MMMM y",
+    "medium": "dd.M.y HH:mm:ss",
+    "mediumDate": "dd.M.y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.M.yy HH:mm",
+    "shortDate": "dd.M.yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "din",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "mk-mk",
+  "localeID": "mk_MK",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (vf.v == 0 && i % 10 == 1 || vf.f % 10 == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mk.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mk.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mk.js
new file mode 100644
index 0000000..81b07fd
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mk.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u043f\u0440\u0435\u0442\u043f\u043b\u0430\u0434\u043d\u0435",
+      "\u043f\u043e\u043f\u043b\u0430\u0434\u043d\u0435"
+    ],
+    "DAY": [
+      "\u043d\u0435\u0434\u0435\u043b\u0430",
+      "\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a",
+      "\u0432\u0442\u043e\u0440\u043d\u0438\u043a",
+      "\u0441\u0440\u0435\u0434\u0430",
+      "\u0447\u0435\u0442\u0432\u0440\u0442\u043e\u043a",
+      "\u043f\u0435\u0442\u043e\u043a",
+      "\u0441\u0430\u0431\u043e\u0442\u0430"
+    ],
+    "ERANAMES": [
+      "\u043f\u0440\u0435\u0434 \u043d\u0430\u0448\u0430\u0442\u0430 \u0435\u0440\u0430",
+      "\u043e\u0434 \u043d\u0430\u0448\u0430\u0442\u0430 \u0435\u0440\u0430"
+    ],
+    "ERAS": [
+      "\u043f\u0440.\u043d.\u0435.",
+      "\u043d.\u0435."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u0458\u0430\u043d\u0443\u0430\u0440\u0438",
+      "\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438",
+      "\u043c\u0430\u0440\u0442",
+      "\u0430\u043f\u0440\u0438\u043b",
+      "\u043c\u0430\u0458",
+      "\u0458\u0443\u043d\u0438",
+      "\u0458\u0443\u043b\u0438",
+      "\u0430\u0432\u0433\u0443\u0441\u0442",
+      "\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438",
+      "\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438",
+      "\u043d\u043e\u0435\u043c\u0432\u0440\u0438",
+      "\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438"
+    ],
+    "SHORTDAY": [
+      "\u043d\u0435\u0434.",
+      "\u043f\u043e\u043d.",
+      "\u0432\u0442.",
+      "\u0441\u0440\u0435.",
+      "\u0447\u0435\u0442.",
+      "\u043f\u0435\u0442.",
+      "\u0441\u0430\u0431."
+    ],
+    "SHORTMONTH": [
+      "\u0458\u0430\u043d.",
+      "\u0444\u0435\u0432.",
+      "\u043c\u0430\u0440.",
+      "\u0430\u043f\u0440.",
+      "\u043c\u0430\u0458",
+      "\u0458\u0443\u043d.",
+      "\u0458\u0443\u043b.",
+      "\u0430\u0432\u0433.",
+      "\u0441\u0435\u043f\u0442.",
+      "\u043e\u043a\u0442.",
+      "\u043d\u043e\u0435\u043c.",
+      "\u0434\u0435\u043a."
+    ],
+    "STANDALONEMONTH": [
+      "\u0458\u0430\u043d\u0443\u0430\u0440\u0438",
+      "\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438",
+      "\u043c\u0430\u0440\u0442",
+      "\u0430\u043f\u0440\u0438\u043b",
+      "\u043c\u0430\u0458",
+      "\u0458\u0443\u043d\u0438",
+      "\u0458\u0443\u043b\u0438",
+      "\u0430\u0432\u0433\u0443\u0441\u0442",
+      "\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438",
+      "\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438",
+      "\u043d\u043e\u0435\u043c\u0432\u0440\u0438",
+      "\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, dd MMMM y",
+    "longDate": "dd MMMM y",
+    "medium": "dd.M.y HH:mm:ss",
+    "mediumDate": "dd.M.y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.M.yy HH:mm",
+    "shortDate": "dd.M.yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "din",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "mk",
+  "localeID": "mk",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (vf.v == 0 && i % 10 == 1 || vf.f % 10 == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ml-in.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ml-in.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ml-in.js
new file mode 100644
index 0000000..e160fa9
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ml-in.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "\u0d1e\u0d3e\u0d2f\u0d31\u0d3e\u0d34\u0d4d\u200c\u0d1a",
+      "\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d33\u0d3e\u0d34\u0d4d\u200c\u0d1a",
+      "\u0d1a\u0d4a\u0d35\u0d4d\u0d35\u0d3e\u0d34\u0d4d\u0d1a",
+      "\u0d2c\u0d41\u0d27\u0d28\u0d3e\u0d34\u0d4d\u200c\u0d1a",
+      "\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d3e\u0d34\u0d4d\u200c\u0d1a",
+      "\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u200c\u0d1a",
+      "\u0d36\u0d28\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u200c\u0d1a"
+    ],
+    "ERANAMES": [
+      "\u0d15\u0d4d\u0d30\u0d3f\u0d38\u0d4d\u200c\u0d24\u0d41\u0d35\u0d3f\u0d28\u0d4d \u0d2e\u0d41\u0d2e\u0d4d\u0d2a\u0d4d",
+      "\u0d06\u0d28\u0d4d\u0d28\u0d4b \u0d21\u0d4a\u0d2e\u0d3f\u0d28\u0d3f"
+    ],
+    "ERAS": [
+      "\u0d15\u0d4d\u0d30\u0d3f.\u0d2e\u0d41.",
+      "\u0d0e\u0d21\u0d3f"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u0d1c\u0d28\u0d41\u0d35\u0d30\u0d3f",
+      "\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41\u0d35\u0d30\u0d3f",
+      "\u0d2e\u0d3e\u0d7c\u0d1a\u0d4d\u0d1a\u0d4d",
+      "\u0d0f\u0d2a\u0d4d\u0d30\u0d3f\u0d7d",
+      "\u0d2e\u0d47\u0d2f\u0d4d",
+      "\u0d1c\u0d42\u0d7a",
+      "\u0d1c\u0d42\u0d32\u0d48",
+      "\u0d06\u0d17\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d",
+      "\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02\u0d2c\u0d7c",
+      "\u0d12\u0d15\u0d4d\u200c\u0d1f\u0d4b\u0d2c\u0d7c",
+      "\u0d28\u0d35\u0d02\u0d2c\u0d7c",
+      "\u0d21\u0d3f\u0d38\u0d02\u0d2c\u0d7c"
+    ],
+    "SHORTDAY": [
+      "\u0d1e\u0d3e\u0d2f\u0d7c",
+      "\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d7e",
+      "\u0d1a\u0d4a\u0d35\u0d4d\u0d35",
+      "\u0d2c\u0d41\u0d27\u0d7b",
+      "\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d02",
+      "\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f",
+      "\u0d36\u0d28\u0d3f"
+    ],
+    "SHORTMONTH": [
+      "\u0d1c\u0d28\u0d41",
+      "\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41",
+      "\u0d2e\u0d3e\u0d7c",
+      "\u0d0f\u0d2a\u0d4d\u0d30\u0d3f",
+      "\u0d2e\u0d47\u0d2f\u0d4d",
+      "\u0d1c\u0d42\u0d7a",
+      "\u0d1c\u0d42\u0d32\u0d48",
+      "\u0d13\u0d17",
+      "\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02",
+      "\u0d12\u0d15\u0d4d\u0d1f\u0d4b",
+      "\u0d28\u0d35\u0d02",
+      "\u0d21\u0d3f\u0d38\u0d02"
+    ],
+    "STANDALONEMONTH": [
+      "\u0d1c\u0d28\u0d41\u0d35\u0d30\u0d3f",
+      "\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41\u0d35\u0d30\u0d3f",
+      "\u0d2e\u0d3e\u0d7c\u0d1a\u0d4d\u0d1a\u0d4d",
+      "\u0d0f\u0d2a\u0d4d\u0d30\u0d3f\u0d7d",
+      "\u0d2e\u0d47\u0d2f\u0d4d",
+      "\u0d1c\u0d42\u0d7a",
+      "\u0d1c\u0d42\u0d32\u0d48",
+      "\u0d06\u0d17\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d",
+      "\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02\u0d2c\u0d7c",
+      "\u0d12\u0d15\u0d4d\u200c\u0d1f\u0d4b\u0d2c\u0d7c",
+      "\u0d28\u0d35\u0d02\u0d2c\u0d7c",
+      "\u0d21\u0d3f\u0d38\u0d02\u0d2c\u0d7c"
+    ],
+    "WEEKENDRANGE": [
+      6,
+      6
+    ],
+    "fullDate": "y, MMMM d, EEEE",
+    "longDate": "y, MMMM d",
+    "medium": "y, MMM d h:mm:ss a",
+    "mediumDate": "y, MMM d",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/yy h:mm a",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20b9",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ml-in",
+  "localeID": "ml_IN",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ml.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ml.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ml.js
new file mode 100644
index 0000000..1e2bcc8
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ml.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "\u0d1e\u0d3e\u0d2f\u0d31\u0d3e\u0d34\u0d4d\u200c\u0d1a",
+      "\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d33\u0d3e\u0d34\u0d4d\u200c\u0d1a",
+      "\u0d1a\u0d4a\u0d35\u0d4d\u0d35\u0d3e\u0d34\u0d4d\u0d1a",
+      "\u0d2c\u0d41\u0d27\u0d28\u0d3e\u0d34\u0d4d\u200c\u0d1a",
+      "\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d3e\u0d34\u0d4d\u200c\u0d1a",
+      "\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u200c\u0d1a",
+      "\u0d36\u0d28\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u200c\u0d1a"
+    ],
+    "ERANAMES": [
+      "\u0d15\u0d4d\u0d30\u0d3f\u0d38\u0d4d\u200c\u0d24\u0d41\u0d35\u0d3f\u0d28\u0d4d \u0d2e\u0d41\u0d2e\u0d4d\u0d2a\u0d4d",
+      "\u0d06\u0d28\u0d4d\u0d28\u0d4b \u0d21\u0d4a\u0d2e\u0d3f\u0d28\u0d3f"
+    ],
+    "ERAS": [
+      "\u0d15\u0d4d\u0d30\u0d3f.\u0d2e\u0d41.",
+      "\u0d0e\u0d21\u0d3f"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u0d1c\u0d28\u0d41\u0d35\u0d30\u0d3f",
+      "\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41\u0d35\u0d30\u0d3f",
+      "\u0d2e\u0d3e\u0d7c\u0d1a\u0d4d\u0d1a\u0d4d",
+      "\u0d0f\u0d2a\u0d4d\u0d30\u0d3f\u0d7d",
+      "\u0d2e\u0d47\u0d2f\u0d4d",
+      "\u0d1c\u0d42\u0d7a",
+      "\u0d1c\u0d42\u0d32\u0d48",
+      "\u0d06\u0d17\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d",
+      "\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02\u0d2c\u0d7c",
+      "\u0d12\u0d15\u0d4d\u200c\u0d1f\u0d4b\u0d2c\u0d7c",
+      "\u0d28\u0d35\u0d02\u0d2c\u0d7c",
+      "\u0d21\u0d3f\u0d38\u0d02\u0d2c\u0d7c"
+    ],
+    "SHORTDAY": [
+      "\u0d1e\u0d3e\u0d2f\u0d7c",
+      "\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d7e",
+      "\u0d1a\u0d4a\u0d35\u0d4d\u0d35",
+      "\u0d2c\u0d41\u0d27\u0d7b",
+      "\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d02",
+      "\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f",
+      "\u0d36\u0d28\u0d3f"
+    ],
+    "SHORTMONTH": [
+      "\u0d1c\u0d28\u0d41",
+      "\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41",
+      "\u0d2e\u0d3e\u0d7c",
+      "\u0d0f\u0d2a\u0d4d\u0d30\u0d3f",
+      "\u0d2e\u0d47\u0d2f\u0d4d",
+      "\u0d1c\u0d42\u0d7a",
+      "\u0d1c\u0d42\u0d32\u0d48",
+      "\u0d13\u0d17",
+      "\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02",
+      "\u0d12\u0d15\u0d4d\u0d1f\u0d4b",
+      "\u0d28\u0d35\u0d02",
+      "\u0d21\u0d3f\u0d38\u0d02"
+    ],
+    "STANDALONEMONTH": [
+      "\u0d1c\u0d28\u0d41\u0d35\u0d30\u0d3f",
+      "\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41\u0d35\u0d30\u0d3f",
+      "\u0d2e\u0d3e\u0d7c\u0d1a\u0d4d\u0d1a\u0d4d",
+      "\u0d0f\u0d2a\u0d4d\u0d30\u0d3f\u0d7d",
+      "\u0d2e\u0d47\u0d2f\u0d4d",
+      "\u0d1c\u0d42\u0d7a",
+      "\u0d1c\u0d42\u0d32\u0d48",
+      "\u0d06\u0d17\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d",
+      "\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02\u0d2c\u0d7c",
+      "\u0d12\u0d15\u0d4d\u200c\u0d1f\u0d4b\u0d2c\u0d7c",
+      "\u0d28\u0d35\u0d02\u0d2c\u0d7c",
+      "\u0d21\u0d3f\u0d38\u0d02\u0d2c\u0d7c"
+    ],
+    "WEEKENDRANGE": [
+      6,
+      6
+    ],
+    "fullDate": "y, MMMM d, EEEE",
+    "longDate": "y, MMMM d",
+    "medium": "y, MMM d h:mm:ss a",
+    "mediumDate": "y, MMM d",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/yy h:mm a",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20b9",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ml",
+  "localeID": "ml",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mn-cyrl-mn.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mn-cyrl-mn.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mn-cyrl-mn.js
new file mode 100644
index 0000000..8863207
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mn-cyrl-mn.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u04ae\u04e8",
+      "\u04ae\u0425"
+    ],
+    "DAY": [
+      "\u043d\u044f\u043c",
+      "\u0434\u0430\u0432\u0430\u0430",
+      "\u043c\u044f\u0433\u043c\u0430\u0440",
+      "\u043b\u0445\u0430\u0433\u0432\u0430",
+      "\u043f\u04af\u0440\u044d\u0432",
+      "\u0431\u0430\u0430\u0441\u0430\u043d",
+      "\u0431\u044f\u043c\u0431\u0430"
+    ],
+    "ERANAMES": [
+      "\u043c\u0430\u043d\u0430\u0439 \u044d\u0440\u0438\u043d\u0438\u0439 \u04e9\u043c\u043d\u04e9\u0445",
+      "\u043c\u0430\u043d\u0430\u0439 \u044d\u0440\u0438\u043d\u0438\u0439"
+    ],
+    "ERAS": [
+      "\u041c\u042d\u04e8",
+      "\u041c\u042d"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u041d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440",
+      "\u0425\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0413\u0443\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0414\u04e9\u0440\u04e9\u0432\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440",
+      "\u0422\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0417\u0443\u0440\u0433\u0430\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0414\u043e\u043b\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u041d\u0430\u0439\u043c\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0415\u0441\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440",
+      "\u0410\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0410\u0440\u0432\u0430\u043d \u043d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440",
+      "\u0410\u0440\u0432\u0430\u043d \u0445\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440"
+    ],
+    "SHORTDAY": [
+      "\u041d\u044f",
+      "\u0414\u0430",
+      "\u041c\u044f",
+      "\u041b\u0445",
+      "\u041f\u04af",
+      "\u0411\u0430",
+      "\u0411\u044f"
+    ],
+    "SHORTMONTH": [
+      "1-\u0440 \u0441\u0430\u0440",
+      "2-\u0440 \u0441\u0430\u0440",
+      "3-\u0440 \u0441\u0430\u0440",
+      "4-\u0440 \u0441\u0430\u0440",
+      "5-\u0440 \u0441\u0430\u0440",
+      "6-\u0440 \u0441\u0430\u0440",
+      "7-\u0440 \u0441\u0430\u0440",
+      "8-\u0440 \u0441\u0430\u0440",
+      "9-\u0440 \u0441\u0430\u0440",
+      "10-\u0440 \u0441\u0430\u0440",
+      "11-\u0440 \u0441\u0430\u0440",
+      "12-\u0440 \u0441\u0430\u0440"
+    ],
+    "STANDALONEMONTH": [
+      "\u041d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440",
+      "\u0425\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0413\u0443\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0414\u04e9\u0440\u04e9\u0432\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440",
+      "\u0422\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0417\u0443\u0440\u0433\u0430\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0414\u043e\u043b\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u041d\u0430\u0439\u043c\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0415\u0441\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440",
+      "\u0410\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0410\u0440\u0432\u0430\u043d \u043d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440",
+      "\u0410\u0440\u0432\u0430\u043d \u0445\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, y '\u043e\u043d\u044b' MM '\u0441\u0430\u0440\u044b\u043d' d",
+    "longDate": "y '\u043e\u043d\u044b' MM '\u0441\u0430\u0440\u044b\u043d' d",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "y-MM-dd HH:mm",
+    "shortDate": "y-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ae",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "mn-cyrl-mn",
+  "localeID": "mn_Cyrl_MN",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mn-cyrl.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mn-cyrl.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mn-cyrl.js
new file mode 100644
index 0000000..6b29e4e
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mn-cyrl.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u04ae\u04e8",
+      "\u04ae\u0425"
+    ],
+    "DAY": [
+      "\u043d\u044f\u043c",
+      "\u0434\u0430\u0432\u0430\u0430",
+      "\u043c\u044f\u0433\u043c\u0430\u0440",
+      "\u043b\u0445\u0430\u0433\u0432\u0430",
+      "\u043f\u04af\u0440\u044d\u0432",
+      "\u0431\u0430\u0430\u0441\u0430\u043d",
+      "\u0431\u044f\u043c\u0431\u0430"
+    ],
+    "ERANAMES": [
+      "\u043c\u0430\u043d\u0430\u0439 \u044d\u0440\u0438\u043d\u0438\u0439 \u04e9\u043c\u043d\u04e9\u0445",
+      "\u043c\u0430\u043d\u0430\u0439 \u044d\u0440\u0438\u043d\u0438\u0439"
+    ],
+    "ERAS": [
+      "\u041c\u042d\u04e8",
+      "\u041c\u042d"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u041d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440",
+      "\u0425\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0413\u0443\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0414\u04e9\u0440\u04e9\u0432\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440",
+      "\u0422\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0417\u0443\u0440\u0433\u0430\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0414\u043e\u043b\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u041d\u0430\u0439\u043c\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0415\u0441\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440",
+      "\u0410\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0410\u0440\u0432\u0430\u043d \u043d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440",
+      "\u0410\u0440\u0432\u0430\u043d \u0445\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440"
+    ],
+    "SHORTDAY": [
+      "\u041d\u044f",
+      "\u0414\u0430",
+      "\u041c\u044f",
+      "\u041b\u0445",
+      "\u041f\u04af",
+      "\u0411\u0430",
+      "\u0411\u044f"
+    ],
+    "SHORTMONTH": [
+      "1-\u0440 \u0441\u0430\u0440",
+      "2-\u0440 \u0441\u0430\u0440",
+      "3-\u0440 \u0441\u0430\u0440",
+      "4-\u0440 \u0441\u0430\u0440",
+      "5-\u0440 \u0441\u0430\u0440",
+      "6-\u0440 \u0441\u0430\u0440",
+      "7-\u0440 \u0441\u0430\u0440",
+      "8-\u0440 \u0441\u0430\u0440",
+      "9-\u0440 \u0441\u0430\u0440",
+      "10-\u0440 \u0441\u0430\u0440",
+      "11-\u0440 \u0441\u0430\u0440",
+      "12-\u0440 \u0441\u0430\u0440"
+    ],
+    "STANDALONEMONTH": [
+      "\u041d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440",
+      "\u0425\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0413\u0443\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0414\u04e9\u0440\u04e9\u0432\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440",
+      "\u0422\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0417\u0443\u0440\u0433\u0430\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0414\u043e\u043b\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u041d\u0430\u0439\u043c\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0415\u0441\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440",
+      "\u0410\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0410\u0440\u0432\u0430\u043d \u043d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440",
+      "\u0410\u0440\u0432\u0430\u043d \u0445\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, y '\u043e\u043d\u044b' MM '\u0441\u0430\u0440\u044b\u043d' d",
+    "longDate": "y '\u043e\u043d\u044b' MM '\u0441\u0430\u0440\u044b\u043d' d",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "y-MM-dd HH:mm",
+    "shortDate": "y-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ae",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "mn-cyrl",
+  "localeID": "mn_Cyrl",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mn.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mn.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mn.js
new file mode 100644
index 0000000..05f44fc
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mn.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u04ae\u04e8",
+      "\u04ae\u0425"
+    ],
+    "DAY": [
+      "\u043d\u044f\u043c",
+      "\u0434\u0430\u0432\u0430\u0430",
+      "\u043c\u044f\u0433\u043c\u0430\u0440",
+      "\u043b\u0445\u0430\u0433\u0432\u0430",
+      "\u043f\u04af\u0440\u044d\u0432",
+      "\u0431\u0430\u0430\u0441\u0430\u043d",
+      "\u0431\u044f\u043c\u0431\u0430"
+    ],
+    "ERANAMES": [
+      "\u043c\u0430\u043d\u0430\u0439 \u044d\u0440\u0438\u043d\u0438\u0439 \u04e9\u043c\u043d\u04e9\u0445",
+      "\u043c\u0430\u043d\u0430\u0439 \u044d\u0440\u0438\u043d\u0438\u0439"
+    ],
+    "ERAS": [
+      "\u041c\u042d\u04e8",
+      "\u041c\u042d"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u041d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440",
+      "\u0425\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0413\u0443\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0414\u04e9\u0440\u04e9\u0432\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440",
+      "\u0422\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0417\u0443\u0440\u0433\u0430\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0414\u043e\u043b\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u041d\u0430\u0439\u043c\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0415\u0441\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440",
+      "\u0410\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0410\u0440\u0432\u0430\u043d \u043d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440",
+      "\u0410\u0440\u0432\u0430\u043d \u0445\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440"
+    ],
+    "SHORTDAY": [
+      "\u041d\u044f",
+      "\u0414\u0430",
+      "\u041c\u044f",
+      "\u041b\u0445",
+      "\u041f\u04af",
+      "\u0411\u0430",
+      "\u0411\u044f"
+    ],
+    "SHORTMONTH": [
+      "1-\u0440 \u0441\u0430\u0440",
+      "2-\u0440 \u0441\u0430\u0440",
+      "3-\u0440 \u0441\u0430\u0440",
+      "4-\u0440 \u0441\u0430\u0440",
+      "5-\u0440 \u0441\u0430\u0440",
+      "6-\u0440 \u0441\u0430\u0440",
+      "7-\u0440 \u0441\u0430\u0440",
+      "8-\u0440 \u0441\u0430\u0440",
+      "9-\u0440 \u0441\u0430\u0440",
+      "10-\u0440 \u0441\u0430\u0440",
+      "11-\u0440 \u0441\u0430\u0440",
+      "12-\u0440 \u0441\u0430\u0440"
+    ],
+    "STANDALONEMONTH": [
+      "\u041d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440",
+      "\u0425\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0413\u0443\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0414\u04e9\u0440\u04e9\u0432\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440",
+      "\u0422\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0417\u0443\u0440\u0433\u0430\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0414\u043e\u043b\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u041d\u0430\u0439\u043c\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0415\u0441\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440",
+      "\u0410\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440",
+      "\u0410\u0440\u0432\u0430\u043d \u043d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440",
+      "\u0410\u0440\u0432\u0430\u043d \u0445\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, y '\u043e\u043d\u044b' MM '\u0441\u0430\u0440\u044b\u043d' d",
+    "longDate": "y '\u043e\u043d\u044b' MM '\u0441\u0430\u0440\u044b\u043d' d",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "y-MM-dd HH:mm",
+    "shortDate": "y-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ae",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "mn",
+  "localeID": "mn",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mr-in.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mr-in.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mr-in.js
new file mode 100644
index 0000000..d184dd6
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mr-in.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u092e.\u092a\u0942.",
+      "\u092e.\u0909."
+    ],
+    "DAY": [
+      "\u0930\u0935\u093f\u0935\u093e\u0930",
+      "\u0938\u094b\u092e\u0935\u093e\u0930",
+      "\u092e\u0902\u0917\u0933\u0935\u093e\u0930",
+      "\u092c\u0941\u0927\u0935\u093e\u0930",
+      "\u0917\u0941\u0930\u0941\u0935\u093e\u0930",
+      "\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930",
+      "\u0936\u0928\u093f\u0935\u093e\u0930"
+    ],
+    "ERANAMES": [
+      "\u0908\u0938\u0935\u0940\u0938\u0928\u092a\u0942\u0930\u094d\u0935",
+      "\u0908\u0938\u0935\u0940\u0938\u0928"
+    ],
+    "ERAS": [
+      "\u0907. \u0938. \u092a\u0942.",
+      "\u0907. \u0938."
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940",
+      "\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940",
+      "\u092e\u093e\u0930\u094d\u091a",
+      "\u090f\u092a\u094d\u0930\u093f\u0932",
+      "\u092e\u0947",
+      "\u091c\u0942\u0928",
+      "\u091c\u0941\u0932\u0948",
+      "\u0911\u0917\u0938\u094d\u091f",
+      "\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930",
+      "\u0911\u0915\u094d\u091f\u094b\u092c\u0930",
+      "\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930",
+      "\u0921\u093f\u0938\u0947\u0902\u092c\u0930"
+    ],
+    "SHORTDAY": [
+      "\u0930\u0935\u093f",
+      "\u0938\u094b\u092e",
+      "\u092e\u0902\u0917\u0933",
+      "\u092c\u0941\u0927",
+      "\u0917\u0941\u0930\u0941",
+      "\u0936\u0941\u0915\u094d\u0930",
+      "\u0936\u0928\u093f"
+    ],
+    "SHORTMONTH": [
+      "\u091c\u093e\u0928\u0947",
+      "\u092b\u0947\u092c\u094d\u0930\u0941",
+      "\u092e\u093e\u0930\u094d\u091a",
+      "\u090f\u092a\u094d\u0930\u093f",
+      "\u092e\u0947",
+      "\u091c\u0942\u0928",
+      "\u091c\u0941\u0932\u0948",
+      "\u0911\u0917",
+      "\u0938\u092a\u094d\u091f\u0947\u0902",
+      "\u0911\u0915\u094d\u091f\u094b",
+      "\u0928\u094b\u0935\u094d\u0939\u0947\u0902",
+      "\u0921\u093f\u0938\u0947\u0902"
+    ],
+    "STANDALONEMONTH": [
+      "\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940",
+      "\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940",
+      "\u092e\u093e\u0930\u094d\u091a",
+      "\u090f\u092a\u094d\u0930\u093f\u0932",
+      "\u092e\u0947",
+      "\u091c\u0942\u0928",
+      "\u091c\u0941\u0932\u0948",
+      "\u0911\u0917\u0938\u094d\u091f",
+      "\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930",
+      "\u0911\u0915\u094d\u091f\u094b\u092c\u0930",
+      "\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930",
+      "\u0921\u093f\u0938\u0947\u0902\u092c\u0930"
+    ],
+    "WEEKENDRANGE": [
+      6,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM, y",
+    "longDate": "d MMMM, y",
+    "medium": "d MMM, y h:mm:ss a",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/M/yy h:mm a",
+    "shortDate": "d/M/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20b9",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "mr-in",
+  "localeID": "mr_IN",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mr.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mr.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mr.js
new file mode 100644
index 0000000..868b0d0
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mr.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u092e.\u092a\u0942.",
+      "\u092e.\u0909."
+    ],
+    "DAY": [
+      "\u0930\u0935\u093f\u0935\u093e\u0930",
+      "\u0938\u094b\u092e\u0935\u093e\u0930",
+      "\u092e\u0902\u0917\u0933\u0935\u093e\u0930",
+      "\u092c\u0941\u0927\u0935\u093e\u0930",
+      "\u0917\u0941\u0930\u0941\u0935\u093e\u0930",
+      "\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930",
+      "\u0936\u0928\u093f\u0935\u093e\u0930"
+    ],
+    "ERANAMES": [
+      "\u0908\u0938\u0935\u0940\u0938\u0928\u092a\u0942\u0930\u094d\u0935",
+      "\u0908\u0938\u0935\u0940\u0938\u0928"
+    ],
+    "ERAS": [
+      "\u0907. \u0938. \u092a\u0942.",
+      "\u0907. \u0938."
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940",
+      "\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940",
+      "\u092e\u093e\u0930\u094d\u091a",
+      "\u090f\u092a\u094d\u0930\u093f\u0932",
+      "\u092e\u0947",
+      "\u091c\u0942\u0928",
+      "\u091c\u0941\u0932\u0948",
+      "\u0911\u0917\u0938\u094d\u091f",
+      "\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930",
+      "\u0911\u0915\u094d\u091f\u094b\u092c\u0930",
+      "\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930",
+      "\u0921\u093f\u0938\u0947\u0902\u092c\u0930"
+    ],
+    "SHORTDAY": [
+      "\u0930\u0935\u093f",
+      "\u0938\u094b\u092e",
+      "\u092e\u0902\u0917\u0933",
+      "\u092c\u0941\u0927",
+      "\u0917\u0941\u0930\u0941",
+      "\u0936\u0941\u0915\u094d\u0930",
+      "\u0936\u0928\u093f"
+    ],
+    "SHORTMONTH": [
+      "\u091c\u093e\u0928\u0947",
+      "\u092b\u0947\u092c\u094d\u0930\u0941",
+      "\u092e\u093e\u0930\u094d\u091a",
+      "\u090f\u092a\u094d\u0930\u093f",
+      "\u092e\u0947",
+      "\u091c\u0942\u0928",
+      "\u091c\u0941\u0932\u0948",
+      "\u0911\u0917",
+      "\u0938\u092a\u094d\u091f\u0947\u0902",
+      "\u0911\u0915\u094d\u091f\u094b",
+      "\u0928\u094b\u0935\u094d\u0939\u0947\u0902",
+      "\u0921\u093f\u0938\u0947\u0902"
+    ],
+    "STANDALONEMONTH": [
+      "\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940",
+      "\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940",
+      "\u092e\u093e\u0930\u094d\u091a",
+      "\u090f\u092a\u094d\u0930\u093f\u0932",
+      "\u092e\u0947",
+      "\u091c\u0942\u0928",
+      "\u091c\u0941\u0932\u0948",
+      "\u0911\u0917\u0938\u094d\u091f",
+      "\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930",
+      "\u0911\u0915\u094d\u091f\u094b\u092c\u0930",
+      "\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930",
+      "\u0921\u093f\u0938\u0947\u0902\u092c\u0930"
+    ],
+    "WEEKENDRANGE": [
+      6,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM, y",
+    "longDate": "d MMMM, y",
+    "medium": "d MMM, y h:mm:ss a",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/M/yy h:mm a",
+    "shortDate": "d/M/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20b9",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "mr",
+  "localeID": "mr",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ms-latn-bn.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ms-latn-bn.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ms-latn-bn.js
new file mode 100644
index 0000000..05e662d
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ms-latn-bn.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "PG",
+      "PTG"
+    ],
+    "DAY": [
+      "Ahad",
+      "Isnin",
+      "Selasa",
+      "Rabu",
+      "Khamis",
+      "Jumaat",
+      "Sabtu"
+    ],
+    "ERANAMES": [
+      "S.M.",
+      "TM"
+    ],
+    "ERAS": [
+      "S.M.",
+      "TM"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Januari",
+      "Februari",
+      "Mac",
+      "April",
+      "Mei",
+      "Jun",
+      "Julai",
+      "Ogos",
+      "September",
+      "Oktober",
+      "November",
+      "Disember"
+    ],
+    "SHORTDAY": [
+      "Ahd",
+      "Isn",
+      "Sel",
+      "Rab",
+      "Kha",
+      "Jum",
+      "Sab"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mac",
+      "Apr",
+      "Mei",
+      "Jun",
+      "Jul",
+      "Ogo",
+      "Sep",
+      "Okt",
+      "Nov",
+      "Dis"
+    ],
+    "STANDALONEMONTH": [
+      "Januari",
+      "Februari",
+      "Mac",
+      "April",
+      "Mei",
+      "Jun",
+      "Julai",
+      "Ogos",
+      "September",
+      "Oktober",
+      "November",
+      "Disember"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "dd MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/MM/yy h:mm a",
+    "shortDate": "d/MM/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ms-latn-bn",
+  "localeID": "ms_Latn_BN",
+  "pluralCat": function(n, opt_precision) {  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ms-latn-my.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ms-latn-my.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ms-latn-my.js
new file mode 100644
index 0000000..b55fbda
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ms-latn-my.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "PG",
+      "PTG"
+    ],
+    "DAY": [
+      "Ahad",
+      "Isnin",
+      "Selasa",
+      "Rabu",
+      "Khamis",
+      "Jumaat",
+      "Sabtu"
+    ],
+    "ERANAMES": [
+      "S.M.",
+      "TM"
+    ],
+    "ERAS": [
+      "S.M.",
+      "TM"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Januari",
+      "Februari",
+      "Mac",
+      "April",
+      "Mei",
+      "Jun",
+      "Julai",
+      "Ogos",
+      "September",
+      "Oktober",
+      "November",
+      "Disember"
+    ],
+    "SHORTDAY": [
+      "Ahd",
+      "Isn",
+      "Sel",
+      "Rab",
+      "Kha",
+      "Jum",
+      "Sab"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mac",
+      "Apr",
+      "Mei",
+      "Jun",
+      "Jul",
+      "Ogo",
+      "Sep",
+      "Okt",
+      "Nov",
+      "Dis"
+    ],
+    "STANDALONEMONTH": [
+      "Januari",
+      "Februari",
+      "Mac",
+      "April",
+      "Mei",
+      "Jun",
+      "Julai",
+      "Ogos",
+      "September",
+      "Oktober",
+      "November",
+      "Disember"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/MM/yy h:mm a",
+    "shortDate": "d/MM/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "RM",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ms-latn-my",
+  "localeID": "ms_Latn_MY",
+  "pluralCat": function(n, opt_precision) {  return PLURAL_CATEGORY.OTHER;}
+});
+}]);



[36/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-mocks.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-mocks.js b/rocketmq-console/src/main/resources/static/vendor/angular/angular-mocks.js
new file mode 100644
index 0000000..87abb64
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-mocks.js
@@ -0,0 +1,3112 @@
+/**
+ * @license AngularJS v1.5.6
+ * (c) 2010-2016 Google, Inc. http://angularjs.org
+ * License: MIT
+ */
+(function(window, angular) {
+
+'use strict';
+
+/**
+ * @ngdoc object
+ * @name angular.mock
+ * @description
+ *
+ * Namespace from 'angular-mocks.js' which contains testing related code.
+ *
+ */
+angular.mock = {};
+
+/**
+ * ! This is a private undocumented service !
+ *
+ * @name $browser
+ *
+ * @description
+ * This service is a mock implementation of {@link ng.$browser}. It provides fake
+ * implementation for commonly used browser apis that are hard to test, e.g. setTimeout, xhr,
+ * cookies, etc.
+ *
+ * The api of this service is the same as that of the real {@link ng.$browser $browser}, except
+ * that there are several helper methods available which can be used in tests.
+ */
+angular.mock.$BrowserProvider = function() {
+  this.$get = function() {
+    return new angular.mock.$Browser();
+  };
+};
+
+angular.mock.$Browser = function() {
+  var self = this;
+
+  this.isMock = true;
+  self.$$url = "http://server/";
+  self.$$lastUrl = self.$$url; // used by url polling fn
+  self.pollFns = [];
+
+  // TODO(vojta): remove this temporary api
+  self.$$completeOutstandingRequest = angular.noop;
+  self.$$incOutstandingRequestCount = angular.noop;
+
+
+  // register url polling fn
+
+  self.onUrlChange = function(listener) {
+    self.pollFns.push(
+      function() {
+        if (self.$$lastUrl !== self.$$url || self.$$state !== self.$$lastState) {
+          self.$$lastUrl = self.$$url;
+          self.$$lastState = self.$$state;
+          listener(self.$$url, self.$$state);
+        }
+      }
+    );
+
+    return listener;
+  };
+
+  self.$$applicationDestroyed = angular.noop;
+  self.$$checkUrlChange = angular.noop;
+
+  self.deferredFns = [];
+  self.deferredNextId = 0;
+
+  self.defer = function(fn, delay) {
+    delay = delay || 0;
+    self.deferredFns.push({time:(self.defer.now + delay), fn:fn, id: self.deferredNextId});
+    self.deferredFns.sort(function(a, b) { return a.time - b.time;});
+    return self.deferredNextId++;
+  };
+
+
+  /**
+   * @name $browser#defer.now
+   *
+   * @description
+   * Current milliseconds mock time.
+   */
+  self.defer.now = 0;
+
+
+  self.defer.cancel = function(deferId) {
+    var fnIndex;
+
+    angular.forEach(self.deferredFns, function(fn, index) {
+      if (fn.id === deferId) fnIndex = index;
+    });
+
+    if (angular.isDefined(fnIndex)) {
+      self.deferredFns.splice(fnIndex, 1);
+      return true;
+    }
+
+    return false;
+  };
+
+
+  /**
+   * @name $browser#defer.flush
+   *
+   * @description
+   * Flushes all pending requests and executes the defer callbacks.
+   *
+   * @param {number=} number of milliseconds to flush. See {@link #defer.now}
+   */
+  self.defer.flush = function(delay) {
+    if (angular.isDefined(delay)) {
+      self.defer.now += delay;
+    } else {
+      if (self.deferredFns.length) {
+        self.defer.now = self.deferredFns[self.deferredFns.length - 1].time;
+      } else {
+        throw new Error('No deferred tasks to be flushed');
+      }
+    }
+
+    while (self.deferredFns.length && self.deferredFns[0].time <= self.defer.now) {
+      self.deferredFns.shift().fn();
+    }
+  };
+
+  self.$$baseHref = '/';
+  self.baseHref = function() {
+    return this.$$baseHref;
+  };
+};
+angular.mock.$Browser.prototype = {
+
+  /**
+   * @name $browser#poll
+   *
+   * @description
+   * run all fns in pollFns
+   */
+  poll: function poll() {
+    angular.forEach(this.pollFns, function(pollFn) {
+      pollFn();
+    });
+  },
+
+  url: function(url, replace, state) {
+    if (angular.isUndefined(state)) {
+      state = null;
+    }
+    if (url) {
+      this.$$url = url;
+      // Native pushState serializes & copies the object; simulate it.
+      this.$$state = angular.copy(state);
+      return this;
+    }
+
+    return this.$$url;
+  },
+
+  state: function() {
+    return this.$$state;
+  },
+
+  notifyWhenNoOutstandingRequests: function(fn) {
+    fn();
+  }
+};
+
+
+/**
+ * @ngdoc provider
+ * @name $exceptionHandlerProvider
+ *
+ * @description
+ * Configures the mock implementation of {@link ng.$exceptionHandler} to rethrow or to log errors
+ * passed to the `$exceptionHandler`.
+ */
+
+/**
+ * @ngdoc service
+ * @name $exceptionHandler
+ *
+ * @description
+ * Mock implementation of {@link ng.$exceptionHandler} that rethrows or logs errors passed
+ * to it. See {@link ngMock.$exceptionHandlerProvider $exceptionHandlerProvider} for configuration
+ * information.
+ *
+ *
+ * ```js
+ *   describe('$exceptionHandlerProvider', function() {
+ *
+ *     it('should capture log messages and exceptions', function() {
+ *
+ *       module(function($exceptionHandlerProvider) {
+ *         $exceptionHandlerProvider.mode('log');
+ *       });
+ *
+ *       inject(function($log, $exceptionHandler, $timeout) {
+ *         $timeout(function() { $log.log(1); });
+ *         $timeout(function() { $log.log(2); throw 'banana peel'; });
+ *         $timeout(function() { $log.log(3); });
+ *         expect($exceptionHandler.errors).toEqual([]);
+ *         expect($log.assertEmpty());
+ *         $timeout.flush();
+ *         expect($exceptionHandler.errors).toEqual(['banana peel']);
+ *         expect($log.log.logs).toEqual([[1], [2], [3]]);
+ *       });
+ *     });
+ *   });
+ * ```
+ */
+
+angular.mock.$ExceptionHandlerProvider = function() {
+  var handler;
+
+  /**
+   * @ngdoc method
+   * @name $exceptionHandlerProvider#mode
+   *
+   * @description
+   * Sets the logging mode.
+   *
+   * @param {string} mode Mode of operation, defaults to `rethrow`.
+   *
+   *   - `log`: Sometimes it is desirable to test that an error is thrown, for this case the `log`
+   *     mode stores an array of errors in `$exceptionHandler.errors`, to allow later assertion of
+   *     them. See {@link ngMock.$log#assertEmpty assertEmpty()} and
+   *     {@link ngMock.$log#reset reset()}.
+   *   - `rethrow`: If any errors are passed to the handler in tests, it typically means that there
+   *     is a bug in the application or test, so this mock will make these tests fail. For any
+   *     implementations that expect exceptions to be thrown, the `rethrow` mode will also maintain
+   *     a log of thrown errors in `$exceptionHandler.errors`.
+   */
+  this.mode = function(mode) {
+
+    switch (mode) {
+      case 'log':
+      case 'rethrow':
+        var errors = [];
+        handler = function(e) {
+          if (arguments.length == 1) {
+            errors.push(e);
+          } else {
+            errors.push([].slice.call(arguments, 0));
+          }
+          if (mode === "rethrow") {
+            throw e;
+          }
+        };
+        handler.errors = errors;
+        break;
+      default:
+        throw new Error("Unknown mode '" + mode + "', only 'log'/'rethrow' modes are allowed!");
+    }
+  };
+
+  this.$get = function() {
+    return handler;
+  };
+
+  this.mode('rethrow');
+};
+
+
+/**
+ * @ngdoc service
+ * @name $log
+ *
+ * @description
+ * Mock implementation of {@link ng.$log} that gathers all logged messages in arrays
+ * (one array per logging level). These arrays are exposed as `logs` property of each of the
+ * level-specific log function, e.g. for level `error` the array is exposed as `$log.error.logs`.
+ *
+ */
+angular.mock.$LogProvider = function() {
+  var debug = true;
+
+  function concat(array1, array2, index) {
+    return array1.concat(Array.prototype.slice.call(array2, index));
+  }
+
+  this.debugEnabled = function(flag) {
+    if (angular.isDefined(flag)) {
+      debug = flag;
+      return this;
+    } else {
+      return debug;
+    }
+  };
+
+  this.$get = function() {
+    var $log = {
+      log: function() { $log.log.logs.push(concat([], arguments, 0)); },
+      warn: function() { $log.warn.logs.push(concat([], arguments, 0)); },
+      info: function() { $log.info.logs.push(concat([], arguments, 0)); },
+      error: function() { $log.error.logs.push(concat([], arguments, 0)); },
+      debug: function() {
+        if (debug) {
+          $log.debug.logs.push(concat([], arguments, 0));
+        }
+      }
+    };
+
+    /**
+     * @ngdoc method
+     * @name $log#reset
+     *
+     * @description
+     * Reset all of the logging arrays to empty.
+     */
+    $log.reset = function() {
+      /**
+       * @ngdoc property
+       * @name $log#log.logs
+       *
+       * @description
+       * Array of messages logged using {@link ng.$log#log `log()`}.
+       *
+       * @example
+       * ```js
+       * $log.log('Some Log');
+       * var first = $log.log.logs.unshift();
+       * ```
+       */
+      $log.log.logs = [];
+      /**
+       * @ngdoc property
+       * @name $log#info.logs
+       *
+       * @description
+       * Array of messages logged using {@link ng.$log#info `info()`}.
+       *
+       * @example
+       * ```js
+       * $log.info('Some Info');
+       * var first = $log.info.logs.unshift();
+       * ```
+       */
+      $log.info.logs = [];
+      /**
+       * @ngdoc property
+       * @name $log#warn.logs
+       *
+       * @description
+       * Array of messages logged using {@link ng.$log#warn `warn()`}.
+       *
+       * @example
+       * ```js
+       * $log.warn('Some Warning');
+       * var first = $log.warn.logs.unshift();
+       * ```
+       */
+      $log.warn.logs = [];
+      /**
+       * @ngdoc property
+       * @name $log#error.logs
+       *
+       * @description
+       * Array of messages logged using {@link ng.$log#error `error()`}.
+       *
+       * @example
+       * ```js
+       * $log.error('Some Error');
+       * var first = $log.error.logs.unshift();
+       * ```
+       */
+      $log.error.logs = [];
+        /**
+       * @ngdoc property
+       * @name $log#debug.logs
+       *
+       * @description
+       * Array of messages logged using {@link ng.$log#debug `debug()`}.
+       *
+       * @example
+       * ```js
+       * $log.debug('Some Error');
+       * var first = $log.debug.logs.unshift();
+       * ```
+       */
+      $log.debug.logs = [];
+    };
+
+    /**
+     * @ngdoc method
+     * @name $log#assertEmpty
+     *
+     * @description
+     * Assert that all of the logging methods have no logged messages. If any messages are present,
+     * an exception is thrown.
+     */
+    $log.assertEmpty = function() {
+      var errors = [];
+      angular.forEach(['error', 'warn', 'info', 'log', 'debug'], function(logLevel) {
+        angular.forEach($log[logLevel].logs, function(log) {
+          angular.forEach(log, function(logItem) {
+            errors.push('MOCK $log (' + logLevel + '): ' + String(logItem) + '\n' +
+                        (logItem.stack || ''));
+          });
+        });
+      });
+      if (errors.length) {
+        errors.unshift("Expected $log to be empty! Either a message was logged unexpectedly, or " +
+          "an expected log message was not checked and removed:");
+        errors.push('');
+        throw new Error(errors.join('\n---------\n'));
+      }
+    };
+
+    $log.reset();
+    return $log;
+  };
+};
+
+
+/**
+ * @ngdoc service
+ * @name $interval
+ *
+ * @description
+ * Mock implementation of the $interval service.
+ *
+ * Use {@link ngMock.$interval#flush `$interval.flush(millis)`} to
+ * move forward by `millis` milliseconds and trigger any functions scheduled to run in that
+ * time.
+ *
+ * @param {function()} fn A function that should be called repeatedly.
+ * @param {number} delay Number of milliseconds between each function call.
+ * @param {number=} [count=0] Number of times to repeat. If not set, or 0, will repeat
+ *   indefinitely.
+ * @param {boolean=} [invokeApply=true] If set to `false` skips model dirty checking, otherwise
+ *   will invoke `fn` within the {@link ng.$rootScope.Scope#$apply $apply} block.
+ * @param {...*=} Pass additional parameters to the executed function.
+ * @returns {promise} A promise which will be notified on each iteration.
+ */
+angular.mock.$IntervalProvider = function() {
+  this.$get = ['$browser', '$rootScope', '$q', '$$q',
+       function($browser,   $rootScope,   $q,   $$q) {
+    var repeatFns = [],
+        nextRepeatId = 0,
+        now = 0;
+
+    var $interval = function(fn, delay, count, invokeApply) {
+      var hasParams = arguments.length > 4,
+          args = hasParams ? Array.prototype.slice.call(arguments, 4) : [],
+          iteration = 0,
+          skipApply = (angular.isDefined(invokeApply) && !invokeApply),
+          deferred = (skipApply ? $$q : $q).defer(),
+          promise = deferred.promise;
+
+      count = (angular.isDefined(count)) ? count : 0;
+      promise.then(null, null, (!hasParams) ? fn : function() {
+        fn.apply(null, args);
+      });
+
+      promise.$$intervalId = nextRepeatId;
+
+      function tick() {
+        deferred.notify(iteration++);
+
+        if (count > 0 && iteration >= count) {
+          var fnIndex;
+          deferred.resolve(iteration);
+
+          angular.forEach(repeatFns, function(fn, index) {
+            if (fn.id === promise.$$intervalId) fnIndex = index;
+          });
+
+          if (angular.isDefined(fnIndex)) {
+            repeatFns.splice(fnIndex, 1);
+          }
+        }
+
+        if (skipApply) {
+          $browser.defer.flush();
+        } else {
+          $rootScope.$apply();
+        }
+      }
+
+      repeatFns.push({
+        nextTime:(now + delay),
+        delay: delay,
+        fn: tick,
+        id: nextRepeatId,
+        deferred: deferred
+      });
+      repeatFns.sort(function(a, b) { return a.nextTime - b.nextTime;});
+
+      nextRepeatId++;
+      return promise;
+    };
+    /**
+     * @ngdoc method
+     * @name $interval#cancel
+     *
+     * @description
+     * Cancels a task associated with the `promise`.
+     *
+     * @param {promise} promise A promise from calling the `$interval` function.
+     * @returns {boolean} Returns `true` if the task was successfully cancelled.
+     */
+    $interval.cancel = function(promise) {
+      if (!promise) return false;
+      var fnIndex;
+
+      angular.forEach(repeatFns, function(fn, index) {
+        if (fn.id === promise.$$intervalId) fnIndex = index;
+      });
+
+      if (angular.isDefined(fnIndex)) {
+        repeatFns[fnIndex].deferred.reject('canceled');
+        repeatFns.splice(fnIndex, 1);
+        return true;
+      }
+
+      return false;
+    };
+
+    /**
+     * @ngdoc method
+     * @name $interval#flush
+     * @description
+     *
+     * Runs interval tasks scheduled to be run in the next `millis` milliseconds.
+     *
+     * @param {number=} millis maximum timeout amount to flush up until.
+     *
+     * @return {number} The amount of time moved forward.
+     */
+    $interval.flush = function(millis) {
+      now += millis;
+      while (repeatFns.length && repeatFns[0].nextTime <= now) {
+        var task = repeatFns[0];
+        task.fn();
+        task.nextTime += task.delay;
+        repeatFns.sort(function(a, b) { return a.nextTime - b.nextTime;});
+      }
+      return millis;
+    };
+
+    return $interval;
+  }];
+};
+
+
+/* jshint -W101 */
+/* The R_ISO8061_STR regex is never going to fit into the 100 char limit!
+ * This directive should go inside the anonymous function but a bug in JSHint means that it would
+ * not be enacted early enough to prevent the warning.
+ */
+var R_ISO8061_STR = /^(-?\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?:\:?(\d\d)(?:\:?(\d\d)(?:\.(\d{3}))?)?)?(Z|([+-])(\d\d):?(\d\d)))?$/;
+
+function jsonStringToDate(string) {
+  var match;
+  if (match = string.match(R_ISO8061_STR)) {
+    var date = new Date(0),
+        tzHour = 0,
+        tzMin  = 0;
+    if (match[9]) {
+      tzHour = toInt(match[9] + match[10]);
+      tzMin = toInt(match[9] + match[11]);
+    }
+    date.setUTCFullYear(toInt(match[1]), toInt(match[2]) - 1, toInt(match[3]));
+    date.setUTCHours(toInt(match[4] || 0) - tzHour,
+                     toInt(match[5] || 0) - tzMin,
+                     toInt(match[6] || 0),
+                     toInt(match[7] || 0));
+    return date;
+  }
+  return string;
+}
+
+function toInt(str) {
+  return parseInt(str, 10);
+}
+
+function padNumberInMock(num, digits, trim) {
+  var neg = '';
+  if (num < 0) {
+    neg =  '-';
+    num = -num;
+  }
+  num = '' + num;
+  while (num.length < digits) num = '0' + num;
+  if (trim) {
+    num = num.substr(num.length - digits);
+  }
+  return neg + num;
+}
+
+
+/**
+ * @ngdoc type
+ * @name angular.mock.TzDate
+ * @description
+ *
+ * *NOTE*: this is not an injectable instance, just a globally available mock class of `Date`.
+ *
+ * Mock of the Date type which has its timezone specified via constructor arg.
+ *
+ * The main purpose is to create Date-like instances with timezone fixed to the specified timezone
+ * offset, so that we can test code that depends on local timezone settings without dependency on
+ * the time zone settings of the machine where the code is running.
+ *
+ * @param {number} offset Offset of the *desired* timezone in hours (fractions will be honored)
+ * @param {(number|string)} timestamp Timestamp representing the desired time in *UTC*
+ *
+ * @example
+ * !!!! WARNING !!!!!
+ * This is not a complete Date object so only methods that were implemented can be called safely.
+ * To make matters worse, TzDate instances inherit stuff from Date via a prototype.
+ *
+ * We do our best to intercept calls to "unimplemented" methods, but since the list of methods is
+ * incomplete we might be missing some non-standard methods. This can result in errors like:
+ * "Date.prototype.foo called on incompatible Object".
+ *
+ * ```js
+ * var newYearInBratislava = new TzDate(-1, '2009-12-31T23:00:00Z');
+ * newYearInBratislava.getTimezoneOffset() => -60;
+ * newYearInBratislava.getFullYear() => 2010;
+ * newYearInBratislava.getMonth() => 0;
+ * newYearInBratislava.getDate() => 1;
+ * newYearInBratislava.getHours() => 0;
+ * newYearInBratislava.getMinutes() => 0;
+ * newYearInBratislava.getSeconds() => 0;
+ * ```
+ *
+ */
+angular.mock.TzDate = function(offset, timestamp) {
+  var self = new Date(0);
+  if (angular.isString(timestamp)) {
+    var tsStr = timestamp;
+
+    self.origDate = jsonStringToDate(timestamp);
+
+    timestamp = self.origDate.getTime();
+    if (isNaN(timestamp)) {
+      throw {
+        name: "Illegal Argument",
+        message: "Arg '" + tsStr + "' passed into TzDate constructor is not a valid date string"
+      };
+    }
+  } else {
+    self.origDate = new Date(timestamp);
+  }
+
+  var localOffset = new Date(timestamp).getTimezoneOffset();
+  self.offsetDiff = localOffset * 60 * 1000 - offset * 1000 * 60 * 60;
+  self.date = new Date(timestamp + self.offsetDiff);
+
+  self.getTime = function() {
+    return self.date.getTime() - self.offsetDiff;
+  };
+
+  self.toLocaleDateString = function() {
+    return self.date.toLocaleDateString();
+  };
+
+  self.getFullYear = function() {
+    return self.date.getFullYear();
+  };
+
+  self.getMonth = function() {
+    return self.date.getMonth();
+  };
+
+  self.getDate = function() {
+    return self.date.getDate();
+  };
+
+  self.getHours = function() {
+    return self.date.getHours();
+  };
+
+  self.getMinutes = function() {
+    return self.date.getMinutes();
+  };
+
+  self.getSeconds = function() {
+    return self.date.getSeconds();
+  };
+
+  self.getMilliseconds = function() {
+    return self.date.getMilliseconds();
+  };
+
+  self.getTimezoneOffset = function() {
+    return offset * 60;
+  };
+
+  self.getUTCFullYear = function() {
+    return self.origDate.getUTCFullYear();
+  };
+
+  self.getUTCMonth = function() {
+    return self.origDate.getUTCMonth();
+  };
+
+  self.getUTCDate = function() {
+    return self.origDate.getUTCDate();
+  };
+
+  self.getUTCHours = function() {
+    return self.origDate.getUTCHours();
+  };
+
+  self.getUTCMinutes = function() {
+    return self.origDate.getUTCMinutes();
+  };
+
+  self.getUTCSeconds = function() {
+    return self.origDate.getUTCSeconds();
+  };
+
+  self.getUTCMilliseconds = function() {
+    return self.origDate.getUTCMilliseconds();
+  };
+
+  self.getDay = function() {
+    return self.date.getDay();
+  };
+
+  // provide this method only on browsers that already have it
+  if (self.toISOString) {
+    self.toISOString = function() {
+      return padNumberInMock(self.origDate.getUTCFullYear(), 4) + '-' +
+            padNumberInMock(self.origDate.getUTCMonth() + 1, 2) + '-' +
+            padNumberInMock(self.origDate.getUTCDate(), 2) + 'T' +
+            padNumberInMock(self.origDate.getUTCHours(), 2) + ':' +
+            padNumberInMock(self.origDate.getUTCMinutes(), 2) + ':' +
+            padNumberInMock(self.origDate.getUTCSeconds(), 2) + '.' +
+            padNumberInMock(self.origDate.getUTCMilliseconds(), 3) + 'Z';
+    };
+  }
+
+  //hide all methods not implemented in this mock that the Date prototype exposes
+  var unimplementedMethods = ['getUTCDay',
+      'getYear', 'setDate', 'setFullYear', 'setHours', 'setMilliseconds',
+      'setMinutes', 'setMonth', 'setSeconds', 'setTime', 'setUTCDate', 'setUTCFullYear',
+      'setUTCHours', 'setUTCMilliseconds', 'setUTCMinutes', 'setUTCMonth', 'setUTCSeconds',
+      'setYear', 'toDateString', 'toGMTString', 'toJSON', 'toLocaleFormat', 'toLocaleString',
+      'toLocaleTimeString', 'toSource', 'toString', 'toTimeString', 'toUTCString', 'valueOf'];
+
+  angular.forEach(unimplementedMethods, function(methodName) {
+    self[methodName] = function() {
+      throw new Error("Method '" + methodName + "' is not implemented in the TzDate mock");
+    };
+  });
+
+  return self;
+};
+
+//make "tzDateInstance instanceof Date" return true
+angular.mock.TzDate.prototype = Date.prototype;
+/* jshint +W101 */
+
+
+/**
+ * @ngdoc service
+ * @name $animate
+ *
+ * @description
+ * Mock implementation of the {@link ng.$animate `$animate`} service. Exposes two additional methods
+ * for testing animations.
+ *
+ * You need to require the `ngAnimateMock` module in your test suite for instance `beforeEach(module('ngAnimateMock'))`
+ */
+angular.mock.animate = angular.module('ngAnimateMock', ['ng'])
+
+  .config(['$provide', function($provide) {
+
+    $provide.factory('$$forceReflow', function() {
+      function reflowFn() {
+        reflowFn.totalReflows++;
+      }
+      reflowFn.totalReflows = 0;
+      return reflowFn;
+    });
+
+    $provide.factory('$$animateAsyncRun', function() {
+      var queue = [];
+      var queueFn = function() {
+        return function(fn) {
+          queue.push(fn);
+        };
+      };
+      queueFn.flush = function() {
+        if (queue.length === 0) return false;
+
+        for (var i = 0; i < queue.length; i++) {
+          queue[i]();
+        }
+        queue = [];
+
+        return true;
+      };
+      return queueFn;
+    });
+
+    $provide.decorator('$$animateJs', ['$delegate', function($delegate) {
+      var runners = [];
+
+      var animateJsConstructor = function() {
+        var animator = $delegate.apply($delegate, arguments);
+        // If no javascript animation is found, animator is undefined
+        if (animator) {
+          runners.push(animator);
+        }
+        return animator;
+      };
+
+      animateJsConstructor.$closeAndFlush = function() {
+        runners.forEach(function(runner) {
+          runner.end();
+        });
+        runners = [];
+      };
+
+      return animateJsConstructor;
+    }]);
+
+    $provide.decorator('$animateCss', ['$delegate', function($delegate) {
+      var runners = [];
+
+      var animateCssConstructor = function(element, options) {
+        var animator = $delegate(element, options);
+        runners.push(animator);
+        return animator;
+      };
+
+      animateCssConstructor.$closeAndFlush = function() {
+        runners.forEach(function(runner) {
+          runner.end();
+        });
+        runners = [];
+      };
+
+      return animateCssConstructor;
+    }]);
+
+    $provide.decorator('$animate', ['$delegate', '$timeout', '$browser', '$$rAF', '$animateCss', '$$animateJs',
+                                    '$$forceReflow', '$$animateAsyncRun', '$rootScope',
+                            function($delegate,   $timeout,   $browser,   $$rAF,   $animateCss,   $$animateJs,
+                                     $$forceReflow,   $$animateAsyncRun,  $rootScope) {
+      var animate = {
+        queue: [],
+        cancel: $delegate.cancel,
+        on: $delegate.on,
+        off: $delegate.off,
+        pin: $delegate.pin,
+        get reflows() {
+          return $$forceReflow.totalReflows;
+        },
+        enabled: $delegate.enabled,
+        /**
+         * @ngdoc method
+         * @name $animate#closeAndFlush
+         * @description
+         *
+         * This method will close all pending animations (both {@link ngAnimate#javascript-based-animations Javascript}
+         * and {@link ngAnimate.$animateCss CSS}) and it will also flush any remaining animation frames and/or callbacks.
+         */
+        closeAndFlush: function() {
+          // we allow the flush command to swallow the errors
+          // because depending on whether CSS or JS animations are
+          // used, there may not be a RAF flush. The primary flush
+          // at the end of this function must throw an exception
+          // because it will track if there were pending animations
+          this.flush(true);
+          $animateCss.$closeAndFlush();
+          $$animateJs.$closeAndFlush();
+          this.flush();
+        },
+        /**
+         * @ngdoc method
+         * @name $animate#flush
+         * @description
+         *
+         * This method is used to flush the pending callbacks and animation frames to either start
+         * an animation or conclude an animation. Note that this will not actually close an
+         * actively running animation (see {@link ngMock.$animate#closeAndFlush `closeAndFlush()`} for that).
+         */
+        flush: function(hideErrors) {
+          $rootScope.$digest();
+
+          var doNextRun, somethingFlushed = false;
+          do {
+            doNextRun = false;
+
+            if ($$rAF.queue.length) {
+              $$rAF.flush();
+              doNextRun = somethingFlushed = true;
+            }
+
+            if ($$animateAsyncRun.flush()) {
+              doNextRun = somethingFlushed = true;
+            }
+          } while (doNextRun);
+
+          if (!somethingFlushed && !hideErrors) {
+            throw new Error('No pending animations ready to be closed or flushed');
+          }
+
+          $rootScope.$digest();
+        }
+      };
+
+      angular.forEach(
+        ['animate','enter','leave','move','addClass','removeClass','setClass'], function(method) {
+        animate[method] = function() {
+          animate.queue.push({
+            event: method,
+            element: arguments[0],
+            options: arguments[arguments.length - 1],
+            args: arguments
+          });
+          return $delegate[method].apply($delegate, arguments);
+        };
+      });
+
+      return animate;
+    }]);
+
+  }]);
+
+
+/**
+ * @ngdoc function
+ * @name angular.mock.dump
+ * @description
+ *
+ * *NOTE*: this is not an injectable instance, just a globally available function.
+ *
+ * Method for serializing common angular objects (scope, elements, etc..) into strings, useful for
+ * debugging.
+ *
+ * This method is also available on window, where it can be used to display objects on debug
+ * console.
+ *
+ * @param {*} object - any object to turn into string.
+ * @return {string} a serialized string of the argument
+ */
+angular.mock.dump = function(object) {
+  return serialize(object);
+
+  function serialize(object) {
+    var out;
+
+    if (angular.isElement(object)) {
+      object = angular.element(object);
+      out = angular.element('<div></div>');
+      angular.forEach(object, function(element) {
+        out.append(angular.element(element).clone());
+      });
+      out = out.html();
+    } else if (angular.isArray(object)) {
+      out = [];
+      angular.forEach(object, function(o) {
+        out.push(serialize(o));
+      });
+      out = '[ ' + out.join(', ') + ' ]';
+    } else if (angular.isObject(object)) {
+      if (angular.isFunction(object.$eval) && angular.isFunction(object.$apply)) {
+        out = serializeScope(object);
+      } else if (object instanceof Error) {
+        out = object.stack || ('' + object.name + ': ' + object.message);
+      } else {
+        // TODO(i): this prevents methods being logged,
+        // we should have a better way to serialize objects
+        out = angular.toJson(object, true);
+      }
+    } else {
+      out = String(object);
+    }
+
+    return out;
+  }
+
+  function serializeScope(scope, offset) {
+    offset = offset ||  '  ';
+    var log = [offset + 'Scope(' + scope.$id + '): {'];
+    for (var key in scope) {
+      if (Object.prototype.hasOwnProperty.call(scope, key) && !key.match(/^(\$|this)/)) {
+        log.push('  ' + key + ': ' + angular.toJson(scope[key]));
+      }
+    }
+    var child = scope.$$childHead;
+    while (child) {
+      log.push(serializeScope(child, offset + '  '));
+      child = child.$$nextSibling;
+    }
+    log.push('}');
+    return log.join('\n' + offset);
+  }
+};
+
+/**
+ * @ngdoc service
+ * @name $httpBackend
+ * @description
+ * Fake HTTP backend implementation suitable for unit testing applications that use the
+ * {@link ng.$http $http service}.
+ *
+ * <div class="alert alert-info">
+ * **Note**: For fake HTTP backend implementation suitable for end-to-end testing or backend-less
+ * development please see {@link ngMockE2E.$httpBackend e2e $httpBackend mock}.
+ * </div>
+ *
+ * During unit testing, we want our unit tests to run quickly and have no external dependencies so
+ * we don’t want to send [XHR](https://developer.mozilla.org/en/xmlhttprequest) or
+ * [JSONP](http://en.wikipedia.org/wiki/JSONP) requests to a real server. All we really need is
+ * to verify whether a certain request has been sent or not, or alternatively just let the
+ * application make requests, respond with pre-trained responses and assert that the end result is
+ * what we expect it to be.
+ *
+ * This mock implementation can be used to respond with static or dynamic responses via the
+ * `expect` and `when` apis and their shortcuts (`expectGET`, `whenPOST`, etc).
+ *
+ * When an Angular application needs some data from a server, it calls the $http service, which
+ * sends the request to a real server using $httpBackend service. With dependency injection, it is
+ * easy to inject $httpBackend mock (which has the same API as $httpBackend) and use it to verify
+ * the requests and respond with some testing data without sending a request to a real server.
+ *
+ * There are two ways to specify what test data should be returned as http responses by the mock
+ * backend when the code under test makes http requests:
+ *
+ * - `$httpBackend.expect` - specifies a request expectation
+ * - `$httpBackend.when` - specifies a backend definition
+ *
+ *
+ * ## Request Expectations vs Backend Definitions
+ *
+ * Request expectations provide a way to make assertions about requests made by the application and
+ * to define responses for those requests. The test will fail if the expected requests are not made
+ * or they are made in the wrong order.
+ *
+ * Backend definitions allow you to define a fake backend for your application which doesn't assert
+ * if a particular request was made or not, it just returns a trained response if a request is made.
+ * The test will pass whether or not the request gets made during testing.
+ *
+ *
+ * <table class="table">
+ *   <tr><th width="220px"></th><th>Request expectations</th><th>Backend definitions</th></tr>
+ *   <tr>
+ *     <th>Syntax</th>
+ *     <td>.expect(...).respond(...)</td>
+ *     <td>.when(...).respond(...)</td>
+ *   </tr>
+ *   <tr>
+ *     <th>Typical usage</th>
+ *     <td>strict unit tests</td>
+ *     <td>loose (black-box) unit testing</td>
+ *   </tr>
+ *   <tr>
+ *     <th>Fulfills multiple requests</th>
+ *     <td>NO</td>
+ *     <td>YES</td>
+ *   </tr>
+ *   <tr>
+ *     <th>Order of requests matters</th>
+ *     <td>YES</td>
+ *     <td>NO</td>
+ *   </tr>
+ *   <tr>
+ *     <th>Request required</th>
+ *     <td>YES</td>
+ *     <td>NO</td>
+ *   </tr>
+ *   <tr>
+ *     <th>Response required</th>
+ *     <td>optional (see below)</td>
+ *     <td>YES</td>
+ *   </tr>
+ * </table>
+ *
+ * In cases where both backend definitions and request expectations are specified during unit
+ * testing, the request expectations are evaluated first.
+ *
+ * If a request expectation has no response specified, the algorithm will search your backend
+ * definitions for an appropriate response.
+ *
+ * If a request didn't match any expectation or if the expectation doesn't have the response
+ * defined, the backend definitions are evaluated in sequential order to see if any of them match
+ * the request. The response from the first matched definition is returned.
+ *
+ *
+ * ## Flushing HTTP requests
+ *
+ * The $httpBackend used in production always responds to requests asynchronously. If we preserved
+ * this behavior in unit testing, we'd have to create async unit tests, which are hard to write,
+ * to follow and to maintain. But neither can the testing mock respond synchronously; that would
+ * change the execution of the code under test. For this reason, the mock $httpBackend has a
+ * `flush()` method, which allows the test to explicitly flush pending requests. This preserves
+ * the async api of the backend, while allowing the test to execute synchronously.
+ *
+ *
+ * ## Unit testing with mock $httpBackend
+ * The following code shows how to setup and use the mock backend when unit testing a controller.
+ * First we create the controller under test:
+ *
+  ```js
+  // The module code
+  angular
+    .module('MyApp', [])
+    .controller('MyController', MyController);
+
+  // The controller code
+  function MyController($scope, $http) {
+    var authToken;
+
+    $http.get('/auth.py').then(function(response) {
+      authToken = response.headers('A-Token');
+      $scope.user = response.data;
+    });
+
+    $scope.saveMessage = function(message) {
+      var headers = { 'Authorization': authToken };
+      $scope.status = 'Saving...';
+
+      $http.post('/add-msg.py', message, { headers: headers } ).then(function(response) {
+        $scope.status = '';
+      }).catch(function() {
+        $scope.status = 'Failed...';
+      });
+    };
+  }
+  ```
+ *
+ * Now we setup the mock backend and create the test specs:
+ *
+  ```js
+    // testing controller
+    describe('MyController', function() {
+       var $httpBackend, $rootScope, createController, authRequestHandler;
+
+       // Set up the module
+       beforeEach(module('MyApp'));
+
+       beforeEach(inject(function($injector) {
+         // Set up the mock http service responses
+         $httpBackend = $injector.get('$httpBackend');
+         // backend definition common for all tests
+         authRequestHandler = $httpBackend.when('GET', '/auth.py')
+                                .respond({userId: 'userX'}, {'A-Token': 'xxx'});
+
+         // Get hold of a scope (i.e. the root scope)
+         $rootScope = $injector.get('$rootScope');
+         // The $controller service is used to create instances of controllers
+         var $controller = $injector.get('$controller');
+
+         createController = function() {
+           return $controller('MyController', {'$scope' : $rootScope });
+         };
+       }));
+
+
+       afterEach(function() {
+         $httpBackend.verifyNoOutstandingExpectation();
+         $httpBackend.verifyNoOutstandingRequest();
+       });
+
+
+       it('should fetch authentication token', function() {
+         $httpBackend.expectGET('/auth.py');
+         var controller = createController();
+         $httpBackend.flush();
+       });
+
+
+       it('should fail authentication', function() {
+
+         // Notice how you can change the response even after it was set
+         authRequestHandler.respond(401, '');
+
+         $httpBackend.expectGET('/auth.py');
+         var controller = createController();
+         $httpBackend.flush();
+         expect($rootScope.status).toBe('Failed...');
+       });
+
+
+       it('should send msg to server', function() {
+         var controller = createController();
+         $httpBackend.flush();
+
+         // now you don’t care about the authentication, but
+         // the controller will still send the request and
+         // $httpBackend will respond without you having to
+         // specify the expectation and response for this request
+
+         $httpBackend.expectPOST('/add-msg.py', 'message content').respond(201, '');
+         $rootScope.saveMessage('message content');
+         expect($rootScope.status).toBe('Saving...');
+         $httpBackend.flush();
+         expect($rootScope.status).toBe('');
+       });
+
+
+       it('should send auth header', function() {
+         var controller = createController();
+         $httpBackend.flush();
+
+         $httpBackend.expectPOST('/add-msg.py', undefined, function(headers) {
+           // check if the header was sent, if it wasn't the expectation won't
+           // match the request and the test will fail
+           return headers['Authorization'] == 'xxx';
+         }).respond(201, '');
+
+         $rootScope.saveMessage('whatever');
+         $httpBackend.flush();
+       });
+    });
+  ```
+ *
+ * ## Dynamic responses
+ *
+ * You define a response to a request by chaining a call to `respond()` onto a definition or expectation.
+ * If you provide a **callback** as the first parameter to `respond(callback)` then you can dynamically generate
+ * a response based on the properties of the request.
+ *
+ * The `callback` function should be of the form `function(method, url, data, headers, params)`.
+ *
+ * ### Query parameters
+ *
+ * By default, query parameters on request URLs are parsed into the `params` object. So a request URL
+ * of `/list?q=searchstr&orderby=-name` would set `params` to be `{q: 'searchstr', orderby: '-name'}`.
+ *
+ * ### Regex parameter matching
+ *
+ * If an expectation or definition uses a **regex** to match the URL, you can provide an array of **keys** via a
+ * `params` argument. The index of each **key** in the array will match the index of a **group** in the
+ * **regex**.
+ *
+ * The `params` object in the **callback** will now have properties with these keys, which hold the value of the
+ * corresponding **group** in the **regex**.
+ *
+ * This also applies to the `when` and `expect` shortcut methods.
+ *
+ *
+ * ```js
+ *   $httpBackend.expect('GET', /\/user\/(.+)/, undefined, undefined, ['id'])
+ *     .respond(function(method, url, data, headers, params) {
+ *       // for requested url of '/user/1234' params is {id: '1234'}
+ *     });
+ *
+ *   $httpBackend.whenPATCH(/\/user\/(.+)\/article\/(.+)/, undefined, undefined, ['user', 'article'])
+ *     .respond(function(method, url, data, headers, params) {
+ *       // for url of '/user/1234/article/567' params is {user: '1234', article: '567'}
+ *     });
+ * ```
+ *
+ * ## Matching route requests
+ *
+ * For extra convenience, `whenRoute` and `expectRoute` shortcuts are available. These methods offer colon
+ * delimited matching of the url path, ignoring the query string. This allows declarations
+ * similar to how application routes are configured with `$routeProvider`. Because these methods convert
+ * the definition url to regex, declaration order is important. Combined with query parameter parsing,
+ * the following is possible:
+ *
+  ```js
+    $httpBackend.whenRoute('GET', '/users/:id')
+      .respond(function(method, url, data, headers, params) {
+        return [200, MockUserList[Number(params.id)]];
+      });
+
+    $httpBackend.whenRoute('GET', '/users')
+      .respond(function(method, url, data, headers, params) {
+        var userList = angular.copy(MockUserList),
+          defaultSort = 'lastName',
+          count, pages, isPrevious, isNext;
+
+        // paged api response '/v1/users?page=2'
+        params.page = Number(params.page) || 1;
+
+        // query for last names '/v1/users?q=Archer'
+        if (params.q) {
+          userList = $filter('filter')({lastName: params.q});
+        }
+
+        pages = Math.ceil(userList.length / pagingLength);
+        isPrevious = params.page > 1;
+        isNext = params.page < pages;
+
+        return [200, {
+          count:    userList.length,
+          previous: isPrevious,
+          next:     isNext,
+          // sort field -> '/v1/users?sortBy=firstName'
+          results:  $filter('orderBy')(userList, params.sortBy || defaultSort)
+                      .splice((params.page - 1) * pagingLength, pagingLength)
+        }];
+      });
+  ```
+ */
+angular.mock.$HttpBackendProvider = function() {
+  this.$get = ['$rootScope', '$timeout', createHttpBackendMock];
+};
+
+/**
+ * General factory function for $httpBackend mock.
+ * Returns instance for unit testing (when no arguments specified):
+ *   - passing through is disabled
+ *   - auto flushing is disabled
+ *
+ * Returns instance for e2e testing (when `$delegate` and `$browser` specified):
+ *   - passing through (delegating request to real backend) is enabled
+ *   - auto flushing is enabled
+ *
+ * @param {Object=} $delegate Real $httpBackend instance (allow passing through if specified)
+ * @param {Object=} $browser Auto-flushing enabled if specified
+ * @return {Object} Instance of $httpBackend mock
+ */
+function createHttpBackendMock($rootScope, $timeout, $delegate, $browser) {
+  var definitions = [],
+      expectations = [],
+      responses = [],
+      responsesPush = angular.bind(responses, responses.push),
+      copy = angular.copy;
+
+  function createResponse(status, data, headers, statusText) {
+    if (angular.isFunction(status)) return status;
+
+    return function() {
+      return angular.isNumber(status)
+          ? [status, data, headers, statusText]
+          : [200, status, data, headers];
+    };
+  }
+
+  // TODO(vojta): change params to: method, url, data, headers, callback
+  function $httpBackend(method, url, data, callback, headers, timeout, withCredentials, responseType, eventHandlers, uploadEventHandlers) {
+
+    var xhr = new MockXhr(),
+        expectation = expectations[0],
+        wasExpected = false;
+
+    xhr.$$events = eventHandlers;
+    xhr.upload.$$events = uploadEventHandlers;
+
+    function prettyPrint(data) {
+      return (angular.isString(data) || angular.isFunction(data) || data instanceof RegExp)
+          ? data
+          : angular.toJson(data);
+    }
+
+    function wrapResponse(wrapped) {
+      if (!$browser && timeout) {
+        timeout.then ? timeout.then(handleTimeout) : $timeout(handleTimeout, timeout);
+      }
+
+      return handleResponse;
+
+      function handleResponse() {
+        var response = wrapped.response(method, url, data, headers, wrapped.params(url));
+        xhr.$$respHeaders = response[2];
+        callback(copy(response[0]), copy(response[1]), xhr.getAllResponseHeaders(),
+                 copy(response[3] || ''));
+      }
+
+      function handleTimeout() {
+        for (var i = 0, ii = responses.length; i < ii; i++) {
+          if (responses[i] === handleResponse) {
+            responses.splice(i, 1);
+            callback(-1, undefined, '');
+            break;
+          }
+        }
+      }
+    }
+
+    if (expectation && expectation.match(method, url)) {
+      if (!expectation.matchData(data)) {
+        throw new Error('Expected ' + expectation + ' with different data\n' +
+            'EXPECTED: ' + prettyPrint(expectation.data) + '\nGOT:      ' + data);
+      }
+
+      if (!expectation.matchHeaders(headers)) {
+        throw new Error('Expected ' + expectation + ' with different headers\n' +
+                        'EXPECTED: ' + prettyPrint(expectation.headers) + '\nGOT:      ' +
+                        prettyPrint(headers));
+      }
+
+      expectations.shift();
+
+      if (expectation.response) {
+        responses.push(wrapResponse(expectation));
+        return;
+      }
+      wasExpected = true;
+    }
+
+    var i = -1, definition;
+    while ((definition = definitions[++i])) {
+      if (definition.match(method, url, data, headers || {})) {
+        if (definition.response) {
+          // if $browser specified, we do auto flush all requests
+          ($browser ? $browser.defer : responsesPush)(wrapResponse(definition));
+        } else if (definition.passThrough) {
+          $delegate(method, url, data, callback, headers, timeout, withCredentials, responseType, eventHandlers, uploadEventHandlers);
+        } else throw new Error('No response defined !');
+        return;
+      }
+    }
+    throw wasExpected ?
+        new Error('No response defined !') :
+        new Error('Unexpected request: ' + method + ' ' + url + '\n' +
+                  (expectation ? 'Expected ' + expectation : 'No more request expected'));
+  }
+
+  /**
+   * @ngdoc method
+   * @name $httpBackend#when
+   * @description
+   * Creates a new backend definition.
+   *
+   * @param {string} method HTTP method.
+   * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+   *   and returns true if the url matches the current definition.
+   * @param {(string|RegExp|function(string))=} data HTTP request body or function that receives
+   *   data string and returns true if the data is as expected.
+   * @param {(Object|function(Object))=} headers HTTP headers or function that receives http header
+   *   object and returns true if the headers match the current definition.
+   * @param {(Array)=} keys Array of keys to assign to regex matches in request url described above.
+   * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
+   *   request is handled. You can save this object for later use and invoke `respond` again in
+   *   order to change how a matched request is handled.
+   *
+   *  - respond –
+   *      ```js
+   *      {function([status,] data[, headers, statusText])
+   *      | function(function(method, url, data, headers, params)}
+   *      ```
+   *    – The respond method takes a set of static data to be returned or a function that can
+   *    return an array containing response status (number), response data (Array|Object|string),
+   *    response headers (Object), and the text for the status (string). The respond method returns
+   *    the `requestHandler` object for possible overrides.
+   */
+  $httpBackend.when = function(method, url, data, headers, keys) {
+    var definition = new MockHttpExpectation(method, url, data, headers, keys),
+        chain = {
+          respond: function(status, data, headers, statusText) {
+            definition.passThrough = undefined;
+            definition.response = createResponse(status, data, headers, statusText);
+            return chain;
+          }
+        };
+
+    if ($browser) {
+      chain.passThrough = function() {
+        definition.response = undefined;
+        definition.passThrough = true;
+        return chain;
+      };
+    }
+
+    definitions.push(definition);
+    return chain;
+  };
+
+  /**
+   * @ngdoc method
+   * @name $httpBackend#whenGET
+   * @description
+   * Creates a new backend definition for GET requests. For more info see `when()`.
+   *
+   * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+   *   and returns true if the url matches the current definition.
+   * @param {(Object|function(Object))=} headers HTTP headers.
+   * @param {(Array)=} keys Array of keys to assign to regex matches in request url described above.
+   * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
+   * request is handled. You can save this object for later use and invoke `respond` again in
+   * order to change how a matched request is handled.
+   */
+
+  /**
+   * @ngdoc method
+   * @name $httpBackend#whenHEAD
+   * @description
+   * Creates a new backend definition for HEAD requests. For more info see `when()`.
+   *
+   * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+   *   and returns true if the url matches the current definition.
+   * @param {(Object|function(Object))=} headers HTTP headers.
+   * @param {(Array)=} keys Array of keys to assign to regex matches in request url described above.
+   * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
+   * request is handled. You can save this object for later use and invoke `respond` again in
+   * order to change how a matched request is handled.
+   */
+
+  /**
+   * @ngdoc method
+   * @name $httpBackend#whenDELETE
+   * @description
+   * Creates a new backend definition for DELETE requests. For more info see `when()`.
+   *
+   * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+   *   and returns true if the url matches the current definition.
+   * @param {(Object|function(Object))=} headers HTTP headers.
+   * @param {(Array)=} keys Array of keys to assign to regex matches in request url described above.
+   * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
+   * request is handled. You can save this object for later use and invoke `respond` again in
+   * order to change how a matched request is handled.
+   */
+
+  /**
+   * @ngdoc method
+   * @name $httpBackend#whenPOST
+   * @description
+   * Creates a new backend definition for POST requests. For more info see `when()`.
+   *
+   * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+   *   and returns true if the url matches the current definition.
+   * @param {(string|RegExp|function(string))=} data HTTP request body or function that receives
+   *   data string and returns true if the data is as expected.
+   * @param {(Object|function(Object))=} headers HTTP headers.
+   * @param {(Array)=} keys Array of keys to assign to regex matches in request url described above.
+   * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
+   * request is handled. You can save this object for later use and invoke `respond` again in
+   * order to change how a matched request is handled.
+   */
+
+  /**
+   * @ngdoc method
+   * @name $httpBackend#whenPUT
+   * @description
+   * Creates a new backend definition for PUT requests.  For more info see `when()`.
+   *
+   * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+   *   and returns true if the url matches the current definition.
+   * @param {(string|RegExp|function(string))=} data HTTP request body or function that receives
+   *   data string and returns true if the data is as expected.
+   * @param {(Object|function(Object))=} headers HTTP headers.
+   * @param {(Array)=} keys Array of keys to assign to regex matches in request url described above.
+   * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
+   * request is handled. You can save this object for later use and invoke `respond` again in
+   * order to change how a matched request is handled.
+   */
+
+  /**
+   * @ngdoc method
+   * @name $httpBackend#whenJSONP
+   * @description
+   * Creates a new backend definition for JSONP requests. For more info see `when()`.
+   *
+   * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+   *   and returns true if the url matches the current definition.
+   * @param {(Array)=} keys Array of keys to assign to regex matches in request url described above.
+   * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
+   * request is handled. You can save this object for later use and invoke `respond` again in
+   * order to change how a matched request is handled.
+   */
+  createShortMethods('when');
+
+  /**
+   * @ngdoc method
+   * @name $httpBackend#whenRoute
+   * @description
+   * Creates a new backend definition that compares only with the requested route.
+   *
+   * @param {string} method HTTP method.
+   * @param {string} url HTTP url string that supports colon param matching.
+   * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
+   * request is handled. You can save this object for later use and invoke `respond` again in
+   * order to change how a matched request is handled. See #when for more info.
+   */
+  $httpBackend.whenRoute = function(method, url) {
+    var pathObj = parseRoute(url);
+    return $httpBackend.when(method, pathObj.regexp, undefined, undefined, pathObj.keys);
+  };
+
+  function parseRoute(url) {
+    var ret = {
+      regexp: url
+    },
+    keys = ret.keys = [];
+
+    if (!url || !angular.isString(url)) return ret;
+
+    url = url
+      .replace(/([().])/g, '\\$1')
+      .replace(/(\/)?:(\w+)([\?\*])?/g, function(_, slash, key, option) {
+        var optional = option === '?' ? option : null;
+        var star = option === '*' ? option : null;
+        keys.push({ name: key, optional: !!optional });
+        slash = slash || '';
+        return ''
+          + (optional ? '' : slash)
+          + '(?:'
+          + (optional ? slash : '')
+          + (star && '(.+?)' || '([^/]+)')
+          + (optional || '')
+          + ')'
+          + (optional || '');
+      })
+      .replace(/([\/$\*])/g, '\\$1');
+
+    ret.regexp = new RegExp('^' + url, 'i');
+    return ret;
+  }
+
+  /**
+   * @ngdoc method
+   * @name $httpBackend#expect
+   * @description
+   * Creates a new request expectation.
+   *
+   * @param {string} method HTTP method.
+   * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+   *   and returns true if the url matches the current definition.
+   * @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that
+   *  receives data string and returns true if the data is as expected, or Object if request body
+   *  is in JSON format.
+   * @param {(Object|function(Object))=} headers HTTP headers or function that receives http header
+   *   object and returns true if the headers match the current expectation.
+   * @param {(Array)=} keys Array of keys to assign to regex matches in request url described above.
+   * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
+   *  request is handled. You can save this object for later use and invoke `respond` again in
+   *  order to change how a matched request is handled.
+   *
+   *  - respond –
+   *    ```
+   *    { function([status,] data[, headers, statusText])
+   *    | function(function(method, url, data, headers, params)}
+   *    ```
+   *    – The respond method takes a set of static data to be returned or a function that can
+   *    return an array containing response status (number), response data (Array|Object|string),
+   *    response headers (Object), and the text for the status (string). The respond method returns
+   *    the `requestHandler` object for possible overrides.
+   */
+  $httpBackend.expect = function(method, url, data, headers, keys) {
+    var expectation = new MockHttpExpectation(method, url, data, headers, keys),
+        chain = {
+          respond: function(status, data, headers, statusText) {
+            expectation.response = createResponse(status, data, headers, statusText);
+            return chain;
+          }
+        };
+
+    expectations.push(expectation);
+    return chain;
+  };
+
+  /**
+   * @ngdoc method
+   * @name $httpBackend#expectGET
+   * @description
+   * Creates a new request expectation for GET requests. For more info see `expect()`.
+   *
+   * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+   *   and returns true if the url matches the current definition.
+   * @param {Object=} headers HTTP headers.
+   * @param {(Array)=} keys Array of keys to assign to regex matches in request url described above.
+   * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
+   * request is handled. You can save this object for later use and invoke `respond` again in
+   * order to change how a matched request is handled. See #expect for more info.
+   */
+
+  /**
+   * @ngdoc method
+   * @name $httpBackend#expectHEAD
+   * @description
+   * Creates a new request expectation for HEAD requests. For more info see `expect()`.
+   *
+   * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+   *   and returns true if the url matches the current definition.
+   * @param {Object=} headers HTTP headers.
+   * @param {(Array)=} keys Array of keys to assign to regex matches in request url described above.
+   * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
+   *   request is handled. You can save this object for later use and invoke `respond` again in
+   *   order to change how a matched request is handled.
+   */
+
+  /**
+   * @ngdoc method
+   * @name $httpBackend#expectDELETE
+   * @description
+   * Creates a new request expectation for DELETE requests. For more info see `expect()`.
+   *
+   * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+   *   and returns true if the url matches the current definition.
+   * @param {Object=} headers HTTP headers.
+   * @param {(Array)=} keys Array of keys to assign to regex matches in request url described above.
+   * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
+   *   request is handled. You can save this object for later use and invoke `respond` again in
+   *   order to change how a matched request is handled.
+   */
+
+  /**
+   * @ngdoc method
+   * @name $httpBackend#expectPOST
+   * @description
+   * Creates a new request expectation for POST requests. For more info see `expect()`.
+   *
+   * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+   *   and returns true if the url matches the current definition.
+   * @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that
+   *  receives data string and returns true if the data is as expected, or Object if request body
+   *  is in JSON format.
+   * @param {Object=} headers HTTP headers.
+   * @param {(Array)=} keys Array of keys to assign to regex matches in request url described above.
+   * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
+   *   request is handled. You can save this object for later use and invoke `respond` again in
+   *   order to change how a matched request is handled.
+   */
+
+  /**
+   * @ngdoc method
+   * @name $httpBackend#expectPUT
+   * @description
+   * Creates a new request expectation for PUT requests. For more info see `expect()`.
+   *
+   * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+   *   and returns true if the url matches the current definition.
+   * @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that
+   *  receives data string and returns true if the data is as expected, or Object if request body
+   *  is in JSON format.
+   * @param {Object=} headers HTTP headers.
+   * @param {(Array)=} keys Array of keys to assign to regex matches in request url described above.
+   * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
+   *   request is handled. You can save this object for later use and invoke `respond` again in
+   *   order to change how a matched request is handled.
+   */
+
+  /**
+   * @ngdoc method
+   * @name $httpBackend#expectPATCH
+   * @description
+   * Creates a new request expectation for PATCH requests. For more info see `expect()`.
+   *
+   * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+   *   and returns true if the url matches the current definition.
+   * @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that
+   *  receives data string and returns true if the data is as expected, or Object if request body
+   *  is in JSON format.
+   * @param {Object=} headers HTTP headers.
+   * @param {(Array)=} keys Array of keys to assign to regex matches in request url described above.
+   * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
+   *   request is handled. You can save this object for later use and invoke `respond` again in
+   *   order to change how a matched request is handled.
+   */
+
+  /**
+   * @ngdoc method
+   * @name $httpBackend#expectJSONP
+   * @description
+   * Creates a new request expectation for JSONP requests. For more info see `expect()`.
+   *
+   * @param {string|RegExp|function(string)} url HTTP url or function that receives an url
+   *   and returns true if the url matches the current definition.
+   * @param {(Array)=} keys Array of keys to assign to regex matches in request url described above.
+   * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
+   *   request is handled. You can save this object for later use and invoke `respond` again in
+   *   order to change how a matched request is handled.
+   */
+  createShortMethods('expect');
+
+  /**
+   * @ngdoc method
+   * @name $httpBackend#expectRoute
+   * @description
+   * Creates a new request expectation that compares only with the requested route.
+   *
+   * @param {string} method HTTP method.
+   * @param {string} url HTTP url string that supports colon param matching.
+   * @returns {requestHandler} Returns an object with `respond` method that controls how a matched
+   * request is handled. You can save this object for later use and invoke `respond` again in
+   * order to change how a matched request is handled. See #expect for more info.
+   */
+  $httpBackend.expectRoute = function(method, url) {
+    var pathObj = parseRoute(url);
+    return $httpBackend.expect(method, pathObj.regexp, undefined, undefined, pathObj.keys);
+  };
+
+
+  /**
+   * @ngdoc method
+   * @name $httpBackend#flush
+   * @description
+   * Flushes all pending requests using the trained responses.
+   *
+   * @param {number=} count Number of responses to flush (in the order they arrived). If undefined,
+   *   all pending requests will be flushed. If there are no pending requests when the flush method
+   *   is called an exception is thrown (as this typically a sign of programming error).
+   */
+  $httpBackend.flush = function(count, digest) {
+    if (digest !== false) $rootScope.$digest();
+    if (!responses.length) throw new Error('No pending request to flush !');
+
+    if (angular.isDefined(count) && count !== null) {
+      while (count--) {
+        if (!responses.length) throw new Error('No more pending request to flush !');
+        responses.shift()();
+      }
+    } else {
+      while (responses.length) {
+        responses.shift()();
+      }
+    }
+    $httpBackend.verifyNoOutstandingExpectation(digest);
+  };
+
+
+  /**
+   * @ngdoc method
+   * @name $httpBackend#verifyNoOutstandingExpectation
+   * @description
+   * Verifies that all of the requests defined via the `expect` api were made. If any of the
+   * requests were not made, verifyNoOutstandingExpectation throws an exception.
+   *
+   * Typically, you would call this method following each test case that asserts requests using an
+   * "afterEach" clause.
+   *
+   * ```js
+   *   afterEach($httpBackend.verifyNoOutstandingExpectation);
+   * ```
+   */
+  $httpBackend.verifyNoOutstandingExpectation = function(digest) {
+    if (digest !== false) $rootScope.$digest();
+    if (expectations.length) {
+      throw new Error('Unsatisfied requests: ' + expectations.join(', '));
+    }
+  };
+
+
+  /**
+   * @ngdoc method
+   * @name $httpBackend#verifyNoOutstandingRequest
+   * @description
+   * Verifies that there are no outstanding requests that need to be flushed.
+   *
+   * Typically, you would call this method following each test case that asserts requests using an
+   * "afterEach" clause.
+   *
+   * ```js
+   *   afterEach($httpBackend.verifyNoOutstandingRequest);
+   * ```
+   */
+  $httpBackend.verifyNoOutstandingRequest = function() {
+    if (responses.length) {
+      throw new Error('Unflushed requests: ' + responses.length);
+    }
+  };
+
+
+  /**
+   * @ngdoc method
+   * @name $httpBackend#resetExpectations
+   * @description
+   * Resets all request expectations, but preserves all backend definitions. Typically, you would
+   * call resetExpectations during a multiple-phase test when you want to reuse the same instance of
+   * $httpBackend mock.
+   */
+  $httpBackend.resetExpectations = function() {
+    expectations.length = 0;
+    responses.length = 0;
+  };
+
+  return $httpBackend;
+
+
+  function createShortMethods(prefix) {
+    angular.forEach(['GET', 'DELETE', 'JSONP', 'HEAD'], function(method) {
+     $httpBackend[prefix + method] = function(url, headers, keys) {
+       return $httpBackend[prefix](method, url, undefined, headers, keys);
+     };
+    });
+
+    angular.forEach(['PUT', 'POST', 'PATCH'], function(method) {
+      $httpBackend[prefix + method] = function(url, data, headers, keys) {
+        return $httpBackend[prefix](method, url, data, headers, keys);
+      };
+    });
+  }
+}
+
+function MockHttpExpectation(method, url, data, headers, keys) {
+
+  function getUrlParams(u) {
+    var params = u.slice(u.indexOf('?') + 1).split('&');
+    return params.sort();
+  }
+
+  function compareUrl(u) {
+    return (url.slice(0, url.indexOf('?')) == u.slice(0, u.indexOf('?')) && getUrlParams(url).join() == getUrlParams(u).join());
+  }
+
+  this.data = data;
+  this.headers = headers;
+
+  this.match = function(m, u, d, h) {
+    if (method != m) return false;
+    if (!this.matchUrl(u)) return false;
+    if (angular.isDefined(d) && !this.matchData(d)) return false;
+    if (angular.isDefined(h) && !this.matchHeaders(h)) return false;
+    return true;
+  };
+
+  this.matchUrl = function(u) {
+    if (!url) return true;
+    if (angular.isFunction(url.test)) return url.test(u);
+    if (angular.isFunction(url)) return url(u);
+    return (url == u || compareUrl(u));
+  };
+
+  this.matchHeaders = function(h) {
+    if (angular.isUndefined(headers)) return true;
+    if (angular.isFunction(headers)) return headers(h);
+    return angular.equals(headers, h);
+  };
+
+  this.matchData = function(d) {
+    if (angular.isUndefined(data)) return true;
+    if (data && angular.isFunction(data.test)) return data.test(d);
+    if (data && angular.isFunction(data)) return data(d);
+    if (data && !angular.isString(data)) {
+      return angular.equals(angular.fromJson(angular.toJson(data)), angular.fromJson(d));
+    }
+    return data == d;
+  };
+
+  this.toString = function() {
+    return method + ' ' + url;
+  };
+
+  this.params = function(u) {
+    return angular.extend(parseQuery(), pathParams());
+
+    function pathParams() {
+      var keyObj = {};
+      if (!url || !angular.isFunction(url.test) || !keys || keys.length === 0) return keyObj;
+
+      var m = url.exec(u);
+      if (!m) return keyObj;
+      for (var i = 1, len = m.length; i < len; ++i) {
+        var key = keys[i - 1];
+        var val = m[i];
+        if (key && val) {
+          keyObj[key.name || key] = val;
+        }
+      }
+
+      return keyObj;
+    }
+
+    function parseQuery() {
+      var obj = {}, key_value, key,
+          queryStr = u.indexOf('?') > -1
+          ? u.substring(u.indexOf('?') + 1)
+          : "";
+
+      angular.forEach(queryStr.split('&'), function(keyValue) {
+        if (keyValue) {
+          key_value = keyValue.replace(/\+/g,'%20').split('=');
+          key = tryDecodeURIComponent(key_value[0]);
+          if (angular.isDefined(key)) {
+            var val = angular.isDefined(key_value[1]) ? tryDecodeURIComponent(key_value[1]) : true;
+            if (!hasOwnProperty.call(obj, key)) {
+              obj[key] = val;
+            } else if (angular.isArray(obj[key])) {
+              obj[key].push(val);
+            } else {
+              obj[key] = [obj[key],val];
+            }
+          }
+        }
+      });
+      return obj;
+    }
+    function tryDecodeURIComponent(value) {
+      try {
+        return decodeURIComponent(value);
+      } catch (e) {
+        // Ignore any invalid uri component
+      }
+    }
+  };
+}
+
+function createMockXhr() {
+  return new MockXhr();
+}
+
+function MockXhr() {
+
+  // hack for testing $http, $httpBackend
+  MockXhr.$$lastInstance = this;
+
+  this.open = function(method, url, async) {
+    this.$$method = method;
+    this.$$url = url;
+    this.$$async = async;
+    this.$$reqHeaders = {};
+    this.$$respHeaders = {};
+  };
+
+  this.send = function(data) {
+    this.$$data = data;
+  };
+
+  this.setRequestHeader = function(key, value) {
+    this.$$reqHeaders[key] = value;
+  };
+
+  this.getResponseHeader = function(name) {
+    // the lookup must be case insensitive,
+    // that's why we try two quick lookups first and full scan last
+    var header = this.$$respHeaders[name];
+    if (header) return header;
+
+    name = angular.lowercase(name);
+    header = this.$$respHeaders[name];
+    if (header) return header;
+
+    header = undefined;
+    angular.forEach(this.$$respHeaders, function(headerVal, headerName) {
+      if (!header && angular.lowercase(headerName) == name) header = headerVal;
+    });
+    return header;
+  };
+
+  this.getAllResponseHeaders = function() {
+    var lines = [];
+
+    angular.forEach(this.$$respHeaders, function(value, key) {
+      lines.push(key + ': ' + value);
+    });
+    return lines.join('\n');
+  };
+
+  this.abort = angular.noop;
+
+  // This section simulates the events on a real XHR object (and the upload object)
+  // When we are testing $httpBackend (inside the angular project) we make partial use of this
+  // but store the events directly ourselves on `$$events`, instead of going through the `addEventListener`
+  this.$$events = {};
+  this.addEventListener = function(name, listener) {
+    if (angular.isUndefined(this.$$events[name])) this.$$events[name] = [];
+    this.$$events[name].push(listener);
+  };
+
+  this.upload = {
+    $$events: {},
+    addEventListener: this.addEventListener
+  };
+}
+
+
+/**
+ * @ngdoc service
+ * @name $timeout
+ * @description
+ *
+ * This service is just a simple decorator for {@link ng.$timeout $timeout} service
+ * that adds a "flush" and "verifyNoPendingTasks" methods.
+ */
+
+angular.mock.$TimeoutDecorator = ['$delegate', '$browser', function($delegate, $browser) {
+
+  /**
+   * @ngdoc method
+   * @name $timeout#flush
+   * @description
+   *
+   * Flushes the queue of pending tasks.
+   *
+   * @param {number=} delay maximum timeout amount to flush up until
+   */
+  $delegate.flush = function(delay) {
+    $browser.defer.flush(delay);
+  };
+
+  /**
+   * @ngdoc method
+   * @name $timeout#verifyNoPendingTasks
+   * @description
+   *
+   * Verifies that there are no pending tasks that need to be flushed.
+   */
+  $delegate.verifyNoPendingTasks = function() {
+    if ($browser.deferredFns.length) {
+      throw new Error('Deferred tasks to flush (' + $browser.deferredFns.length + '): ' +
+          formatPendingTasksAsString($browser.deferredFns));
+    }
+  };
+
+  function formatPendingTasksAsString(tasks) {
+    var result = [];
+    angular.forEach(tasks, function(task) {
+      result.push('{id: ' + task.id + ', ' + 'time: ' + task.time + '}');
+    });
+
+    return result.join(', ');
+  }
+
+  return $delegate;
+}];
+
+angular.mock.$RAFDecorator = ['$delegate', function($delegate) {
+  var rafFn = function(fn) {
+    var index = rafFn.queue.length;
+    rafFn.queue.push(fn);
+    return function() {
+      rafFn.queue.splice(index, 1);
+    };
+  };
+
+  rafFn.queue = [];
+  rafFn.supported = $delegate.supported;
+
+  rafFn.flush = function() {
+    if (rafFn.queue.length === 0) {
+      throw new Error('No rAF callbacks present');
+    }
+
+    var length = rafFn.queue.length;
+    for (var i = 0; i < length; i++) {
+      rafFn.queue[i]();
+    }
+
+    rafFn.queue = rafFn.queue.slice(i);
+  };
+
+  return rafFn;
+}];
+
+/**
+ *
+ */
+var originalRootElement;
+angular.mock.$RootElementProvider = function() {
+  this.$get = ['$injector', function($injector) {
+    originalRootElement = angular.element('<div ng-app></div>').data('$injector', $injector);
+    return originalRootElement;
+  }];
+};
+
+/**
+ * @ngdoc service
+ * @name $controller
+ * @description
+ * A decorator for {@link ng.$controller} with additional `bindings` parameter, useful when testing
+ * controllers of directives that use {@link $compile#-bindtocontroller- `bindToController`}.
+ *
+ *
+ * ## Example
+ *
+ * ```js
+ *
+ * // Directive definition ...
+ *
+ * myMod.directive('myDirective', {
+ *   controller: 'MyDirectiveController',
+ *   bindToController: {
+ *     name: '@'
+ *   }
+ * });
+ *
+ *
+ * // Controller definition ...
+ *
+ * myMod.controller('MyDirectiveController', ['$log', function($log) {
+ *   $log.info(this.name);
+ * }]);
+ *
+ *
+ * // In a test ...
+ *
+ * describe('myDirectiveController', function() {
+ *   it('should write the bound name to the log', inject(function($controller, $log) {
+ *     var ctrl = $controller('MyDirectiveController', { /* no locals &#42;/ }, { name: 'Clark Kent' });
+ *     expect(ctrl.name).toEqual('Clark Kent');
+ *     expect($log.info.logs).toEqual(['Clark Kent']);
+ *   }));
+ * });
+ *
+ * ```
+ *
+ * @param {Function|string} constructor If called with a function then it's considered to be the
+ *    controller constructor function. Otherwise it's considered to be a string which is used
+ *    to retrieve the controller constructor using the following steps:
+ *
+ *    * check if a controller with given name is registered via `$controllerProvider`
+ *    * check if evaluating the string on the current scope returns a constructor
+ *    * if $controllerProvider#allowGlobals, check `window[constructor]` on the global
+ *      `window` object (not recommended)
+ *
+ *    The string can use the `controller as property` syntax, where the controller instance is published
+ *    as the specified property on the `scope`; the `scope` must be injected into `locals` param for this
+ *    to work correctly.
+ *
+ * @param {Object} locals Injection locals for Controller.
+ * @param {Object=} bindings Properties to add to the controller before invoking the constructor. This is used
+ *                           to simulate the `bindToController` feature and simplify certain kinds of tests.
+ * @return {Object} Instance of given controller.
+ */
+angular.mock.$ControllerDecorator = ['$delegate', function($delegate) {
+  return function(expression, locals, later, ident) {
+    if (later && typeof later === 'object') {
+      var create = $delegate(expression, locals, true, ident);
+      angular.extend(create.instance, later);
+      return create();
+    }
+    return $delegate(expression, locals, later, ident);
+  };
+}];
+
+/**
+ * @ngdoc service
+ * @name $componentController
+ * @description
+ * A service that can be used to create instances of component controllers.
+ * <div class="alert alert-info">
+ * Be aware that the controller will be instantiated and attached to the scope as specified in
+ * the component definition object. If you do not provide a `$scope` object in the `locals` param
+ * then the helper will create a new isolated scope as a child of `$rootScope`.
+ * </div>
+ * @param {string} componentName the name of the component whose controller we want to instantiate
+ * @param {Object} locals Injection locals for Controller.
+ * @param {Object=} bindings Properties to add to the controller before invoking the constructor. This is used
+ *                           to simulate the `bindToController` feature and simplify certain kinds of tests.
+ * @param {string=} ident Override the property name to use when attaching the controller to the scope.
+ * @return {Object} Instance of requested controller.
+ */
+angular.mock.$ComponentControllerProvider = ['$compileProvider', function($compileProvider) {
+  this.$get = ['$controller','$injector', '$rootScope', function($controller, $injector, $rootScope) {
+    return function $componentController(componentName, locals, bindings, ident) {
+      // get all directives associated to the component name
+      var directives = $injector.get(componentName + 'Directive');
+      // look for those directives that are components
+      var candidateDirectives = directives.filter(function(directiveInfo) {
+        // components have controller, controllerAs and restrict:'E'
+        return directiveInfo.controller && directiveInfo.controllerAs && directiveInfo.restrict === 'E';
+      });
+      // check if valid directives found
+      if (candidateDirectives.length === 0) {
+        throw new Error('No component found');
+      }
+      if (candidateDirectives.length > 1) {
+        throw new Error('Too many components found');
+      }
+      // get the info of the component
+      var directiveInfo = candidateDirectives[0];
+      // create a scope if needed
+      locals = locals || {};
+      locals.$scope = locals.$scope || $rootScope.$new(true);
+      return $controller(directiveInfo.controller, locals, bindings, ident || directiveInfo.controllerAs);
+    };
+  }];
+}];
+
+
+/**
+ * @ngdoc module
+ * @name ngMock
+ * @packageName angular-mocks
+ * @description
+ *
+ * # ngMock
+ *
+ * The `ngMock` module provides support to inject and mock Angular services into unit tests.
+ * In addition, ngMock also extends various core ng services such that they can be
+ * inspected and controlled in a synchronous manner within test code.
+ *
+ *
+ * <div doc-module-components="ngMock"></div>
+ *
+ * @installation
+ *
+ *  First, download the file:
+ *  * [Google CDN](https://developers.google.com/speed/libraries/devguide#angularjs) e.g.
+ *    `"//ajax.googleapis.com/ajax/libs/angularjs/X.Y.Z/angular-mocks.js"`
+ *  * [NPM](https://www.npmjs.com/) e.g. `npm install angular-mocks@X.Y.Z`
+ *  * [Bower](http://bower.io) e.g. `bower install angular-mocks@X.Y.Z`
+ *  * [code.angularjs.org](https://code.angularjs.org/) (discouraged for production use)  e.g.
+ *    `"//code.angularjs.org/X.Y.Z/angular-mocks.js"`
+ *
+ * where X.Y.Z is the AngularJS version you are running.
+ *
+ * Then, configure your test runner to load `angular-mocks.js` after `angular.js`.
+ * This example uses <a href="http://karma-runner.github.io/">Karma</a>:
+ *
+ * ```
+ * config.set({
+ *   files: [
+ *     'build/angular.js', // and other module files you need
+ *     'build/angular-mocks.js',
+ *     '<path/to/application/files>',
+ *     '<path/to/spec/files>'
+ *   ]
+ * });
+ * ```
+ *
+ * Including the `angular-mocks.js` file automatically adds the `ngMock` module, so your tests
+ *  are ready to go!
+ */
+angular.module('ngMock', ['ng']).provider({
+  $browser: angular.mock.$BrowserProvider,
+  $exceptionHandler: angular.mock.$ExceptionHandlerProvider,
+  $log: angular.mock.$LogProvider,
+  $interval: angular.mock.$IntervalProvider,
+  $httpBackend: angular.mock.$HttpBackendProvider,
+  $rootElement: angular.mock.$RootElementProvider,
+  $componentController: angular.mock.$ComponentControllerProvider
+}).config(['$provide', function($provide) {
+  $provide.decorator('$timeout', angular.mock.$TimeoutDecorator);
+  $provide.decorator('$$rAF', angular.mock.$RAFDecorator);
+  $provide.decorator('$rootScope', angular.mock.$RootScopeDecorator);
+  $provide.decorator('$controller', angular.mock.$ControllerDecorator);
+}]);
+
+/**
+ * @ngdoc module
+ * @name ngMockE2E
+ * @module ngMockE2E
+ * @packageName angular-mocks
+ * @description
+ *
+ * The `ngMockE2E` is an angular module which contains mocks suitable for end-to-end testing.
+ * Currently there is only one mock present in this module -
+ * the {@link ngMockE2E.$httpBackend e2e $httpBackend} mock.
+ */
+angular.module('ngMockE2E', ['ng']).config(['$provide', function($provide) {
+  $provide.decorator('$httpBackend', angular.mock.e2e.$httpBackendDecorator);
+}]);
+
+/**
+ * @ngdoc service
+ * @name $httpBackend
+ * @module ngMockE2E
+ * @description
+ * Fake HTTP backend implementation suitable for end-to-end testing or backend-less development of
+ * applications that use the {@link ng.$http $http service}.
+ *
+ * <div class="alert alert-info">
+ * **Note**: For fake http backend implementation suitable for unit testing please see
+ * {@link ngMock.$httpBackend unit-testing $httpBackend mock}.
+ * </div>
+ *
+ * This implementation can be used to respond with static or dynamic responses via the `when` api
+ * and its shortcuts (`whenGET`, `whenPOST`, etc) and optionally pass through requests to the
+ * real $httpBackend for specific requests (e.g. to interact with certain remote apis or to fetch
+ * templates from a webserver).
+ *
+ * As opposed to unit-testing, in an end-to-end testing scenario or in scenario when an application
+ * is being developed with the real backend api replaced with a mock, it is often desirable for
+ * certain category of requests to bypass the mock and issue a real http request (e.g. to fetch
+ * templates or static files from the webserver). To configure the backend with this behavior
+ * use the `passThrough` request handler of `when` instead of `respond`.
+ *
+ * Additionally, we don't want to manually have to flush mocked out requests like we do during unit
+ * testing. For this reason the e2e $httpBackend flushes mocked out requests
+ * automatically, closely simulating the behavior of the XMLHttpRequest object.
+ *
+ * To setup the application to run with this http backend, you have to create a module that depends
+ * on the `ngMockE2E` and your application modules and defines the fake backend:
+ *
+ * ```js
+ *   var myAppDev = angular.module('myAppDev', ['myApp', 'ngMockE2E']);
+ *   myAppDev.run(function($httpBackend) {
+ *     var phones = [{name: 'phone1'}, {name: 'phone2'}];
+ *
+ *     // returns the current list of phones
+ *     $httpBackend.whenGET('/phones').respond(phones);
+ *
+ *     // adds a new phone to the phones array
+ *     $httpBackend.whenPOST('/phones').respond(function(method, url, data) {
+ *       var phone = angular.fromJson(data);
+ *       phones.push(phone);
+ *       return [200, phone, {}];
+ *     });
+ *     $httpBackend.whenGET(/^\/templates\//).passThrough(); // Requests for templare are handled by the real server
+ *     //...
+ *   });
+ * ```
+ *
+ * Afterwards, bootstrap your app with this new module.
+ *
+ * ## Example
+ * <example name="httpbackend-e2e-testing" module="myAppE2E" deps="angular-mocks.js">
+ * <file name="app.js">
+ *   var myApp = angular.module('myApp', []);
+ *
+ *   myApp.controller('main', function($http) {
+ *     var ctrl = this;
+ *
+ *     ctrl.phones = [];
+ *     ctrl.newPhone = {
+ *       name: ''
+ *     };
+ *
+ *     ctrl.getPhones = function() {
+ *       $http.get('/phones').then(function(response) {
+ *         ctrl.phones = response.data;
+ *       });
+ *     };
+ *
+ *     ctrl.addPhone = function(phone) {
+ *       $http.post('/phones', phone).then(function() {
+ *         ctrl.newPhone = {name: ''};
+ *         return ctrl.getPhones();
+ *       });
+ *     };
+ *
+ *     ctrl.getPhones();
+ *   });
+ * </file>
+ * <file name="e2e.js">
+ *   var myAppDev = angular.module('myAppE2E', ['myApp', 'ngMockE2E']);
+ *
+ *   myAppDev.run(function($httpBackend) {
+ *     var phones = [{name: 'phone1'}, {name: 'phone2'}];
+ *
+ *     // returns the current list of phones
+ *     $httpBackend.whenGET('/phones').respond(phones);
+ *
+ *     // adds a new phone to the phones array
+ *     $httpBackend.whenPOST('/phones').respond(function(method, url, data) {
+ *       var phone = angular.fromJson(data);
+ *       phones.push(phone);
+ *       return [200, phone, {}];
+ *     });
+ *   });
+ * </file>
+ * <file name="index.html">
+ *   <div ng-controller="main as $ctrl">
+ *   <form name="newPhoneForm" ng-submit="$ctrl.addPhone($ctrl.newPhone)">
+ *     <input type="text" ng-model="$ctrl.newPhone.name">
+ *     <input type="submit" value="Add Phone">
+ *   </form>
+ *   <h1>Phones</h1>
+ *   <ul>
+ *     <li ng-repeat="phone in $ctrl.phones">{{phone.name}}</li>
+ *   </ul>
+ *   </div>
+ * </file>
+ * </example>
+ *
+ *
+ */
+
+/**
+ * @ngdoc method
+ * @name $httpBackend#when
+ * @module ngMockE2E
+ * @description
+ * Creates a new backend definition.
+ *
+ * @param {string} method HTTP method.
+ * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+ *   and returns true if the url matches the current definition.
+ * @param {(string|RegExp)=} data HTTP request body.
+ * @param {(Object|function(Object))=} headers HTTP headers or function that receives http header
+ *   object and returns true if the headers match the current definition.
+ * @param {(Array)=} keys Array of keys to assign to regex matches in request url described on
+ *   {@link ngMock.$httpBackend $httpBackend mock}.
+ * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
+ *   control how a matched request is handled. You can save this object for later use and invoke
+ *   `respond` or `passThrough` again in order to change how a matched request is handled.
+ *
+ *  - respond –
+ *    ```
+ *    { function([status,] data[, headers, statusText])
+ *    | function(function(method, url, data, headers, params)}
+ *    ```
+ *    – The respond method takes a set of static data to be returned or a function that can return
+ *    an array containing response status (number), response data (Array|Object|string), response
+ *    headers (Object), and the text for the status (string).
+ *  - passThrough – `{function()}` – Any request matching a backend definition with
+ *    `passThrough` handler will be passed through to the real backend (an XHR request will be made
+ *    to the server.)
+ *  - Both methods return the `requestHandler` object for possible overrides.
+ */
+
+/**
+ * @ngdoc method
+ * @name $httpBackend#whenGET
+ * @module ngMockE2E
+ * @description
+ * Creates a new backend definition for GET requests. For more info see `when()`.
+ *
+ * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+ *   and returns true if the url matches the current definition.
+ * @param {(Object|function(Object))=} headers HTTP headers.
+ * @param {(Array)=} keys Array of keys to assign to regex matches in request url described on
+ *   {@link ngMock.$httpBackend $httpBackend mock}.
+ * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
+ *   control how a matched request is handled. You can save this object for later use and invoke
+ *   `respond` or `passThrough` again in order to change how a matched request is handled.
+ */
+
+/**
+ * @ngdoc method
+ * @name $httpBackend#whenHEAD
+ * @module ngMockE2E
+ * @description
+ * Creates a new backend definition for HEAD requests. For more info see `when()`.
+ *
+ * @param {string|RegExp|function(string)} url HTTP url or function that receives a url
+ *   and returns true if the url matches the current definition.
+ * @param {(Object|function(Object))=} headers HTTP headers.
+ * @param {(Array)=} keys Array of keys to assign to regex matches in request url described on
+ *   {@link ngMock.$httpBackend $httpBackend mock}.
+ * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
+ *   control how a matched request is handled. You can save this object for later use and invoke
+ *   `respond` or `passThrough` again in order to change how a matched request is handled.
+ */
+
+/**
+ * @ngdoc method
+ * @name $httpBackend#whenDELETE
+ * @module ngMockE2E
+ * @description
+ * Creates a new backend definition for DELETE requests. For more info see `when()`.
+ *
+ * @param {string|RegExp|function(string)} url HTTP url or function th

<TRUNCATED>


[14/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-um.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-um.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-um.js
new file mode 100644
index 0000000..5c47c05
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-um.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, MMMM d, y",
+    "longDate": "MMMM d, y",
+    "medium": "MMM d, y h:mm:ss a",
+    "mediumDate": "MMM d, y",
+    "mediumTime": "h:mm:ss a",
+    "short": "M/d/yy h:mm a",
+    "shortDate": "M/d/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-um",
+  "localeID": "en_UM",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-us.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-us.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-us.js
new file mode 100644
index 0000000..515632a
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-us.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, MMMM d, y",
+    "longDate": "MMMM d, y",
+    "medium": "MMM d, y h:mm:ss a",
+    "mediumDate": "MMM d, y",
+    "mediumTime": "h:mm:ss a",
+    "short": "M/d/yy h:mm a",
+    "shortDate": "M/d/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-us",
+  "localeID": "en_US",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-vc.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-vc.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-vc.js
new file mode 100644
index 0000000..3e1d2f6
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-vc.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-vc",
+  "localeID": "en_VC",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-vg.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-vg.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-vg.js
new file mode 100644
index 0000000..64fc920
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-vg.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-vg",
+  "localeID": "en_VG",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-vi.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-vi.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-vi.js
new file mode 100644
index 0000000..47ecf3a
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-vi.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, MMMM d, y",
+    "longDate": "MMMM d, y",
+    "medium": "MMM d, y h:mm:ss a",
+    "mediumDate": "MMM d, y",
+    "mediumTime": "h:mm:ss a",
+    "short": "M/d/yy h:mm a",
+    "shortDate": "M/d/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-vi",
+  "localeID": "en_VI",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-vu.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-vu.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-vu.js
new file mode 100644
index 0000000..61bf223
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-vu.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "VUV",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-vu",
+  "localeID": "en_VU",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ws.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ws.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ws.js
new file mode 100644
index 0000000..89b3a13
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ws.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "WST",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-ws",
+  "localeID": "en_WS",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-za.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-za.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-za.js
new file mode 100644
index 0000000..65ce4d7
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-za.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, dd MMMM y",
+    "longDate": "dd MMMM y",
+    "medium": "dd MMM y h:mm:ss a",
+    "mediumDate": "dd MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "y/MM/dd h:mm a",
+    "shortDate": "y/MM/dd",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "R",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-za",
+  "localeID": "en_ZA",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-zm.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-zm.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-zm.js
new file mode 100644
index 0000000..0b5d5fc
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-zm.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "ZMW",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-zm",
+  "localeID": "en_ZM",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-zw.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-zw.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-zw.js
new file mode 100644
index 0000000..2f81e30
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-zw.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, dd MMMM y",
+    "longDate": "dd MMMM y",
+    "medium": "dd MMM,y h:mm:ss a",
+    "mediumDate": "dd MMM,y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/M/y h:mm a",
+    "shortDate": "d/M/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-zw",
+  "localeID": "en_ZW",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en.js
new file mode 100644
index 0000000..f794bab
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, MMMM d, y",
+    "longDate": "MMMM d, y",
+    "medium": "MMM d, y h:mm:ss a",
+    "mediumDate": "MMM d, y",
+    "mediumTime": "h:mm:ss a",
+    "short": "M/d/yy h:mm a",
+    "shortDate": "M/d/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en",
+  "localeID": "en",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_eo-001.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_eo-001.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_eo-001.js
new file mode 100644
index 0000000..53fb0f7
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_eo-001.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "atm",
+      "ptm"
+    ],
+    "DAY": [
+      "diman\u0109o",
+      "lundo",
+      "mardo",
+      "merkredo",
+      "\u0135a\u016ddo",
+      "vendredo",
+      "sabato"
+    ],
+    "ERANAMES": [
+      "aK",
+      "pK"
+    ],
+    "ERAS": [
+      "aK",
+      "pK"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "januaro",
+      "februaro",
+      "marto",
+      "aprilo",
+      "majo",
+      "junio",
+      "julio",
+      "a\u016dgusto",
+      "septembro",
+      "oktobro",
+      "novembro",
+      "decembro"
+    ],
+    "SHORTDAY": [
+      "di",
+      "lu",
+      "ma",
+      "me",
+      "\u0135a",
+      "ve",
+      "sa"
+    ],
+    "SHORTMONTH": [
+      "jan",
+      "feb",
+      "mar",
+      "apr",
+      "maj",
+      "jun",
+      "jul",
+      "a\u016dg",
+      "sep",
+      "okt",
+      "nov",
+      "dec"
+    ],
+    "STANDALONEMONTH": [
+      "januaro",
+      "februaro",
+      "marto",
+      "aprilo",
+      "majo",
+      "junio",
+      "julio",
+      "a\u016dgusto",
+      "septembro",
+      "oktobro",
+      "novembro",
+      "decembro"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d-'a' 'de' MMMM y",
+    "longDate": "y-MMMM-dd",
+    "medium": "y-MMM-dd HH:mm:ss",
+    "mediumDate": "y-MMM-dd",
+    "mediumTime": "HH:mm:ss",
+    "short": "yy-MM-dd HH:mm",
+    "shortDate": "yy-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "eo-001",
+  "localeID": "eo_001",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_eo.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_eo.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_eo.js
new file mode 100644
index 0000000..7ca8ade
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_eo.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "atm",
+      "ptm"
+    ],
+    "DAY": [
+      "diman\u0109o",
+      "lundo",
+      "mardo",
+      "merkredo",
+      "\u0135a\u016ddo",
+      "vendredo",
+      "sabato"
+    ],
+    "ERANAMES": [
+      "aK",
+      "pK"
+    ],
+    "ERAS": [
+      "aK",
+      "pK"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "januaro",
+      "februaro",
+      "marto",
+      "aprilo",
+      "majo",
+      "junio",
+      "julio",
+      "a\u016dgusto",
+      "septembro",
+      "oktobro",
+      "novembro",
+      "decembro"
+    ],
+    "SHORTDAY": [
+      "di",
+      "lu",
+      "ma",
+      "me",
+      "\u0135a",
+      "ve",
+      "sa"
+    ],
+    "SHORTMONTH": [
+      "jan",
+      "feb",
+      "mar",
+      "apr",
+      "maj",
+      "jun",
+      "jul",
+      "a\u016dg",
+      "sep",
+      "okt",
+      "nov",
+      "dec"
+    ],
+    "STANDALONEMONTH": [
+      "januaro",
+      "februaro",
+      "marto",
+      "aprilo",
+      "majo",
+      "junio",
+      "julio",
+      "a\u016dgusto",
+      "septembro",
+      "oktobro",
+      "novembro",
+      "decembro"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d-'a' 'de' MMMM y",
+    "longDate": "y-MMMM-dd",
+    "medium": "y-MMM-dd HH:mm:ss",
+    "mediumDate": "y-MMM-dd",
+    "mediumTime": "HH:mm:ss",
+    "short": "yy-MM-dd HH:mm",
+    "shortDate": "yy-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "eo",
+  "localeID": "eo",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-419.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-419.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-419.js
new file mode 100644
index 0000000..ed247e7
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-419.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a. m.",
+      "p. m."
+    ],
+    "DAY": [
+      "domingo",
+      "lunes",
+      "martes",
+      "mi\u00e9rcoles",
+      "jueves",
+      "viernes",
+      "s\u00e1bado"
+    ],
+    "ERANAMES": [
+      "antes de Cristo",
+      "despu\u00e9s de Cristo"
+    ],
+    "ERAS": [
+      "a. C.",
+      "d. C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "enero",
+      "febrero",
+      "marzo",
+      "abril",
+      "mayo",
+      "junio",
+      "julio",
+      "agosto",
+      "septiembre",
+      "octubre",
+      "noviembre",
+      "diciembre"
+    ],
+    "SHORTDAY": [
+      "dom.",
+      "lun.",
+      "mar.",
+      "mi\u00e9.",
+      "jue.",
+      "vie.",
+      "s\u00e1b."
+    ],
+    "SHORTMONTH": [
+      "ene.",
+      "feb.",
+      "mar.",
+      "abr.",
+      "may.",
+      "jun.",
+      "jul.",
+      "ago.",
+      "sept.",
+      "oct.",
+      "nov.",
+      "dic."
+    ],
+    "STANDALONEMONTH": [
+      "Enero",
+      "Febrero",
+      "Marzo",
+      "Abril",
+      "Mayo",
+      "Junio",
+      "Julio",
+      "Agosto",
+      "Septiembre",
+      "Octubre",
+      "Noviembre",
+      "Diciembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d 'de' MMMM 'de' y",
+    "longDate": "d 'de' MMMM 'de' y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/M/yy h:mm a",
+    "shortDate": "d/M/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "es-419",
+  "localeID": "es_419",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-ar.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-ar.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-ar.js
new file mode 100644
index 0000000..55b28c9
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-ar.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a. m.",
+      "p. m."
+    ],
+    "DAY": [
+      "domingo",
+      "lunes",
+      "martes",
+      "mi\u00e9rcoles",
+      "jueves",
+      "viernes",
+      "s\u00e1bado"
+    ],
+    "ERANAMES": [
+      "antes de Cristo",
+      "despu\u00e9s de Cristo"
+    ],
+    "ERAS": [
+      "a. C.",
+      "d. C."
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "enero",
+      "febrero",
+      "marzo",
+      "abril",
+      "mayo",
+      "junio",
+      "julio",
+      "agosto",
+      "septiembre",
+      "octubre",
+      "noviembre",
+      "diciembre"
+    ],
+    "SHORTDAY": [
+      "dom.",
+      "lun.",
+      "mar.",
+      "mi\u00e9.",
+      "jue.",
+      "vie.",
+      "s\u00e1b."
+    ],
+    "SHORTMONTH": [
+      "ene.",
+      "feb.",
+      "mar.",
+      "abr.",
+      "may.",
+      "jun.",
+      "jul.",
+      "ago.",
+      "sept.",
+      "oct.",
+      "nov.",
+      "dic."
+    ],
+    "STANDALONEMONTH": [
+      "Enero",
+      "Febrero",
+      "Marzo",
+      "Abril",
+      "Mayo",
+      "Junio",
+      "Julio",
+      "Agosto",
+      "Septiembre",
+      "Octubre",
+      "Noviembre",
+      "Diciembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d 'de' MMMM 'de' y",
+    "longDate": "d 'de' MMMM 'de' y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/M/yy h:mm a",
+    "shortDate": "d/M/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "es-ar",
+  "localeID": "es_AR",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-bo.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-bo.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-bo.js
new file mode 100644
index 0000000..27bb951
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-bo.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a. m.",
+      "p. m."
+    ],
+    "DAY": [
+      "domingo",
+      "lunes",
+      "martes",
+      "mi\u00e9rcoles",
+      "jueves",
+      "viernes",
+      "s\u00e1bado"
+    ],
+    "ERANAMES": [
+      "antes de Cristo",
+      "despu\u00e9s de Cristo"
+    ],
+    "ERAS": [
+      "a. C.",
+      "d. C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "enero",
+      "febrero",
+      "marzo",
+      "abril",
+      "mayo",
+      "junio",
+      "julio",
+      "agosto",
+      "septiembre",
+      "octubre",
+      "noviembre",
+      "diciembre"
+    ],
+    "SHORTDAY": [
+      "dom.",
+      "lun.",
+      "mar.",
+      "mi\u00e9.",
+      "jue.",
+      "vie.",
+      "s\u00e1b."
+    ],
+    "SHORTMONTH": [
+      "ene.",
+      "feb.",
+      "mar.",
+      "abr.",
+      "may.",
+      "jun.",
+      "jul.",
+      "ago.",
+      "sept.",
+      "oct.",
+      "nov.",
+      "dic."
+    ],
+    "STANDALONEMONTH": [
+      "Enero",
+      "Febrero",
+      "Marzo",
+      "Abril",
+      "Mayo",
+      "Junio",
+      "Julio",
+      "Agosto",
+      "Septiembre",
+      "Octubre",
+      "Noviembre",
+      "Diciembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d 'de' MMMM 'de' y",
+    "longDate": "d 'de' MMMM 'de' y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/M/yy h:mm a",
+    "shortDate": "d/M/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Bs",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "es-bo",
+  "localeID": "es_BO",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-cl.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-cl.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-cl.js
new file mode 100644
index 0000000..f253f6f
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-cl.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a. m.",
+      "p. m."
+    ],
+    "DAY": [
+      "domingo",
+      "lunes",
+      "martes",
+      "mi\u00e9rcoles",
+      "jueves",
+      "viernes",
+      "s\u00e1bado"
+    ],
+    "ERANAMES": [
+      "antes de Cristo",
+      "despu\u00e9s de Cristo"
+    ],
+    "ERAS": [
+      "a. C.",
+      "d. C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "enero",
+      "febrero",
+      "marzo",
+      "abril",
+      "mayo",
+      "junio",
+      "julio",
+      "agosto",
+      "septiembre",
+      "octubre",
+      "noviembre",
+      "diciembre"
+    ],
+    "SHORTDAY": [
+      "dom.",
+      "lun.",
+      "mar.",
+      "mi\u00e9.",
+      "jue.",
+      "vie.",
+      "s\u00e1b."
+    ],
+    "SHORTMONTH": [
+      "ene.",
+      "feb.",
+      "mar.",
+      "abr.",
+      "may.",
+      "jun.",
+      "jul.",
+      "ago.",
+      "sept.",
+      "oct.",
+      "nov.",
+      "dic."
+    ],
+    "STANDALONEMONTH": [
+      "Enero",
+      "Febrero",
+      "Marzo",
+      "Abril",
+      "Mayo",
+      "Junio",
+      "Julio",
+      "Agosto",
+      "Septiembre",
+      "Octubre",
+      "Noviembre",
+      "Diciembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d 'de' MMMM 'de' y",
+    "longDate": "d 'de' MMMM 'de' y",
+    "medium": "dd-MM-y h:mm:ss a",
+    "mediumDate": "dd-MM-y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd-MM-yy h:mm a",
+    "shortDate": "dd-MM-yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4-",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "es-cl",
+  "localeID": "es_CL",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-co.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-co.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-co.js
new file mode 100644
index 0000000..740be11
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-co.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a. m.",
+      "p. m."
+    ],
+    "DAY": [
+      "domingo",
+      "lunes",
+      "martes",
+      "mi\u00e9rcoles",
+      "jueves",
+      "viernes",
+      "s\u00e1bado"
+    ],
+    "ERANAMES": [
+      "antes de Cristo",
+      "despu\u00e9s de Cristo"
+    ],
+    "ERAS": [
+      "a. C.",
+      "d. C."
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "enero",
+      "febrero",
+      "marzo",
+      "abril",
+      "mayo",
+      "junio",
+      "julio",
+      "agosto",
+      "septiembre",
+      "octubre",
+      "noviembre",
+      "diciembre"
+    ],
+    "SHORTDAY": [
+      "dom.",
+      "lun.",
+      "mar.",
+      "mi\u00e9.",
+      "jue.",
+      "vie.",
+      "s\u00e1b."
+    ],
+    "SHORTMONTH": [
+      "ene.",
+      "feb.",
+      "mar.",
+      "abr.",
+      "may.",
+      "jun.",
+      "jul.",
+      "ago.",
+      "sept.",
+      "oct.",
+      "nov.",
+      "dic."
+    ],
+    "STANDALONEMONTH": [
+      "Enero",
+      "Febrero",
+      "Marzo",
+      "Abril",
+      "Mayo",
+      "Junio",
+      "Julio",
+      "Agosto",
+      "Septiembre",
+      "Octubre",
+      "Noviembre",
+      "Diciembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d 'de' MMMM 'de' y",
+    "longDate": "d 'de' MMMM 'de' y",
+    "medium": "d/MM/y h:mm:ss a",
+    "mediumDate": "d/MM/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/MM/yy h:mm a",
+    "shortDate": "d/MM/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "es-co",
+  "localeID": "es_CO",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-cr.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-cr.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-cr.js
new file mode 100644
index 0000000..2e0920b
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-cr.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a. m.",
+      "p. m."
+    ],
+    "DAY": [
+      "domingo",
+      "lunes",
+      "martes",
+      "mi\u00e9rcoles",
+      "jueves",
+      "viernes",
+      "s\u00e1bado"
+    ],
+    "ERANAMES": [
+      "antes de Cristo",
+      "despu\u00e9s de Cristo"
+    ],
+    "ERAS": [
+      "a. C.",
+      "d. C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "enero",
+      "febrero",
+      "marzo",
+      "abril",
+      "mayo",
+      "junio",
+      "julio",
+      "agosto",
+      "septiembre",
+      "octubre",
+      "noviembre",
+      "diciembre"
+    ],
+    "SHORTDAY": [
+      "dom.",
+      "lun.",
+      "mar.",
+      "mi\u00e9.",
+      "jue.",
+      "vie.",
+      "s\u00e1b."
+    ],
+    "SHORTMONTH": [
+      "ene.",
+      "feb.",
+      "mar.",
+      "abr.",
+      "may.",
+      "jun.",
+      "jul.",
+      "ago.",
+      "sept.",
+      "oct.",
+      "nov.",
+      "dic."
+    ],
+    "STANDALONEMONTH": [
+      "Enero",
+      "Febrero",
+      "Marzo",
+      "Abril",
+      "Mayo",
+      "Junio",
+      "Julio",
+      "Agosto",
+      "Septiembre",
+      "Octubre",
+      "Noviembre",
+      "Diciembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d 'de' MMMM 'de' y",
+    "longDate": "d 'de' MMMM 'de' y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/M/yy h:mm a",
+    "shortDate": "d/M/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20a1",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "es-cr",
+  "localeID": "es_CR",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-cu.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-cu.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-cu.js
new file mode 100644
index 0000000..c2323a9
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-cu.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a. m.",
+      "p. m."
+    ],
+    "DAY": [
+      "domingo",
+      "lunes",
+      "martes",
+      "mi\u00e9rcoles",
+      "jueves",
+      "viernes",
+      "s\u00e1bado"
+    ],
+    "ERANAMES": [
+      "antes de Cristo",
+      "despu\u00e9s de Cristo"
+    ],
+    "ERAS": [
+      "a. C.",
+      "d. C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "enero",
+      "febrero",
+      "marzo",
+      "abril",
+      "mayo",
+      "junio",
+      "julio",
+      "agosto",
+      "septiembre",
+      "octubre",
+      "noviembre",
+      "diciembre"
+    ],
+    "SHORTDAY": [
+      "dom.",
+      "lun.",
+      "mar.",
+      "mi\u00e9.",
+      "jue.",
+      "vie.",
+      "s\u00e1b."
+    ],
+    "SHORTMONTH": [
+      "ene.",
+      "feb.",
+      "mar.",
+      "abr.",
+      "may.",
+      "jun.",
+      "jul.",
+      "ago.",
+      "sept.",
+      "oct.",
+      "nov.",
+      "dic."
+    ],
+    "STANDALONEMONTH": [
+      "Enero",
+      "Febrero",
+      "Marzo",
+      "Abril",
+      "Mayo",
+      "Junio",
+      "Julio",
+      "Agosto",
+      "Septiembre",
+      "Octubre",
+      "Noviembre",
+      "Diciembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d 'de' MMMM 'de' y",
+    "longDate": "d 'de' MMMM 'de' y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/M/yy h:mm a",
+    "shortDate": "d/M/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "es-cu",
+  "localeID": "es_CU",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-do.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-do.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-do.js
new file mode 100644
index 0000000..d2a7985
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-do.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a. m.",
+      "p. m."
+    ],
+    "DAY": [
+      "domingo",
+      "lunes",
+      "martes",
+      "mi\u00e9rcoles",
+      "jueves",
+      "viernes",
+      "s\u00e1bado"
+    ],
+    "ERANAMES": [
+      "antes de Cristo",
+      "despu\u00e9s de Cristo"
+    ],
+    "ERAS": [
+      "a. C.",
+      "d. C."
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "enero",
+      "febrero",
+      "marzo",
+      "abril",
+      "mayo",
+      "junio",
+      "julio",
+      "agosto",
+      "septiembre",
+      "octubre",
+      "noviembre",
+      "diciembre"
+    ],
+    "SHORTDAY": [
+      "dom.",
+      "lun.",
+      "mar.",
+      "mi\u00e9.",
+      "jue.",
+      "vie.",
+      "s\u00e1b."
+    ],
+    "SHORTMONTH": [
+      "ene.",
+      "feb.",
+      "mar.",
+      "abr.",
+      "may.",
+      "jun.",
+      "jul.",
+      "ago.",
+      "sept.",
+      "oct.",
+      "nov.",
+      "dic."
+    ],
+    "STANDALONEMONTH": [
+      "Enero",
+      "Febrero",
+      "Marzo",
+      "Abril",
+      "Mayo",
+      "Junio",
+      "Julio",
+      "Agosto",
+      "Septiembre",
+      "Octubre",
+      "Noviembre",
+      "Diciembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d 'de' MMMM 'de' y",
+    "longDate": "d 'de' MMMM 'de' y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/M/yy h:mm a",
+    "shortDate": "d/M/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "es-do",
+  "localeID": "es_DO",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-ea.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-ea.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-ea.js
new file mode 100644
index 0000000..59fb667
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-ea.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a. m.",
+      "p. m."
+    ],
+    "DAY": [
+      "domingo",
+      "lunes",
+      "martes",
+      "mi\u00e9rcoles",
+      "jueves",
+      "viernes",
+      "s\u00e1bado"
+    ],
+    "ERANAMES": [
+      "antes de Cristo",
+      "despu\u00e9s de Cristo"
+    ],
+    "ERAS": [
+      "a. C.",
+      "d. C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "enero",
+      "febrero",
+      "marzo",
+      "abril",
+      "mayo",
+      "junio",
+      "julio",
+      "agosto",
+      "septiembre",
+      "octubre",
+      "noviembre",
+      "diciembre"
+    ],
+    "SHORTDAY": [
+      "dom.",
+      "lun.",
+      "mar.",
+      "mi\u00e9.",
+      "jue.",
+      "vie.",
+      "s\u00e1b."
+    ],
+    "SHORTMONTH": [
+      "ene.",
+      "feb.",
+      "mar.",
+      "abr.",
+      "may.",
+      "jun.",
+      "jul.",
+      "ago.",
+      "sept.",
+      "oct.",
+      "nov.",
+      "dic."
+    ],
+    "STANDALONEMONTH": [
+      "Enero",
+      "Febrero",
+      "Marzo",
+      "Abril",
+      "Mayo",
+      "Junio",
+      "Julio",
+      "Agosto",
+      "Septiembre",
+      "Octubre",
+      "Noviembre",
+      "Diciembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d 'de' MMMM 'de' y",
+    "longDate": "d 'de' MMMM 'de' y",
+    "medium": "d MMM y H:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "H:mm:ss",
+    "short": "d/M/yy H:mm",
+    "shortDate": "d/M/yy",
+    "shortTime": "H:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "es-ea",
+  "localeID": "es_EA",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-ec.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-ec.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-ec.js
new file mode 100644
index 0000000..0659051
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-ec.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a. m.",
+      "p. m."
+    ],
+    "DAY": [
+      "domingo",
+      "lunes",
+      "martes",
+      "mi\u00e9rcoles",
+      "jueves",
+      "viernes",
+      "s\u00e1bado"
+    ],
+    "ERANAMES": [
+      "antes de Cristo",
+      "despu\u00e9s de Cristo"
+    ],
+    "ERAS": [
+      "a. C.",
+      "d. C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "enero",
+      "febrero",
+      "marzo",
+      "abril",
+      "mayo",
+      "junio",
+      "julio",
+      "agosto",
+      "septiembre",
+      "octubre",
+      "noviembre",
+      "diciembre"
+    ],
+    "SHORTDAY": [
+      "dom.",
+      "lun.",
+      "mar.",
+      "mi\u00e9.",
+      "jue.",
+      "vie.",
+      "s\u00e1b."
+    ],
+    "SHORTMONTH": [
+      "ene.",
+      "feb.",
+      "mar.",
+      "abr.",
+      "may.",
+      "jun.",
+      "jul.",
+      "ago.",
+      "sept.",
+      "oct.",
+      "nov.",
+      "dic."
+    ],
+    "STANDALONEMONTH": [
+      "Enero",
+      "Febrero",
+      "Marzo",
+      "Abril",
+      "Mayo",
+      "Junio",
+      "Julio",
+      "Agosto",
+      "Septiembre",
+      "Octubre",
+      "Noviembre",
+      "Diciembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d 'de' MMMM 'de' y",
+    "longDate": "d 'de' MMMM 'de' y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/M/yy h:mm a",
+    "shortDate": "d/M/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4-",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "es-ec",
+  "localeID": "es_EC",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-es.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-es.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-es.js
new file mode 100644
index 0000000..454bbd6
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-es.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a. m.",
+      "p. m."
+    ],
+    "DAY": [
+      "domingo",
+      "lunes",
+      "martes",
+      "mi\u00e9rcoles",
+      "jueves",
+      "viernes",
+      "s\u00e1bado"
+    ],
+    "ERANAMES": [
+      "antes de Cristo",
+      "despu\u00e9s de Cristo"
+    ],
+    "ERAS": [
+      "a. C.",
+      "d. C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "enero",
+      "febrero",
+      "marzo",
+      "abril",
+      "mayo",
+      "junio",
+      "julio",
+      "agosto",
+      "septiembre",
+      "octubre",
+      "noviembre",
+      "diciembre"
+    ],
+    "SHORTDAY": [
+      "dom.",
+      "lun.",
+      "mar.",
+      "mi\u00e9.",
+      "jue.",
+      "vie.",
+      "s\u00e1b."
+    ],
+    "SHORTMONTH": [
+      "ene.",
+      "feb.",
+      "mar.",
+      "abr.",
+      "may.",
+      "jun.",
+      "jul.",
+      "ago.",
+      "sept.",
+      "oct.",
+      "nov.",
+      "dic."
+    ],
+    "STANDALONEMONTH": [
+      "Enero",
+      "Febrero",
+      "Marzo",
+      "Abril",
+      "Mayo",
+      "Junio",
+      "Julio",
+      "Agosto",
+      "Septiembre",
+      "Octubre",
+      "Noviembre",
+      "Diciembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d 'de' MMMM 'de' y",
+    "longDate": "d 'de' MMMM 'de' y",
+    "medium": "d MMM y H:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "H:mm:ss",
+    "short": "d/M/yy H:mm",
+    "shortDate": "d/M/yy",
+    "shortTime": "H:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "es-es",
+  "localeID": "es_ES",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-gq.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-gq.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-gq.js
new file mode 100644
index 0000000..a21f08a
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-gq.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a. m.",
+      "p. m."
+    ],
+    "DAY": [
+      "domingo",
+      "lunes",
+      "martes",
+      "mi\u00e9rcoles",
+      "jueves",
+      "viernes",
+      "s\u00e1bado"
+    ],
+    "ERANAMES": [
+      "antes de Cristo",
+      "despu\u00e9s de Cristo"
+    ],
+    "ERAS": [
+      "a. C.",
+      "d. C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "enero",
+      "febrero",
+      "marzo",
+      "abril",
+      "mayo",
+      "junio",
+      "julio",
+      "agosto",
+      "septiembre",
+      "octubre",
+      "noviembre",
+      "diciembre"
+    ],
+    "SHORTDAY": [
+      "dom.",
+      "lun.",
+      "mar.",
+      "mi\u00e9.",
+      "jue.",
+      "vie.",
+      "s\u00e1b."
+    ],
+    "SHORTMONTH": [
+      "ene.",
+      "feb.",
+      "mar.",
+      "abr.",
+      "may.",
+      "jun.",
+      "jul.",
+      "ago.",
+      "sept.",
+      "oct.",
+      "nov.",
+      "dic."
+    ],
+    "STANDALONEMONTH": [
+      "Enero",
+      "Febrero",
+      "Marzo",
+      "Abril",
+      "Mayo",
+      "Junio",
+      "Julio",
+      "Agosto",
+      "Septiembre",
+      "Octubre",
+      "Noviembre",
+      "Diciembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d 'de' MMMM 'de' y",
+    "longDate": "d 'de' MMMM 'de' y",
+    "medium": "d MMM y H:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "H:mm:ss",
+    "short": "d/M/yy H:mm",
+    "shortDate": "d/M/yy",
+    "shortTime": "H:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "es-gq",
+  "localeID": "es_GQ",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-gt.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-gt.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-gt.js
new file mode 100644
index 0000000..69e65c1
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-gt.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a. m.",
+      "p. m."
+    ],
+    "DAY": [
+      "domingo",
+      "lunes",
+      "martes",
+      "mi\u00e9rcoles",
+      "jueves",
+      "viernes",
+      "s\u00e1bado"
+    ],
+    "ERANAMES": [
+      "antes de Cristo",
+      "despu\u00e9s de Cristo"
+    ],
+    "ERAS": [
+      "a. C.",
+      "d. C."
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "enero",
+      "febrero",
+      "marzo",
+      "abril",
+      "mayo",
+      "junio",
+      "julio",
+      "agosto",
+      "septiembre",
+      "octubre",
+      "noviembre",
+      "diciembre"
+    ],
+    "SHORTDAY": [
+      "dom.",
+      "lun.",
+      "mar.",
+      "mi\u00e9.",
+      "jue.",
+      "vie.",
+      "s\u00e1b."
+    ],
+    "SHORTMONTH": [
+      "ene.",
+      "feb.",
+      "mar.",
+      "abr.",
+      "may.",
+      "jun.",
+      "jul.",
+      "ago.",
+      "sept.",
+      "oct.",
+      "nov.",
+      "dic."
+    ],
+    "STANDALONEMONTH": [
+      "Enero",
+      "Febrero",
+      "Marzo",
+      "Abril",
+      "Mayo",
+      "Junio",
+      "Julio",
+      "Agosto",
+      "Septiembre",
+      "Octubre",
+      "Noviembre",
+      "Diciembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d 'de' MMMM 'de' y",
+    "longDate": "d 'de' MMMM 'de' y",
+    "medium": "d/MM/y h:mm:ss a",
+    "mediumDate": "d/MM/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/MM/yy h:mm a",
+    "shortDate": "d/MM/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Q",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "es-gt",
+  "localeID": "es_GT",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-hn.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-hn.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-hn.js
new file mode 100644
index 0000000..6b88ccc
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-hn.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a. m.",
+      "p. m."
+    ],
+    "DAY": [
+      "domingo",
+      "lunes",
+      "martes",
+      "mi\u00e9rcoles",
+      "jueves",
+      "viernes",
+      "s\u00e1bado"
+    ],
+    "ERANAMES": [
+      "antes de Cristo",
+      "despu\u00e9s de Cristo"
+    ],
+    "ERAS": [
+      "a. C.",
+      "d. C."
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "enero",
+      "febrero",
+      "marzo",
+      "abril",
+      "mayo",
+      "junio",
+      "julio",
+      "agosto",
+      "septiembre",
+      "octubre",
+      "noviembre",
+      "diciembre"
+    ],
+    "SHORTDAY": [
+      "dom.",
+      "lun.",
+      "mar.",
+      "mi\u00e9.",
+      "jue.",
+      "vie.",
+      "s\u00e1b."
+    ],
+    "SHORTMONTH": [
+      "ene.",
+      "feb.",
+      "mar.",
+      "abr.",
+      "may.",
+      "jun.",
+      "jul.",
+      "ago.",
+      "sept.",
+      "oct.",
+      "nov.",
+      "dic."
+    ],
+    "STANDALONEMONTH": [
+      "Enero",
+      "Febrero",
+      "Marzo",
+      "Abril",
+      "Mayo",
+      "Junio",
+      "Julio",
+      "Agosto",
+      "Septiembre",
+      "Octubre",
+      "Noviembre",
+      "Diciembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE dd 'de' MMMM 'de' y",
+    "longDate": "dd 'de' MMMM 'de' y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/M/yy h:mm a",
+    "shortDate": "d/M/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "L",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "es-hn",
+  "localeID": "es_HN",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);



[03/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ms-latn-sg.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ms-latn-sg.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ms-latn-sg.js
new file mode 100644
index 0000000..74c1c30
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ms-latn-sg.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "PG",
+      "PTG"
+    ],
+    "DAY": [
+      "Ahad",
+      "Isnin",
+      "Selasa",
+      "Rabu",
+      "Khamis",
+      "Jumaat",
+      "Sabtu"
+    ],
+    "ERANAMES": [
+      "S.M.",
+      "TM"
+    ],
+    "ERAS": [
+      "S.M.",
+      "TM"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Januari",
+      "Februari",
+      "Mac",
+      "April",
+      "Mei",
+      "Jun",
+      "Julai",
+      "Ogos",
+      "September",
+      "Oktober",
+      "November",
+      "Disember"
+    ],
+    "SHORTDAY": [
+      "Ahd",
+      "Isn",
+      "Sel",
+      "Rab",
+      "Kha",
+      "Jum",
+      "Sab"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mac",
+      "Apr",
+      "Mei",
+      "Jun",
+      "Jul",
+      "Ogo",
+      "Sep",
+      "Okt",
+      "Nov",
+      "Dis"
+    ],
+    "STANDALONEMONTH": [
+      "Januari",
+      "Februari",
+      "Mac",
+      "April",
+      "Mei",
+      "Jun",
+      "Julai",
+      "Ogos",
+      "September",
+      "Oktober",
+      "November",
+      "Disember"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/MM/yy h:mm a",
+    "shortDate": "d/MM/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ms-latn-sg",
+  "localeID": "ms_Latn_SG",
+  "pluralCat": function(n, opt_precision) {  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ms-latn.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ms-latn.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ms-latn.js
new file mode 100644
index 0000000..43a3102
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ms-latn.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "PG",
+      "PTG"
+    ],
+    "DAY": [
+      "Ahad",
+      "Isnin",
+      "Selasa",
+      "Rabu",
+      "Khamis",
+      "Jumaat",
+      "Sabtu"
+    ],
+    "ERANAMES": [
+      "S.M.",
+      "TM"
+    ],
+    "ERAS": [
+      "S.M.",
+      "TM"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Januari",
+      "Februari",
+      "Mac",
+      "April",
+      "Mei",
+      "Jun",
+      "Julai",
+      "Ogos",
+      "September",
+      "Oktober",
+      "November",
+      "Disember"
+    ],
+    "SHORTDAY": [
+      "Ahd",
+      "Isn",
+      "Sel",
+      "Rab",
+      "Kha",
+      "Jum",
+      "Sab"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mac",
+      "Apr",
+      "Mei",
+      "Jun",
+      "Jul",
+      "Ogo",
+      "Sep",
+      "Okt",
+      "Nov",
+      "Dis"
+    ],
+    "STANDALONEMONTH": [
+      "Januari",
+      "Februari",
+      "Mac",
+      "April",
+      "Mei",
+      "Jun",
+      "Julai",
+      "Ogos",
+      "September",
+      "Oktober",
+      "November",
+      "Disember"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/MM/yy h:mm a",
+    "shortDate": "d/MM/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "RM",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ms-latn",
+  "localeID": "ms_Latn",
+  "pluralCat": function(n, opt_precision) {  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ms.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ms.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ms.js
new file mode 100644
index 0000000..14b9b40
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ms.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "PG",
+      "PTG"
+    ],
+    "DAY": [
+      "Ahad",
+      "Isnin",
+      "Selasa",
+      "Rabu",
+      "Khamis",
+      "Jumaat",
+      "Sabtu"
+    ],
+    "ERANAMES": [
+      "S.M.",
+      "TM"
+    ],
+    "ERAS": [
+      "S.M.",
+      "TM"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Januari",
+      "Februari",
+      "Mac",
+      "April",
+      "Mei",
+      "Jun",
+      "Julai",
+      "Ogos",
+      "September",
+      "Oktober",
+      "November",
+      "Disember"
+    ],
+    "SHORTDAY": [
+      "Ahd",
+      "Isn",
+      "Sel",
+      "Rab",
+      "Kha",
+      "Jum",
+      "Sab"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mac",
+      "Apr",
+      "Mei",
+      "Jun",
+      "Jul",
+      "Ogo",
+      "Sep",
+      "Okt",
+      "Nov",
+      "Dis"
+    ],
+    "STANDALONEMONTH": [
+      "Januari",
+      "Februari",
+      "Mac",
+      "April",
+      "Mei",
+      "Jun",
+      "Julai",
+      "Ogos",
+      "September",
+      "Oktober",
+      "November",
+      "Disember"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/MM/yy h:mm a",
+    "shortDate": "d/MM/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "RM",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ms",
+  "localeID": "ms",
+  "pluralCat": function(n, opt_precision) {  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mt-mt.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mt-mt.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mt-mt.js
new file mode 100644
index 0000000..bb1e89d
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mt-mt.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Il-\u0126add",
+      "It-Tnejn",
+      "It-Tlieta",
+      "L-Erbg\u0127a",
+      "Il-\u0126amis",
+      "Il-\u0120img\u0127a",
+      "Is-Sibt"
+    ],
+    "ERANAMES": [
+      "Qabel Kristu",
+      "Wara Kristu"
+    ],
+    "ERAS": [
+      "QK",
+      "WK"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "Jannar",
+      "Frar",
+      "Marzu",
+      "April",
+      "Mejju",
+      "\u0120unju",
+      "Lulju",
+      "Awwissu",
+      "Settembru",
+      "Ottubru",
+      "Novembru",
+      "Di\u010bembru"
+    ],
+    "SHORTDAY": [
+      "\u0126ad",
+      "Tne",
+      "Tli",
+      "Erb",
+      "\u0126am",
+      "\u0120im",
+      "Sib"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Fra",
+      "Mar",
+      "Apr",
+      "Mej",
+      "\u0120un",
+      "Lul",
+      "Aww",
+      "Set",
+      "Ott",
+      "Nov",
+      "Di\u010b"
+    ],
+    "STANDALONEMONTH": [
+      "Jannar",
+      "Frar",
+      "Marzu",
+      "April",
+      "Mejju",
+      "\u0120unju",
+      "Lulju",
+      "Awwissu",
+      "Settembru",
+      "Ottubru",
+      "Novembru",
+      "Di\u010bembru"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d 'ta'\u2019 MMMM y",
+    "longDate": "d 'ta'\u2019 MMMM y",
+    "medium": "dd MMM y HH:mm:ss",
+    "mediumDate": "dd MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "mt-mt",
+  "localeID": "mt_MT",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  if (n == 0 || n % 100 >= 2 && n % 100 <= 10) {    return PLURAL_CATEGORY.FEW;  }  if (n % 100 >= 11 && n % 100 <= 19) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mt.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mt.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mt.js
new file mode 100644
index 0000000..48da84e
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mt.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Il-\u0126add",
+      "It-Tnejn",
+      "It-Tlieta",
+      "L-Erbg\u0127a",
+      "Il-\u0126amis",
+      "Il-\u0120img\u0127a",
+      "Is-Sibt"
+    ],
+    "ERANAMES": [
+      "Qabel Kristu",
+      "Wara Kristu"
+    ],
+    "ERAS": [
+      "QK",
+      "WK"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "Jannar",
+      "Frar",
+      "Marzu",
+      "April",
+      "Mejju",
+      "\u0120unju",
+      "Lulju",
+      "Awwissu",
+      "Settembru",
+      "Ottubru",
+      "Novembru",
+      "Di\u010bembru"
+    ],
+    "SHORTDAY": [
+      "\u0126ad",
+      "Tne",
+      "Tli",
+      "Erb",
+      "\u0126am",
+      "\u0120im",
+      "Sib"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Fra",
+      "Mar",
+      "Apr",
+      "Mej",
+      "\u0120un",
+      "Lul",
+      "Aww",
+      "Set",
+      "Ott",
+      "Nov",
+      "Di\u010b"
+    ],
+    "STANDALONEMONTH": [
+      "Jannar",
+      "Frar",
+      "Marzu",
+      "April",
+      "Mejju",
+      "\u0120unju",
+      "Lulju",
+      "Awwissu",
+      "Settembru",
+      "Ottubru",
+      "Novembru",
+      "Di\u010bembru"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d 'ta'\u2019 MMMM y",
+    "longDate": "d 'ta'\u2019 MMMM y",
+    "medium": "dd MMM y HH:mm:ss",
+    "mediumDate": "dd MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "mt",
+  "localeID": "mt",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  if (n == 0 || n % 100 >= 2 && n % 100 <= 10) {    return PLURAL_CATEGORY.FEW;  }  if (n % 100 >= 11 && n % 100 <= 19) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mua-cm.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mua-cm.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mua-cm.js
new file mode 100644
index 0000000..2584507
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mua-cm.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "comme",
+      "lilli"
+    ],
+    "DAY": [
+      "Com\u2019yakke",
+      "Comlaa\u0257ii",
+      "Comzyii\u0257ii",
+      "Comkolle",
+      "Comkald\u01dd\u0253lii",
+      "Comgaisuu",
+      "Comzye\u0253suu"
+    ],
+    "ERANAMES": [
+      "K\u01ddPel Kristu",
+      "Pel Kristu"
+    ],
+    "ERAS": [
+      "KK",
+      "PK"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "F\u0129i Loo",
+      "Cokcwakla\u014bne",
+      "Cokcwaklii",
+      "F\u0129i Marfoo",
+      "Mad\u01dd\u01dduut\u01ddbija\u014b",
+      "Mam\u01dd\u014bgw\u00e3afahbii",
+      "Mam\u01dd\u014bgw\u00e3alii",
+      "Mad\u01ddmbii",
+      "F\u0129i D\u01dd\u0253lii",
+      "F\u0129i Munda\u014b",
+      "F\u0129i Gwahlle",
+      "F\u0129i Yuru"
+    ],
+    "SHORTDAY": [
+      "Cya",
+      "Cla",
+      "Czi",
+      "Cko",
+      "Cka",
+      "Cga",
+      "Cze"
+    ],
+    "SHORTMONTH": [
+      "FLO",
+      "CLA",
+      "CKI",
+      "FMF",
+      "MAD",
+      "MBI",
+      "MLI",
+      "MAM",
+      "FDE",
+      "FMU",
+      "FGW",
+      "FYU"
+    ],
+    "STANDALONEMONTH": [
+      "F\u0129i Loo",
+      "Cokcwakla\u014bne",
+      "Cokcwaklii",
+      "F\u0129i Marfoo",
+      "Mad\u01dd\u01dduut\u01ddbija\u014b",
+      "Mam\u01dd\u014bgw\u00e3afahbii",
+      "Mam\u01dd\u014bgw\u00e3alii",
+      "Mad\u01ddmbii",
+      "F\u0129i D\u01dd\u0253lii",
+      "F\u0129i Munda\u014b",
+      "F\u0129i Gwahlle",
+      "F\u0129i Yuru"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "mua-cm",
+  "localeID": "mua_CM",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mua.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mua.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mua.js
new file mode 100644
index 0000000..3035de8
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mua.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "comme",
+      "lilli"
+    ],
+    "DAY": [
+      "Com\u2019yakke",
+      "Comlaa\u0257ii",
+      "Comzyii\u0257ii",
+      "Comkolle",
+      "Comkald\u01dd\u0253lii",
+      "Comgaisuu",
+      "Comzye\u0253suu"
+    ],
+    "ERANAMES": [
+      "K\u01ddPel Kristu",
+      "Pel Kristu"
+    ],
+    "ERAS": [
+      "KK",
+      "PK"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "F\u0129i Loo",
+      "Cokcwakla\u014bne",
+      "Cokcwaklii",
+      "F\u0129i Marfoo",
+      "Mad\u01dd\u01dduut\u01ddbija\u014b",
+      "Mam\u01dd\u014bgw\u00e3afahbii",
+      "Mam\u01dd\u014bgw\u00e3alii",
+      "Mad\u01ddmbii",
+      "F\u0129i D\u01dd\u0253lii",
+      "F\u0129i Munda\u014b",
+      "F\u0129i Gwahlle",
+      "F\u0129i Yuru"
+    ],
+    "SHORTDAY": [
+      "Cya",
+      "Cla",
+      "Czi",
+      "Cko",
+      "Cka",
+      "Cga",
+      "Cze"
+    ],
+    "SHORTMONTH": [
+      "FLO",
+      "CLA",
+      "CKI",
+      "FMF",
+      "MAD",
+      "MBI",
+      "MLI",
+      "MAM",
+      "FDE",
+      "FMU",
+      "FGW",
+      "FYU"
+    ],
+    "STANDALONEMONTH": [
+      "F\u0129i Loo",
+      "Cokcwakla\u014bne",
+      "Cokcwaklii",
+      "F\u0129i Marfoo",
+      "Mad\u01dd\u01dduut\u01ddbija\u014b",
+      "Mam\u01dd\u014bgw\u00e3afahbii",
+      "Mam\u01dd\u014bgw\u00e3alii",
+      "Mad\u01ddmbii",
+      "F\u0129i D\u01dd\u0253lii",
+      "F\u0129i Munda\u014b",
+      "F\u0129i Gwahlle",
+      "F\u0129i Yuru"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "mua",
+  "localeID": "mua",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_my-mm.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_my-mm.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_my-mm.js
new file mode 100644
index 0000000..f39a9d1
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_my-mm.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u1014\u1036\u1014\u1000\u103a",
+      "\u100a\u1014\u1031"
+    ],
+    "DAY": [
+      "\u1010\u1014\u1004\u103a\u1039\u1002\u1014\u103d\u1031",
+      "\u1010\u1014\u1004\u103a\u1039\u101c\u102c",
+      "\u1021\u1004\u103a\u1039\u1002\u102b",
+      "\u1017\u102f\u1012\u1039\u1013\u101f\u1030\u1038",
+      "\u1000\u103c\u102c\u101e\u1015\u1010\u1031\u1038",
+      "\u101e\u1031\u102c\u1000\u103c\u102c",
+      "\u1005\u1014\u1031"
+    ],
+    "ERANAMES": [
+      "\u1001\u101b\u1005\u103a\u1010\u1031\u102c\u103a \u1019\u1015\u1031\u102b\u103a\u1019\u102e\u1000\u102c\u101c",
+      "\u1001\u101b\u1005\u103a\u1010\u1031\u102c\u103a \u1015\u1031\u102b\u103a\u1011\u103d\u1014\u103a\u1038\u1015\u103c\u102e\u1038\u1000\u102c\u101c"
+    ],
+    "ERAS": [
+      "\u1018\u102e\u1005\u102e",
+      "\u1021\u1031\u1012\u102e"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u1007\u1014\u103a\u1014\u101d\u102b\u101b\u102e",
+      "\u1016\u1031\u1016\u1031\u102c\u103a\u101d\u102b\u101b\u102e",
+      "\u1019\u1010\u103a",
+      "\u1027\u1015\u103c\u102e",
+      "\u1019\u1031",
+      "\u1007\u103d\u1014\u103a",
+      "\u1007\u1030\u101c\u102d\u102f\u1004\u103a",
+      "\u1029\u1002\u102f\u1010\u103a",
+      "\u1005\u1000\u103a\u1010\u1004\u103a\u1018\u102c",
+      "\u1021\u1031\u102c\u1000\u103a\u1010\u102d\u102f\u1018\u102c",
+      "\u1014\u102d\u102f\u101d\u1004\u103a\u1018\u102c",
+      "\u1012\u102e\u1007\u1004\u103a\u1018\u102c"
+    ],
+    "SHORTDAY": [
+      "\u1010\u1014\u1004\u103a\u1039\u1002\u1014\u103d\u1031",
+      "\u1010\u1014\u1004\u103a\u1039\u101c\u102c",
+      "\u1021\u1004\u103a\u1039\u1002\u102b",
+      "\u1017\u102f\u1012\u1039\u1013\u101f\u1030\u1038",
+      "\u1000\u103c\u102c\u101e\u1015\u1010\u1031\u1038",
+      "\u101e\u1031\u102c\u1000\u103c\u102c",
+      "\u1005\u1014\u1031"
+    ],
+    "SHORTMONTH": [
+      "\u1007\u1014\u103a",
+      "\u1016\u1031",
+      "\u1019\u1010\u103a",
+      "\u1027\u1015\u103c\u102e",
+      "\u1019\u1031",
+      "\u1007\u103d\u1014\u103a",
+      "\u1007\u1030",
+      "\u1029",
+      "\u1005\u1000\u103a",
+      "\u1021\u1031\u102c\u1000\u103a",
+      "\u1014\u102d\u102f",
+      "\u1012\u102e"
+    ],
+    "STANDALONEMONTH": [
+      "\u1007\u1014\u103a\u1014\u101d\u102b\u101b\u102e",
+      "\u1016\u1031\u1016\u1031\u102c\u103a\u101d\u102b\u101b\u102e",
+      "\u1019\u1010\u103a",
+      "\u1027\u1015\u103c\u102e",
+      "\u1019\u1031",
+      "\u1007\u103d\u1014\u103a",
+      "\u1007\u1030\u101c\u102d\u102f\u1004\u103a",
+      "\u1029\u1002\u102f\u1010\u103a",
+      "\u1005\u1000\u103a\u1010\u1004\u103a\u1018\u102c",
+      "\u1021\u1031\u102c\u1000\u103a\u1010\u102d\u102f\u1018\u102c",
+      "\u1014\u102d\u102f\u101d\u1004\u103a\u1018\u102c",
+      "\u1012\u102e\u1007\u1004\u103a\u1018\u102c"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE\u104a dd MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd-MM-yy HH:mm",
+    "shortDate": "dd-MM-yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "K",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "my-mm",
+  "localeID": "my_MM",
+  "pluralCat": function(n, opt_precision) {  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_my.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_my.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_my.js
new file mode 100644
index 0000000..610432e
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_my.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u1014\u1036\u1014\u1000\u103a",
+      "\u100a\u1014\u1031"
+    ],
+    "DAY": [
+      "\u1010\u1014\u1004\u103a\u1039\u1002\u1014\u103d\u1031",
+      "\u1010\u1014\u1004\u103a\u1039\u101c\u102c",
+      "\u1021\u1004\u103a\u1039\u1002\u102b",
+      "\u1017\u102f\u1012\u1039\u1013\u101f\u1030\u1038",
+      "\u1000\u103c\u102c\u101e\u1015\u1010\u1031\u1038",
+      "\u101e\u1031\u102c\u1000\u103c\u102c",
+      "\u1005\u1014\u1031"
+    ],
+    "ERANAMES": [
+      "\u1001\u101b\u1005\u103a\u1010\u1031\u102c\u103a \u1019\u1015\u1031\u102b\u103a\u1019\u102e\u1000\u102c\u101c",
+      "\u1001\u101b\u1005\u103a\u1010\u1031\u102c\u103a \u1015\u1031\u102b\u103a\u1011\u103d\u1014\u103a\u1038\u1015\u103c\u102e\u1038\u1000\u102c\u101c"
+    ],
+    "ERAS": [
+      "\u1018\u102e\u1005\u102e",
+      "\u1021\u1031\u1012\u102e"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u1007\u1014\u103a\u1014\u101d\u102b\u101b\u102e",
+      "\u1016\u1031\u1016\u1031\u102c\u103a\u101d\u102b\u101b\u102e",
+      "\u1019\u1010\u103a",
+      "\u1027\u1015\u103c\u102e",
+      "\u1019\u1031",
+      "\u1007\u103d\u1014\u103a",
+      "\u1007\u1030\u101c\u102d\u102f\u1004\u103a",
+      "\u1029\u1002\u102f\u1010\u103a",
+      "\u1005\u1000\u103a\u1010\u1004\u103a\u1018\u102c",
+      "\u1021\u1031\u102c\u1000\u103a\u1010\u102d\u102f\u1018\u102c",
+      "\u1014\u102d\u102f\u101d\u1004\u103a\u1018\u102c",
+      "\u1012\u102e\u1007\u1004\u103a\u1018\u102c"
+    ],
+    "SHORTDAY": [
+      "\u1010\u1014\u1004\u103a\u1039\u1002\u1014\u103d\u1031",
+      "\u1010\u1014\u1004\u103a\u1039\u101c\u102c",
+      "\u1021\u1004\u103a\u1039\u1002\u102b",
+      "\u1017\u102f\u1012\u1039\u1013\u101f\u1030\u1038",
+      "\u1000\u103c\u102c\u101e\u1015\u1010\u1031\u1038",
+      "\u101e\u1031\u102c\u1000\u103c\u102c",
+      "\u1005\u1014\u1031"
+    ],
+    "SHORTMONTH": [
+      "\u1007\u1014\u103a",
+      "\u1016\u1031",
+      "\u1019\u1010\u103a",
+      "\u1027\u1015\u103c\u102e",
+      "\u1019\u1031",
+      "\u1007\u103d\u1014\u103a",
+      "\u1007\u1030",
+      "\u1029",
+      "\u1005\u1000\u103a",
+      "\u1021\u1031\u102c\u1000\u103a",
+      "\u1014\u102d\u102f",
+      "\u1012\u102e"
+    ],
+    "STANDALONEMONTH": [
+      "\u1007\u1014\u103a\u1014\u101d\u102b\u101b\u102e",
+      "\u1016\u1031\u1016\u1031\u102c\u103a\u101d\u102b\u101b\u102e",
+      "\u1019\u1010\u103a",
+      "\u1027\u1015\u103c\u102e",
+      "\u1019\u1031",
+      "\u1007\u103d\u1014\u103a",
+      "\u1007\u1030\u101c\u102d\u102f\u1004\u103a",
+      "\u1029\u1002\u102f\u1010\u103a",
+      "\u1005\u1000\u103a\u1010\u1004\u103a\u1018\u102c",
+      "\u1021\u1031\u102c\u1000\u103a\u1010\u102d\u102f\u1018\u102c",
+      "\u1014\u102d\u102f\u101d\u1004\u103a\u1018\u102c",
+      "\u1012\u102e\u1007\u1004\u103a\u1018\u102c"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE\u104a dd MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd-MM-yy HH:mm",
+    "shortDate": "dd-MM-yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "K",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "my",
+  "localeID": "my",
+  "pluralCat": function(n, opt_precision) {  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_naq-na.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_naq-na.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_naq-na.js
new file mode 100644
index 0000000..89b0ae4
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_naq-na.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u01c1goagas",
+      "\u01c3uias"
+    ],
+    "DAY": [
+      "Sontaxtsees",
+      "Mantaxtsees",
+      "Denstaxtsees",
+      "Wunstaxtsees",
+      "Dondertaxtsees",
+      "Fraitaxtsees",
+      "Satertaxtsees"
+    ],
+    "ERANAMES": [
+      "Xristub ai\u01c3\u00e2",
+      "Xristub khao\u01c3g\u00e2"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u01c3Khanni",
+      "\u01c3Khan\u01c0g\u00f4ab",
+      "\u01c0Khuu\u01c1kh\u00e2b",
+      "\u01c3H\u00f4a\u01c2khaib",
+      "\u01c3Khaits\u00e2b",
+      "Gama\u01c0aeb",
+      "\u01c2Khoesaob",
+      "Ao\u01c1khuum\u00fb\u01c1kh\u00e2b",
+      "Tara\u01c0khuum\u00fb\u01c1kh\u00e2b",
+      "\u01c2N\u00fb\u01c1n\u00e2iseb",
+      "\u01c0Hoo\u01c2gaeb",
+      "H\u00f4asore\u01c1kh\u00e2b"
+    ],
+    "SHORTDAY": [
+      "Son",
+      "Ma",
+      "De",
+      "Wu",
+      "Do",
+      "Fr",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "\u01c3Khanni",
+      "\u01c3Khan\u01c0g\u00f4ab",
+      "\u01c0Khuu\u01c1kh\u00e2b",
+      "\u01c3H\u00f4a\u01c2khaib",
+      "\u01c3Khaits\u00e2b",
+      "Gama\u01c0aeb",
+      "\u01c2Khoesaob",
+      "Ao\u01c1khuum\u00fb\u01c1kh\u00e2b",
+      "Tara\u01c0khuum\u00fb\u01c1kh\u00e2b",
+      "\u01c2N\u00fb\u01c1n\u00e2iseb",
+      "\u01c0Hoo\u01c2gaeb",
+      "H\u00f4asore\u01c1kh\u00e2b"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "naq-na",
+  "localeID": "naq_NA",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_naq.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_naq.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_naq.js
new file mode 100644
index 0000000..e4297ea
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_naq.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u01c1goagas",
+      "\u01c3uias"
+    ],
+    "DAY": [
+      "Sontaxtsees",
+      "Mantaxtsees",
+      "Denstaxtsees",
+      "Wunstaxtsees",
+      "Dondertaxtsees",
+      "Fraitaxtsees",
+      "Satertaxtsees"
+    ],
+    "ERANAMES": [
+      "Xristub ai\u01c3\u00e2",
+      "Xristub khao\u01c3g\u00e2"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u01c3Khanni",
+      "\u01c3Khan\u01c0g\u00f4ab",
+      "\u01c0Khuu\u01c1kh\u00e2b",
+      "\u01c3H\u00f4a\u01c2khaib",
+      "\u01c3Khaits\u00e2b",
+      "Gama\u01c0aeb",
+      "\u01c2Khoesaob",
+      "Ao\u01c1khuum\u00fb\u01c1kh\u00e2b",
+      "Tara\u01c0khuum\u00fb\u01c1kh\u00e2b",
+      "\u01c2N\u00fb\u01c1n\u00e2iseb",
+      "\u01c0Hoo\u01c2gaeb",
+      "H\u00f4asore\u01c1kh\u00e2b"
+    ],
+    "SHORTDAY": [
+      "Son",
+      "Ma",
+      "De",
+      "Wu",
+      "Do",
+      "Fr",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "\u01c3Khanni",
+      "\u01c3Khan\u01c0g\u00f4ab",
+      "\u01c0Khuu\u01c1kh\u00e2b",
+      "\u01c3H\u00f4a\u01c2khaib",
+      "\u01c3Khaits\u00e2b",
+      "Gama\u01c0aeb",
+      "\u01c2Khoesaob",
+      "Ao\u01c1khuum\u00fb\u01c1kh\u00e2b",
+      "Tara\u01c0khuum\u00fb\u01c1kh\u00e2b",
+      "\u01c2N\u00fb\u01c1n\u00e2iseb",
+      "\u01c0Hoo\u01c2gaeb",
+      "H\u00f4asore\u01c1kh\u00e2b"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "naq",
+  "localeID": "naq",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nb-no.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nb-no.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nb-no.js
new file mode 100644
index 0000000..5c3c749
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nb-no.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a.m.",
+      "p.m."
+    ],
+    "DAY": [
+      "s\u00f8ndag",
+      "mandag",
+      "tirsdag",
+      "onsdag",
+      "torsdag",
+      "fredag",
+      "l\u00f8rdag"
+    ],
+    "ERANAMES": [
+      "f.Kr.",
+      "e.Kr."
+    ],
+    "ERAS": [
+      "f.Kr.",
+      "e.Kr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "januar",
+      "februar",
+      "mars",
+      "april",
+      "mai",
+      "juni",
+      "juli",
+      "august",
+      "september",
+      "oktober",
+      "november",
+      "desember"
+    ],
+    "SHORTDAY": [
+      "s\u00f8n.",
+      "man.",
+      "tir.",
+      "ons.",
+      "tor.",
+      "fre.",
+      "l\u00f8r."
+    ],
+    "SHORTMONTH": [
+      "jan.",
+      "feb.",
+      "mar.",
+      "apr.",
+      "mai",
+      "jun.",
+      "jul.",
+      "aug.",
+      "sep.",
+      "okt.",
+      "nov.",
+      "des."
+    ],
+    "STANDALONEMONTH": [
+      "januar",
+      "februar",
+      "mars",
+      "april",
+      "mai",
+      "juni",
+      "juli",
+      "august",
+      "september",
+      "oktober",
+      "november",
+      "desember"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "d. MMM y HH.mm.ss",
+    "mediumDate": "d. MMM y",
+    "mediumTime": "HH.mm.ss",
+    "short": "dd.MM.y HH.mm",
+    "shortDate": "dd.MM.y",
+    "shortTime": "HH.mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "kr",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "nb-no",
+  "localeID": "nb_NO",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nb-sj.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nb-sj.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nb-sj.js
new file mode 100644
index 0000000..76df065
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nb-sj.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a.m.",
+      "p.m."
+    ],
+    "DAY": [
+      "s\u00f8ndag",
+      "mandag",
+      "tirsdag",
+      "onsdag",
+      "torsdag",
+      "fredag",
+      "l\u00f8rdag"
+    ],
+    "ERANAMES": [
+      "f.Kr.",
+      "e.Kr."
+    ],
+    "ERAS": [
+      "f.Kr.",
+      "e.Kr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "januar",
+      "februar",
+      "mars",
+      "april",
+      "mai",
+      "juni",
+      "juli",
+      "august",
+      "september",
+      "oktober",
+      "november",
+      "desember"
+    ],
+    "SHORTDAY": [
+      "s\u00f8n.",
+      "man.",
+      "tir.",
+      "ons.",
+      "tor.",
+      "fre.",
+      "l\u00f8r."
+    ],
+    "SHORTMONTH": [
+      "jan.",
+      "feb.",
+      "mar.",
+      "apr.",
+      "mai",
+      "jun.",
+      "jul.",
+      "aug.",
+      "sep.",
+      "okt.",
+      "nov.",
+      "des."
+    ],
+    "STANDALONEMONTH": [
+      "januar",
+      "februar",
+      "mars",
+      "april",
+      "mai",
+      "juni",
+      "juli",
+      "august",
+      "september",
+      "oktober",
+      "november",
+      "desember"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "d. MMM y HH.mm.ss",
+    "mediumDate": "d. MMM y",
+    "mediumTime": "HH.mm.ss",
+    "short": "dd.MM.y HH.mm",
+    "shortDate": "dd.MM.y",
+    "shortTime": "HH.mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "kr",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "nb-sj",
+  "localeID": "nb_SJ",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nb.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nb.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nb.js
new file mode 100644
index 0000000..3edcbba
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nb.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a.m.",
+      "p.m."
+    ],
+    "DAY": [
+      "s\u00f8ndag",
+      "mandag",
+      "tirsdag",
+      "onsdag",
+      "torsdag",
+      "fredag",
+      "l\u00f8rdag"
+    ],
+    "ERANAMES": [
+      "f.Kr.",
+      "e.Kr."
+    ],
+    "ERAS": [
+      "f.Kr.",
+      "e.Kr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "januar",
+      "februar",
+      "mars",
+      "april",
+      "mai",
+      "juni",
+      "juli",
+      "august",
+      "september",
+      "oktober",
+      "november",
+      "desember"
+    ],
+    "SHORTDAY": [
+      "s\u00f8n.",
+      "man.",
+      "tir.",
+      "ons.",
+      "tor.",
+      "fre.",
+      "l\u00f8r."
+    ],
+    "SHORTMONTH": [
+      "jan.",
+      "feb.",
+      "mar.",
+      "apr.",
+      "mai",
+      "jun.",
+      "jul.",
+      "aug.",
+      "sep.",
+      "okt.",
+      "nov.",
+      "des."
+    ],
+    "STANDALONEMONTH": [
+      "januar",
+      "februar",
+      "mars",
+      "april",
+      "mai",
+      "juni",
+      "juli",
+      "august",
+      "september",
+      "oktober",
+      "november",
+      "desember"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "d. MMM y HH.mm.ss",
+    "mediumDate": "d. MMM y",
+    "mediumTime": "HH.mm.ss",
+    "short": "dd.MM.y HH.mm",
+    "shortDate": "dd.MM.y",
+    "shortTime": "HH.mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "kr",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "nb",
+  "localeID": "nb",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nd-zw.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nd-zw.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nd-zw.js
new file mode 100644
index 0000000..701e00b
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nd-zw.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sonto",
+      "Mvulo",
+      "Sibili",
+      "Sithathu",
+      "Sine",
+      "Sihlanu",
+      "Mgqibelo"
+    ],
+    "ERANAMES": [
+      "UKristo angakabuyi",
+      "Ukristo ebuyile"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "Zibandlela",
+      "Nhlolanja",
+      "Mbimbitho",
+      "Mabasa",
+      "Nkwenkwezi",
+      "Nhlangula",
+      "Ntulikazi",
+      "Ncwabakazi",
+      "Mpandula",
+      "Mfumfu",
+      "Lwezi",
+      "Mpalakazi"
+    ],
+    "SHORTDAY": [
+      "Son",
+      "Mvu",
+      "Sib",
+      "Sit",
+      "Sin",
+      "Sih",
+      "Mgq"
+    ],
+    "SHORTMONTH": [
+      "Zib",
+      "Nhlo",
+      "Mbi",
+      "Mab",
+      "Nkw",
+      "Nhla",
+      "Ntu",
+      "Ncw",
+      "Mpan",
+      "Mfu",
+      "Lwe",
+      "Mpal"
+    ],
+    "STANDALONEMONTH": [
+      "Zibandlela",
+      "Nhlolanja",
+      "Mbimbitho",
+      "Mabasa",
+      "Nkwenkwezi",
+      "Nhlangula",
+      "Ntulikazi",
+      "Ncwabakazi",
+      "Mpandula",
+      "Mfumfu",
+      "Lwezi",
+      "Mpalakazi"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "nd-zw",
+  "localeID": "nd_ZW",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nd.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nd.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nd.js
new file mode 100644
index 0000000..5faebec
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nd.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sonto",
+      "Mvulo",
+      "Sibili",
+      "Sithathu",
+      "Sine",
+      "Sihlanu",
+      "Mgqibelo"
+    ],
+    "ERANAMES": [
+      "UKristo angakabuyi",
+      "Ukristo ebuyile"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "Zibandlela",
+      "Nhlolanja",
+      "Mbimbitho",
+      "Mabasa",
+      "Nkwenkwezi",
+      "Nhlangula",
+      "Ntulikazi",
+      "Ncwabakazi",
+      "Mpandula",
+      "Mfumfu",
+      "Lwezi",
+      "Mpalakazi"
+    ],
+    "SHORTDAY": [
+      "Son",
+      "Mvu",
+      "Sib",
+      "Sit",
+      "Sin",
+      "Sih",
+      "Mgq"
+    ],
+    "SHORTMONTH": [
+      "Zib",
+      "Nhlo",
+      "Mbi",
+      "Mab",
+      "Nkw",
+      "Nhla",
+      "Ntu",
+      "Ncw",
+      "Mpan",
+      "Mfu",
+      "Lwe",
+      "Mpal"
+    ],
+    "STANDALONEMONTH": [
+      "Zibandlela",
+      "Nhlolanja",
+      "Mbimbitho",
+      "Mabasa",
+      "Nkwenkwezi",
+      "Nhlangula",
+      "Ntulikazi",
+      "Ncwabakazi",
+      "Mpandula",
+      "Mfumfu",
+      "Lwezi",
+      "Mpalakazi"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "nd",
+  "localeID": "nd",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ne-in.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ne-in.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ne-in.js
new file mode 100644
index 0000000..a672c6d
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ne-in.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u092a\u0942\u0930\u094d\u0935\u093e\u0939\u094d\u0928",
+      "\u0905\u092a\u0930\u093e\u0939\u094d\u0928"
+    ],
+    "DAY": [
+      "\u0906\u0907\u0924\u092c\u093e\u0930",
+      "\u0938\u094b\u092e\u092c\u093e\u0930",
+      "\u092e\u0919\u094d\u0917\u0932\u092c\u093e\u0930",
+      "\u092c\u0941\u0927\u092c\u093e\u0930",
+      "\u092c\u093f\u0939\u093f\u092c\u093e\u0930",
+      "\u0936\u0941\u0915\u094d\u0930\u092c\u093e\u0930",
+      "\u0936\u0928\u093f\u092c\u093e\u0930"
+    ],
+    "ERANAMES": [
+      "\u0908\u0938\u093e \u092a\u0942\u0930\u094d\u0935",
+      "\u0938\u0928\u094d"
+    ],
+    "ERAS": [
+      "\u0908\u0938\u093e \u092a\u0942\u0930\u094d\u0935",
+      "\u0938\u0928\u094d"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u091c\u0928\u0935\u0930\u0940",
+      "\u092b\u0947\u092c\u094d\u0930\u0941\u0905\u0930\u0940",
+      "\u092e\u093e\u0930\u094d\u091a",
+      "\u0905\u092a\u094d\u0930\u093f\u0932",
+      "\u092e\u0908",
+      "\u091c\u0941\u0928",
+      "\u091c\u0941\u0932\u093e\u0908",
+      "\u0905\u0917\u0938\u094d\u091f",
+      "\u0938\u0947\u092a\u094d\u091f\u0947\u092e\u094d\u092c\u0930",
+      "\u0905\u0915\u094d\u091f\u094b\u092c\u0930",
+      "\u0928\u094b\u092d\u0947\u092e\u094d\u092c\u0930",
+      "\u0921\u093f\u0938\u0947\u092e\u094d\u092c\u0930"
+    ],
+    "SHORTDAY": [
+      "\u0906\u0907\u0924",
+      "\u0938\u094b\u092e",
+      "\u092e\u0919\u094d\u0917\u0932",
+      "\u092c\u0941\u0927",
+      "\u092c\u093f\u0939\u0940",
+      "\u0936\u0941\u0915\u094d\u0930",
+      "\u0936\u0928\u093f"
+    ],
+    "SHORTMONTH": [
+      "\u091c\u0928\u0935\u0930\u0940",
+      "\u092b\u0947\u092c\u094d\u0930\u0941\u0905\u0930\u0940",
+      "\u092e\u093e\u0930\u094d\u091a",
+      "\u0905\u092a\u094d\u0930\u093f\u0932",
+      "\u092e\u0947",
+      "\u091c\u0941\u0928",
+      "\u091c\u0941\u0932\u093e\u0908",
+      "\u0905\u0917\u0938\u094d\u091f",
+      "\u0938\u0947\u092a\u094d\u091f\u0947\u092e\u094d\u092c\u0930",
+      "\u0905\u0915\u094d\u091f\u094b\u092c\u0930",
+      "\u0928\u094b\u092d\u0947\u092e\u094d\u092c\u0930",
+      "\u0921\u093f\u0938\u0947\u092e\u094d\u092c\u0930"
+    ],
+    "STANDALONEMONTH": [
+      "\u091c\u0928\u0935\u0930\u0940",
+      "\u092b\u0947\u092c\u094d\u0930\u0941\u0905\u0930\u0940",
+      "\u092e\u093e\u0930\u094d\u091a",
+      "\u0905\u092a\u094d\u0930\u093f\u0932",
+      "\u092e\u0947",
+      "\u091c\u0941\u0928",
+      "\u091c\u0941\u0932\u093e\u0908",
+      "\u0905\u0917\u0938\u094d\u091f",
+      "\u0938\u0947\u092a\u094d\u091f\u0947\u092e\u094d\u092c\u0930",
+      "\u0905\u0915\u094d\u091f\u094b\u092c\u0930",
+      "\u0928\u094b\u092d\u0947\u092e\u094d\u092c\u0930",
+      "\u0921\u093f\u0938\u0947\u092e\u094d\u092c\u0930"
+    ],
+    "WEEKENDRANGE": [
+      6,
+      6
+    ],
+    "fullDate": "y MMMM d, EEEE",
+    "longDate": "y MMMM d",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "y-MM-dd HH:mm",
+    "shortDate": "y-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20b9",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ne-in",
+  "localeID": "ne_IN",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ne-np.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ne-np.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ne-np.js
new file mode 100644
index 0000000..2f241a7
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ne-np.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u092a\u0942\u0930\u094d\u0935\u093e\u0939\u094d\u0928",
+      "\u0905\u092a\u0930\u093e\u0939\u094d\u0928"
+    ],
+    "DAY": [
+      "\u0906\u0907\u0924\u092c\u093e\u0930",
+      "\u0938\u094b\u092e\u092c\u093e\u0930",
+      "\u092e\u0919\u094d\u0917\u0932\u092c\u093e\u0930",
+      "\u092c\u0941\u0927\u092c\u093e\u0930",
+      "\u092c\u093f\u0939\u093f\u092c\u093e\u0930",
+      "\u0936\u0941\u0915\u094d\u0930\u092c\u093e\u0930",
+      "\u0936\u0928\u093f\u092c\u093e\u0930"
+    ],
+    "ERANAMES": [
+      "\u0908\u0938\u093e \u092a\u0942\u0930\u094d\u0935",
+      "\u0938\u0928\u094d"
+    ],
+    "ERAS": [
+      "\u0908\u0938\u093e \u092a\u0942\u0930\u094d\u0935",
+      "\u0938\u0928\u094d"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u091c\u0928\u0935\u0930\u0940",
+      "\u092b\u0947\u092c\u094d\u0930\u0941\u0905\u0930\u0940",
+      "\u092e\u093e\u0930\u094d\u091a",
+      "\u0905\u092a\u094d\u0930\u093f\u0932",
+      "\u092e\u0908",
+      "\u091c\u0941\u0928",
+      "\u091c\u0941\u0932\u093e\u0908",
+      "\u0905\u0917\u0938\u094d\u091f",
+      "\u0938\u0947\u092a\u094d\u091f\u0947\u092e\u094d\u092c\u0930",
+      "\u0905\u0915\u094d\u091f\u094b\u092c\u0930",
+      "\u0928\u094b\u092d\u0947\u092e\u094d\u092c\u0930",
+      "\u0921\u093f\u0938\u0947\u092e\u094d\u092c\u0930"
+    ],
+    "SHORTDAY": [
+      "\u0906\u0907\u0924",
+      "\u0938\u094b\u092e",
+      "\u092e\u0919\u094d\u0917\u0932",
+      "\u092c\u0941\u0927",
+      "\u092c\u093f\u0939\u0940",
+      "\u0936\u0941\u0915\u094d\u0930",
+      "\u0936\u0928\u093f"
+    ],
+    "SHORTMONTH": [
+      "\u091c\u0928\u0935\u0930\u0940",
+      "\u092b\u0947\u092c\u094d\u0930\u0941\u0905\u0930\u0940",
+      "\u092e\u093e\u0930\u094d\u091a",
+      "\u0905\u092a\u094d\u0930\u093f\u0932",
+      "\u092e\u0947",
+      "\u091c\u0941\u0928",
+      "\u091c\u0941\u0932\u093e\u0908",
+      "\u0905\u0917\u0938\u094d\u091f",
+      "\u0938\u0947\u092a\u094d\u091f\u0947\u092e\u094d\u092c\u0930",
+      "\u0905\u0915\u094d\u091f\u094b\u092c\u0930",
+      "\u0928\u094b\u092d\u0947\u092e\u094d\u092c\u0930",
+      "\u0921\u093f\u0938\u0947\u092e\u094d\u092c\u0930"
+    ],
+    "STANDALONEMONTH": [
+      "\u091c\u0928\u0935\u0930\u0940",
+      "\u092b\u0947\u092c\u094d\u0930\u0941\u0905\u0930\u0940",
+      "\u092e\u093e\u0930\u094d\u091a",
+      "\u0905\u092a\u094d\u0930\u093f\u0932",
+      "\u092e\u0947",
+      "\u091c\u0941\u0928",
+      "\u091c\u0941\u0932\u093e\u0908",
+      "\u0905\u0917\u0938\u094d\u091f",
+      "\u0938\u0947\u092a\u094d\u091f\u0947\u092e\u094d\u092c\u0930",
+      "\u0905\u0915\u094d\u091f\u094b\u092c\u0930",
+      "\u0928\u094b\u092d\u0947\u092e\u094d\u092c\u0930",
+      "\u0921\u093f\u0938\u0947\u092e\u094d\u092c\u0930"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "y MMMM d, EEEE",
+    "longDate": "y MMMM d",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "y-MM-dd HH:mm",
+    "shortDate": "y-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Rs",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ne-np",
+  "localeID": "ne_NP",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ne.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ne.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ne.js
new file mode 100644
index 0000000..59b8ac0
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ne.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u092a\u0942\u0930\u094d\u0935\u093e\u0939\u094d\u0928",
+      "\u0905\u092a\u0930\u093e\u0939\u094d\u0928"
+    ],
+    "DAY": [
+      "\u0906\u0907\u0924\u092c\u093e\u0930",
+      "\u0938\u094b\u092e\u092c\u093e\u0930",
+      "\u092e\u0919\u094d\u0917\u0932\u092c\u093e\u0930",
+      "\u092c\u0941\u0927\u092c\u093e\u0930",
+      "\u092c\u093f\u0939\u093f\u092c\u093e\u0930",
+      "\u0936\u0941\u0915\u094d\u0930\u092c\u093e\u0930",
+      "\u0936\u0928\u093f\u092c\u093e\u0930"
+    ],
+    "ERANAMES": [
+      "\u0908\u0938\u093e \u092a\u0942\u0930\u094d\u0935",
+      "\u0938\u0928\u094d"
+    ],
+    "ERAS": [
+      "\u0908\u0938\u093e \u092a\u0942\u0930\u094d\u0935",
+      "\u0938\u0928\u094d"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u091c\u0928\u0935\u0930\u0940",
+      "\u092b\u0947\u092c\u094d\u0930\u0941\u0905\u0930\u0940",
+      "\u092e\u093e\u0930\u094d\u091a",
+      "\u0905\u092a\u094d\u0930\u093f\u0932",
+      "\u092e\u0908",
+      "\u091c\u0941\u0928",
+      "\u091c\u0941\u0932\u093e\u0908",
+      "\u0905\u0917\u0938\u094d\u091f",
+      "\u0938\u0947\u092a\u094d\u091f\u0947\u092e\u094d\u092c\u0930",
+      "\u0905\u0915\u094d\u091f\u094b\u092c\u0930",
+      "\u0928\u094b\u092d\u0947\u092e\u094d\u092c\u0930",
+      "\u0921\u093f\u0938\u0947\u092e\u094d\u092c\u0930"
+    ],
+    "SHORTDAY": [
+      "\u0906\u0907\u0924",
+      "\u0938\u094b\u092e",
+      "\u092e\u0919\u094d\u0917\u0932",
+      "\u092c\u0941\u0927",
+      "\u092c\u093f\u0939\u0940",
+      "\u0936\u0941\u0915\u094d\u0930",
+      "\u0936\u0928\u093f"
+    ],
+    "SHORTMONTH": [
+      "\u091c\u0928\u0935\u0930\u0940",
+      "\u092b\u0947\u092c\u094d\u0930\u0941\u0905\u0930\u0940",
+      "\u092e\u093e\u0930\u094d\u091a",
+      "\u0905\u092a\u094d\u0930\u093f\u0932",
+      "\u092e\u0947",
+      "\u091c\u0941\u0928",
+      "\u091c\u0941\u0932\u093e\u0908",
+      "\u0905\u0917\u0938\u094d\u091f",
+      "\u0938\u0947\u092a\u094d\u091f\u0947\u092e\u094d\u092c\u0930",
+      "\u0905\u0915\u094d\u091f\u094b\u092c\u0930",
+      "\u0928\u094b\u092d\u0947\u092e\u094d\u092c\u0930",
+      "\u0921\u093f\u0938\u0947\u092e\u094d\u092c\u0930"
+    ],
+    "STANDALONEMONTH": [
+      "\u091c\u0928\u0935\u0930\u0940",
+      "\u092b\u0947\u092c\u094d\u0930\u0941\u0905\u0930\u0940",
+      "\u092e\u093e\u0930\u094d\u091a",
+      "\u0905\u092a\u094d\u0930\u093f\u0932",
+      "\u092e\u0947",
+      "\u091c\u0941\u0928",
+      "\u091c\u0941\u0932\u093e\u0908",
+      "\u0905\u0917\u0938\u094d\u091f",
+      "\u0938\u0947\u092a\u094d\u091f\u0947\u092e\u094d\u092c\u0930",
+      "\u0905\u0915\u094d\u091f\u094b\u092c\u0930",
+      "\u0928\u094b\u092d\u0947\u092e\u094d\u092c\u0930",
+      "\u0921\u093f\u0938\u0947\u092e\u094d\u092c\u0930"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "y MMMM d, EEEE",
+    "longDate": "y MMMM d",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "y-MM-dd HH:mm",
+    "shortDate": "y-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Rs",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ne",
+  "localeID": "ne",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nl-aw.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nl-aw.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nl-aw.js
new file mode 100644
index 0000000..711340e
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nl-aw.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a.m.",
+      "p.m."
+    ],
+    "DAY": [
+      "zondag",
+      "maandag",
+      "dinsdag",
+      "woensdag",
+      "donderdag",
+      "vrijdag",
+      "zaterdag"
+    ],
+    "ERANAMES": [
+      "voor Christus",
+      "na Christus"
+    ],
+    "ERAS": [
+      "v.Chr.",
+      "n.Chr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "januari",
+      "februari",
+      "maart",
+      "april",
+      "mei",
+      "juni",
+      "juli",
+      "augustus",
+      "september",
+      "oktober",
+      "november",
+      "december"
+    ],
+    "SHORTDAY": [
+      "zo",
+      "ma",
+      "di",
+      "wo",
+      "do",
+      "vr",
+      "za"
+    ],
+    "SHORTMONTH": [
+      "jan.",
+      "feb.",
+      "mrt.",
+      "apr.",
+      "mei",
+      "jun.",
+      "jul.",
+      "aug.",
+      "sep.",
+      "okt.",
+      "nov.",
+      "dec."
+    ],
+    "STANDALONEMONTH": [
+      "Januari",
+      "Februari",
+      "Maart",
+      "April",
+      "Mei",
+      "Juni",
+      "Juli",
+      "Augustus",
+      "September",
+      "Oktober",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd-MM-yy HH:mm",
+    "shortDate": "dd-MM-yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Afl.",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4\u00a0-",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "nl-aw",
+  "localeID": "nl_AW",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nl-be.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nl-be.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nl-be.js
new file mode 100644
index 0000000..505cffe
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nl-be.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a.m.",
+      "p.m."
+    ],
+    "DAY": [
+      "zondag",
+      "maandag",
+      "dinsdag",
+      "woensdag",
+      "donderdag",
+      "vrijdag",
+      "zaterdag"
+    ],
+    "ERANAMES": [
+      "voor Christus",
+      "na Christus"
+    ],
+    "ERAS": [
+      "v.Chr.",
+      "n.Chr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "januari",
+      "februari",
+      "maart",
+      "april",
+      "mei",
+      "juni",
+      "juli",
+      "augustus",
+      "september",
+      "oktober",
+      "november",
+      "december"
+    ],
+    "SHORTDAY": [
+      "zo",
+      "ma",
+      "di",
+      "wo",
+      "do",
+      "vr",
+      "za"
+    ],
+    "SHORTMONTH": [
+      "jan.",
+      "feb.",
+      "mrt.",
+      "apr.",
+      "mei",
+      "jun.",
+      "jul.",
+      "aug.",
+      "sep.",
+      "okt.",
+      "nov.",
+      "dec."
+    ],
+    "STANDALONEMONTH": [
+      "Januari",
+      "Februari",
+      "Maart",
+      "April",
+      "Mei",
+      "Juni",
+      "Juli",
+      "Augustus",
+      "September",
+      "Oktober",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/MM/yy HH:mm",
+    "shortDate": "d/MM/yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "nl-be",
+  "localeID": "nl_BE",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nl-bq.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nl-bq.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nl-bq.js
new file mode 100644
index 0000000..28eb5a8
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nl-bq.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a.m.",
+      "p.m."
+    ],
+    "DAY": [
+      "zondag",
+      "maandag",
+      "dinsdag",
+      "woensdag",
+      "donderdag",
+      "vrijdag",
+      "zaterdag"
+    ],
+    "ERANAMES": [
+      "voor Christus",
+      "na Christus"
+    ],
+    "ERAS": [
+      "v.Chr.",
+      "n.Chr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "januari",
+      "februari",
+      "maart",
+      "april",
+      "mei",
+      "juni",
+      "juli",
+      "augustus",
+      "september",
+      "oktober",
+      "november",
+      "december"
+    ],
+    "SHORTDAY": [
+      "zo",
+      "ma",
+      "di",
+      "wo",
+      "do",
+      "vr",
+      "za"
+    ],
+    "SHORTMONTH": [
+      "jan.",
+      "feb.",
+      "mrt.",
+      "apr.",
+      "mei",
+      "jun.",
+      "jul.",
+      "aug.",
+      "sep.",
+      "okt.",
+      "nov.",
+      "dec."
+    ],
+    "STANDALONEMONTH": [
+      "Januari",
+      "Februari",
+      "Maart",
+      "April",
+      "Mei",
+      "Juni",
+      "Juli",
+      "Augustus",
+      "September",
+      "Oktober",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd-MM-yy HH:mm",
+    "shortDate": "dd-MM-yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4\u00a0-",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "nl-bq",
+  "localeID": "nl_BQ",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nl-cw.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nl-cw.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nl-cw.js
new file mode 100644
index 0000000..77aca67
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nl-cw.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a.m.",
+      "p.m."
+    ],
+    "DAY": [
+      "zondag",
+      "maandag",
+      "dinsdag",
+      "woensdag",
+      "donderdag",
+      "vrijdag",
+      "zaterdag"
+    ],
+    "ERANAMES": [
+      "voor Christus",
+      "na Christus"
+    ],
+    "ERAS": [
+      "v.Chr.",
+      "n.Chr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "januari",
+      "februari",
+      "maart",
+      "april",
+      "mei",
+      "juni",
+      "juli",
+      "augustus",
+      "september",
+      "oktober",
+      "november",
+      "december"
+    ],
+    "SHORTDAY": [
+      "zo",
+      "ma",
+      "di",
+      "wo",
+      "do",
+      "vr",
+      "za"
+    ],
+    "SHORTMONTH": [
+      "jan.",
+      "feb.",
+      "mrt.",
+      "apr.",
+      "mei",
+      "jun.",
+      "jul.",
+      "aug.",
+      "sep.",
+      "okt.",
+      "nov.",
+      "dec."
+    ],
+    "STANDALONEMONTH": [
+      "Januari",
+      "Februari",
+      "Maart",
+      "April",
+      "Mei",
+      "Juni",
+      "Juli",
+      "Augustus",
+      "September",
+      "Oktober",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd-MM-yy HH:mm",
+    "shortDate": "dd-MM-yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "NAf.",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4\u00a0-",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "nl-cw",
+  "localeID": "nl_CW",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nl-nl.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nl-nl.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nl-nl.js
new file mode 100644
index 0000000..0eb3e7c
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nl-nl.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a.m.",
+      "p.m."
+    ],
+    "DAY": [
+      "zondag",
+      "maandag",
+      "dinsdag",
+      "woensdag",
+      "donderdag",
+      "vrijdag",
+      "zaterdag"
+    ],
+    "ERANAMES": [
+      "voor Christus",
+      "na Christus"
+    ],
+    "ERAS": [
+      "v.Chr.",
+      "n.Chr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "januari",
+      "februari",
+      "maart",
+      "april",
+      "mei",
+      "juni",
+      "juli",
+      "augustus",
+      "september",
+      "oktober",
+      "november",
+      "december"
+    ],
+    "SHORTDAY": [
+      "zo",
+      "ma",
+      "di",
+      "wo",
+      "do",
+      "vr",
+      "za"
+    ],
+    "SHORTMONTH": [
+      "jan.",
+      "feb.",
+      "mrt.",
+      "apr.",
+      "mei",
+      "jun.",
+      "jul.",
+      "aug.",
+      "sep.",
+      "okt.",
+      "nov.",
+      "dec."
+    ],
+    "STANDALONEMONTH": [
+      "Januari",
+      "Februari",
+      "Maart",
+      "April",
+      "Mei",
+      "Juni",
+      "Juli",
+      "Augustus",
+      "September",
+      "Oktober",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd-MM-yy HH:mm",
+    "shortDate": "dd-MM-yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4\u00a0-",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "nl-nl",
+  "localeID": "nl_NL",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);



[45/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/style/img/alipay_active.png
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/style/img/alipay_active.png b/rocketmq-console/src/main/resources/static/style/img/alipay_active.png
new file mode 100644
index 0000000..c5e2440
Binary files /dev/null and b/rocketmq-console/src/main/resources/static/style/img/alipay_active.png differ

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/style/img/icon_user_center.png
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/style/img/icon_user_center.png b/rocketmq-console/src/main/resources/static/style/img/icon_user_center.png
new file mode 100644
index 0000000..2d978bf
Binary files /dev/null and b/rocketmq-console/src/main/resources/static/style/img/icon_user_center.png differ

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/style/img/weipay.png
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/style/img/weipay.png b/rocketmq-console/src/main/resources/static/style/img/weipay.png
new file mode 100644
index 0000000..8a8c207
Binary files /dev/null and b/rocketmq-console/src/main/resources/static/style/img/weipay.png differ

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/style/img/weipay_active.png
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/style/img/weipay_active.png b/rocketmq-console/src/main/resources/static/style/img/weipay_active.png
new file mode 100644
index 0000000..e54d862
Binary files /dev/null and b/rocketmq-console/src/main/resources/static/style/img/weipay_active.png differ

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/style/login.css
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/style/login.css b/rocketmq-console/src/main/resources/static/style/login.css
new file mode 100644
index 0000000..cb747c3
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/style/login.css
@@ -0,0 +1,12 @@
+.login-panel{
+
+}
+
+.login-panel .qrcode {
+    width: 100%;
+    hight: 100%;
+}
+
+.login-panel .validateCode {
+    /*height:20px;*/
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/style/preLoading/main.css
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/style/preLoading/main.css b/rocketmq-console/src/main/resources/static/style/preLoading/main.css
new file mode 100755
index 0000000..9f5b0b7
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/style/preLoading/main.css
@@ -0,0 +1,420 @@
+/* 
+ _____   _           _         _                        _                  
+|_   _| | |         | |       | |                      | |                 
+  | |   | |__   __ _| |_ ___  | |_ ___  _ __ ___   __ _| |_ ___   ___  ___ 
+  | |   | '_ \ / _` | __/ _ \ | __/ _ \| '_ ` _ \ / _` | __/ _ \ / _ \/ __|
+ _| |_  | | | | (_| | ||  __/ | || (_) | | | | | | (_| | || (_) |  __/\__ \
+ \___/  |_| |_|\__,_|\__\___|  \__\___/|_| |_| |_|\__,_|\__\___/ \___||___/
+
+Oh nice, welcome to the stylesheet of dreams. 
+It has it all. Classes, ID's, comments...the whole lot:)
+Enjoy responsibly!
+@ihatetomatoes
+
+*/
+
+/* ==========================================================================
+   Chrome Frame prompt
+   ========================================================================== */
+
+.chromeframe {
+    margin: 0.2em 0;
+    background: #ccc;
+    color: #000;
+    padding: 0.2em 0;
+}
+
+/* ==========================================================================
+   Author's custom styles
+   ========================================================================== */
+p {
+    line-height: 1.33em;
+    color: #7E7E7E;
+}
+h1 {
+    color: #EEEEEE;
+}
+
+#loader-wrapper {
+    position: fixed;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    z-index: 1000;
+}
+#loader {
+    display: block;
+    position: relative;
+    left: 50%;
+    top: 50%;
+    width: 150px;
+    height: 150px;
+    margin: -75px 0 0 -75px;
+    border-radius: 50%;
+    border: 3px solid transparent;
+    border-top-color: #3498db;
+
+    -webkit-animation: spin 2s linear infinite; /* Chrome, Opera 15+, Safari 5+ */
+    animation: spin 2s linear infinite; /* Chrome, Firefox 16+, IE 10+, Opera */
+
+    z-index: 1001;
+}
+
+    #loader:before {
+        content: "";
+        position: absolute;
+        top: 5px;
+        left: 5px;
+        right: 5px;
+        bottom: 5px;
+        border-radius: 50%;
+        border: 3px solid transparent;
+        border-top-color: #e74c3c;
+
+        -webkit-animation: spin 3s linear infinite; /* Chrome, Opera 15+, Safari 5+ */
+        animation: spin 3s linear infinite; /* Chrome, Firefox 16+, IE 10+, Opera */
+    }
+
+    #loader:after {
+        content: "";
+        position: absolute;
+        top: 15px;
+        left: 15px;
+        right: 15px;
+        bottom: 15px;
+        border-radius: 50%;
+        border: 3px solid transparent;
+        border-top-color: #f9c922;
+
+        -webkit-animation: spin 1.5s linear infinite; /* Chrome, Opera 15+, Safari 5+ */
+          animation: spin 1.5s linear infinite; /* Chrome, Firefox 16+, IE 10+, Opera */
+    }
+
+    @-webkit-keyframes spin {
+        0%   { 
+            -webkit-transform: rotate(0deg);  /* Chrome, Opera 15+, Safari 3.1+ */
+            -ms-transform: rotate(0deg);  /* IE 9 */
+            transform: rotate(0deg);  /* Firefox 16+, IE 10+, Opera */
+        }
+        100% {
+            -webkit-transform: rotate(360deg);  /* Chrome, Opera 15+, Safari 3.1+ */
+            -ms-transform: rotate(360deg);  /* IE 9 */
+            transform: rotate(360deg);  /* Firefox 16+, IE 10+, Opera */
+        }
+    }
+    @keyframes spin {
+        0%   { 
+            -webkit-transform: rotate(0deg);  /* Chrome, Opera 15+, Safari 3.1+ */
+            -ms-transform: rotate(0deg);  /* IE 9 */
+            transform: rotate(0deg);  /* Firefox 16+, IE 10+, Opera */
+        }
+        100% {
+            -webkit-transform: rotate(360deg);  /* Chrome, Opera 15+, Safari 3.1+ */
+            -ms-transform: rotate(360deg);  /* IE 9 */
+            transform: rotate(360deg);  /* Firefox 16+, IE 10+, Opera */
+        }
+    }
+
+    #loader-wrapper .loader-section {
+        position: fixed;
+        top: 0;
+        width: 51%;
+        height: 100%;
+        background: #222222;
+        z-index: 1000;
+        -webkit-transform: translateX(0);  /* Chrome, Opera 15+, Safari 3.1+ */
+        -ms-transform: translateX(0);  /* IE 9 */
+        transform: translateX(0);  /* Firefox 16+, IE 10+, Opera */
+    }
+
+    #loader-wrapper .loader-section.section-left {
+        left: 0;
+    }
+
+    #loader-wrapper .loader-section.section-right {
+        right: 0;
+    }
+
+    /* Loaded */
+    .loaded #loader-wrapper .loader-section.section-left {
+        -webkit-transform: translateX(-100%);  /* Chrome, Opera 15+, Safari 3.1+ */
+            -ms-transform: translateX(-100%);  /* IE 9 */
+                transform: translateX(-100%);  /* Firefox 16+, IE 10+, Opera */
+
+        -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);  
+                transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
+    }
+
+    .loaded #loader-wrapper .loader-section.section-right {
+        -webkit-transform: translateX(100%);  /* Chrome, Opera 15+, Safari 3.1+ */
+            -ms-transform: translateX(100%);  /* IE 9 */
+                transform: translateX(100%);  /* Firefox 16+, IE 10+, Opera */
+
+-webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);  
+        transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
+    }
+    
+    .loaded #loader {
+        opacity: 0;
+        -webkit-transition: all 0.3s ease-out;  
+                transition: all 0.3s ease-out;
+    }
+    .loaded #loader-wrapper {
+        visibility: hidden;
+
+        -webkit-transform: translateY(-100%);  /* Chrome, Opera 15+, Safari 3.1+ */
+            -ms-transform: translateY(-100%);  /* IE 9 */
+                transform: translateY(-100%);  /* Firefox 16+, IE 10+, Opera */
+
+        -webkit-transition: all 0.3s 1s ease-out;  
+                transition: all 0.3s 1s ease-out;
+    }
+    
+    /* JavaScript Turned Off */
+    .no-js #loader-wrapper {
+        display: none;
+    }
+    .no-js h1 {
+        color: #222222;
+    }
+
+    #content {
+        margin: 0 auto;
+        padding-bottom: 50px;
+        width: 80%;
+        max-width: 978px;
+    }  
+
+
+
+
+
+
+/* ==========================================================================
+   Helper classes
+   ========================================================================== */
+
+/*
+ * Image replacement
+ */
+
+.ir {
+    background-color: transparent;
+    border: 0;
+    overflow: hidden;
+    /* IE 6/7 fallback */
+    *text-indent: -9999px;
+}
+
+.ir:before {
+    content: "";
+    display: block;
+    width: 0;
+    height: 150%;
+}
+
+/*
+ * Hide from both screenreaders and browsers: h5bp.com/u
+ */
+
+.hidden {
+    display: none !important;
+    visibility: hidden;
+}
+
+/*
+ * Hide only visually, but have it available for screenreaders: h5bp.com/v
+ */
+
+.visuallyhidden {
+    border: 0;
+    clip: rect(0 0 0 0);
+    height: 1px;
+    margin: -1px;
+    overflow: hidden;
+    padding: 0;
+    position: absolute;
+    width: 1px;
+}
+
+/*
+ * Extends the .visuallyhidden class to allow the element to be focusable
+ * when navigated to via the keyboard: h5bp.com/p
+ */
+
+.visuallyhidden.focusable:active,
+.visuallyhidden.focusable:focus {
+    clip: auto;
+    height: auto;
+    margin: 0;
+    overflow: visible;
+    position: static;
+    width: auto;
+}
+
+/*
+ * Hide visually and from screenreaders, but maintain layout
+ */
+
+.invisible {
+    visibility: hidden;
+}
+
+/*
+ * Clearfix: contain floats
+ *
+ * For modern browsers
+ * 1. The space content is one way to avoid an Opera bug when the
+ *    `contenteditable` attribute is included anywhere else in the document.
+ *    Otherwise it causes space to appear at the top and bottom of elements
+ *    that receive the `clearfix` class.
+ * 2. The use of `table` rather than `block` is only necessary if using
+ *    `:before` to contain the top-margins of child elements.
+ */
+
+.clearfix:before,
+.clearfix:after {
+    content: " "; /* 1 */
+    display: table; /* 2 */
+}
+
+.clearfix:after {
+    clear: both;
+}
+
+/*
+ * For IE 6/7 only
+ * Include this rule to trigger hasLayout and contain floats.
+ */
+
+.clearfix {
+    *zoom: 1;
+}
+
+/* ==========================================================================
+   EXAMPLE Media Queries for Responsive Design.
+   These examples override the primary ('mobile first') styles.
+   Modify as content requires.
+   ========================================================================== */
+
+@media only screen and (min-width: 35em) {
+    /* Style adjustments for viewports that meet the condition */
+}
+
+@media print,
+       (-o-min-device-pixel-ratio: 5/4),
+       (-webkit-min-device-pixel-ratio: 1.25),
+       (min-resolution: 120dpi) {
+    /* Style adjustments for high resolution devices */
+}
+
+/* ==========================================================================
+   Print styles.
+   Inlined to avoid required HTTP connection: h5bp.com/r
+   ========================================================================== */
+
+@media print {
+    * {
+        background: transparent !important;
+        color: #000 !important; /* Black prints faster: h5bp.com/s */
+        box-shadow: none !important;
+        text-shadow: none !important;
+    }
+
+    a,
+    a:visited {
+        text-decoration: underline;
+    }
+
+    a[href]:after {
+        content: " (" attr(href) ")";
+    }
+
+    abbr[title]:after {
+        content: " (" attr(title) ")";
+    }
+
+    /*
+     * Don't show links for images, or javascript/internal links
+     */
+
+    .ir a:after,
+    a[href^="javascript:"]:after,
+    a[href^="#"]:after {
+        content: "";
+    }
+
+    pre,
+    blockquote {
+        border: 1px solid #999;
+        page-break-inside: avoid;
+    }
+
+    thead {
+        display: table-header-group; /* h5bp.com/t */
+    }
+
+    tr,
+    img {
+        page-break-inside: avoid;
+    }
+
+    img {
+        max-width: 100% !important;
+    }
+
+    @page {
+        margin: 0.5cm;
+    }
+
+    p,
+    h2,
+    h3 {
+        orphans: 3;
+        widows: 3;
+    }
+
+    h2,
+    h3 {
+        page-break-after: avoid;
+    }
+}
+
+.back-link a {
+    color: #4ca340;
+    text-decoration: none;
+    border-bottom: 1px #4ca340 solid;
+}
+.back-link a:hover,
+.back-link a:focus {
+    color: #408536;
+    text-decoration: none;
+    border-bottom: 1px #408536 solid;
+}
+h1 {
+    height: 100%;
+    /* The html and body elements cannot have any padding or margin. */
+    margin: 0;
+    font-size: 14px;
+    font-family: 'Open Sans', sans-serif;
+    font-size: 32px;
+    margin-bottom: 3px;
+}
+.entry-header {
+    text-align: left;
+    margin: 0 auto 50px auto;
+    width: 80%;
+    max-width: 978px;
+    position: relative;
+    z-index: 10001;
+}
+#demo-content {
+    padding-top: 100px;
+}
+
+/* 
+	Ok so you have made it this far, that means you are very keen to on my code. 
+	Anyway I don't really mind it. This is a great way to learn so you actually doing the right thing:)
+	Follow me @ihatetomatoes
+*/

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/style/preLoading/normalize.css
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/style/preLoading/normalize.css b/rocketmq-console/src/main/resources/static/style/preLoading/normalize.css
new file mode 100755
index 0000000..6e8e42d
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/style/preLoading/normalize.css
@@ -0,0 +1,527 @@
+/*! normalize.css v1.1.2 | MIT License | git.io/normalize */
+
+/* ==========================================================================
+   HTML5 display definitions
+   ========================================================================== */
+
+/**
+ * Correct `block` display not defined in IE 6/7/8/9 and Firefox 3.
+ */
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+nav,
+section,
+summary {
+    display: block;
+}
+
+/**
+ * Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3.
+ */
+
+audio,
+canvas,
+video {
+    display: inline-block;
+    *display: inline;
+    *zoom: 1;
+}
+
+/**
+ * Prevent modern browsers from displaying `audio` without controls.
+ * Remove excess height in iOS 5 devices.
+ */
+
+audio:not([controls]) {
+    display: none;
+    height: 0;
+}
+
+/**
+ * Address styling not present in IE 7/8/9, Firefox 3, and Safari 4.
+ * Known issue: no IE 6 support.
+ */
+
+[hidden] {
+    display: none;
+}
+
+/* ==========================================================================
+   Base
+   ========================================================================== */
+
+/**
+ * 1. Correct text resizing oddly in IE 6/7 when body `font-size` is set using
+ *    `em` units.
+ * 2. Prevent iOS text size adjust after orientation change, without disabling
+ *    user zoom.
+ */
+
+html {
+    font-size: 100%; /* 1 */
+    -ms-text-size-adjust: 100%; /* 2 */
+    -webkit-text-size-adjust: 100%; /* 2 */
+}
+
+/**
+ * Address `font-family` inconsistency between `textarea` and other form
+ * elements.
+ */
+
+html,
+button,
+input,
+select,
+textarea {
+    font-family: sans-serif;
+}
+
+/**
+ * Address margins handled incorrectly in IE 6/7.
+ */
+
+body {
+    margin: 0;
+}
+
+/* ==========================================================================
+   Links
+   ========================================================================== */
+
+/**
+ * Address `outline` inconsistency between Chrome and other browsers.
+ */
+
+a:focus {
+    outline: thin dotted;
+}
+
+/**
+ * Improve readability when focused and also mouse hovered in all browsers.
+ */
+
+a:active,
+a:hover {
+    outline: 0;
+}
+
+/* ==========================================================================
+   Typography
+   ========================================================================== */
+
+/**
+ * Address font sizes and margins set differently in IE 6/7.
+ * Address font sizes within `section` and `article` in Firefox 4+, Safari 5,
+ * and Chrome.
+ */
+
+h1 {
+    font-size: 2em;
+    margin: 0.67em 0;
+}
+
+h2 {
+    font-size: 1.5em;
+    margin: 0.83em 0;
+}
+
+h3 {
+    font-size: 1.17em;
+    margin: 1em 0;
+}
+
+h4 {
+    font-size: 1em;
+    margin: 1.33em 0;
+}
+
+h5 {
+    font-size: 0.83em;
+    margin: 1.67em 0;
+}
+
+h6 {
+    font-size: 0.67em;
+    margin: 2.33em 0;
+}
+
+/**
+ * Address styling not present in IE 7/8/9, Safari 5, and Chrome.
+ */
+
+abbr[title] {
+    border-bottom: 1px dotted;
+}
+
+/**
+ * Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome.
+ */
+
+b,
+strong {
+    font-weight: bold;
+}
+
+blockquote {
+    margin: 1em 40px;
+}
+
+/**
+ * Address styling not present in Safari 5 and Chrome.
+ */
+
+dfn {
+    font-style: italic;
+}
+
+/**
+ * Address differences between Firefox and other browsers.
+ * Known issue: no IE 6/7 normalization.
+ */
+
+hr {
+    -moz-box-sizing: content-box;
+    box-sizing: content-box;
+    height: 0;
+}
+
+/**
+ * Address styling not present in IE 6/7/8/9.
+ */
+
+mark {
+    background: #ff0;
+    color: #000;
+}
+
+/**
+ * Address margins set differently in IE 6/7.
+ */
+
+p,
+pre {
+    margin: 1em 0;
+}
+
+/**
+ * Correct font family set oddly in IE 6, Safari 4/5, and Chrome.
+ */
+
+code,
+kbd,
+pre,
+samp {
+    font-family: monospace, serif;
+    _font-family: 'courier new', monospace;
+    font-size: 1em;
+}
+
+/**
+ * Improve readability of pre-formatted text in all browsers.
+ */
+
+pre {
+    white-space: pre;
+    white-space: pre-wrap;
+    word-wrap: break-word;
+}
+
+/**
+ * Address CSS quotes not supported in IE 6/7.
+ */
+
+q {
+    quotes: none;
+}
+
+/**
+ * Address `quotes` property not supported in Safari 4.
+ */
+
+q:before,
+q:after {
+    content: '';
+    content: none;
+}
+
+/**
+ * Address inconsistent and variable font size in all browsers.
+ */
+
+small {
+    font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` affecting `line-height` in all browsers.
+ */
+
+sub,
+sup {
+    font-size: 75%;
+    line-height: 0;
+    position: relative;
+    vertical-align: baseline;
+}
+
+sup {
+    top: -0.5em;
+}
+
+sub {
+    bottom: -0.25em;
+}
+
+/* ==========================================================================
+   Lists
+   ========================================================================== */
+
+/**
+ * Address margins set differently in IE 6/7.
+ */
+
+dl,
+menu,
+ol,
+ul {
+    margin: 1em 0;
+}
+
+dd {
+    margin: 0 0 0 40px;
+}
+
+/**
+ * Address paddings set differently in IE 6/7.
+ */
+
+menu,
+ol,
+ul {
+    padding: 0 0 0 40px;
+}
+
+/**
+ * Correct list images handled incorrectly in IE 7.
+ */
+
+nav ul,
+nav ol {
+    list-style: none;
+    list-style-image: none;
+}
+
+/* ==========================================================================
+   Embedded content
+   ========================================================================== */
+
+/**
+ * 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3.
+ * 2. Improve image quality when scaled in IE 7.
+ */
+
+img {
+    border: 0; /* 1 */
+    -ms-interpolation-mode: bicubic; /* 2 */
+}
+
+/**
+ * Correct overflow displayed oddly in IE 9.
+ */
+
+svg:not(:root) {
+    overflow: hidden;
+}
+
+/* ==========================================================================
+   Figures
+   ========================================================================== */
+
+/**
+ * Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11.
+ */
+
+figure {
+    margin: 0;
+}
+
+/* ==========================================================================
+   Forms
+   ========================================================================== */
+
+/**
+ * Correct margin displayed oddly in IE 6/7.
+ */
+
+form {
+    margin: 0;
+}
+
+/**
+ * Define consistent border, margin, and padding.
+ */
+
+fieldset {
+    border: 1px solid #c0c0c0;
+    margin: 0 2px;
+    padding: 0.35em 0.625em 0.75em;
+}
+
+/**
+ * 1. Correct color not being inherited in IE 6/7/8/9.
+ * 2. Correct text not wrapping in Firefox 3.
+ * 3. Correct alignment displayed oddly in IE 6/7.
+ */
+
+legend {
+    border: 0; /* 1 */
+    padding: 0;
+    white-space: normal; /* 2 */
+    *margin-left: -7px; /* 3 */
+}
+
+/**
+ * 1. Correct font size not being inherited in all browsers.
+ * 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5,
+ *    and Chrome.
+ * 3. Improve appearance and consistency in all browsers.
+ */
+
+button,
+input,
+select,
+textarea {
+    font-size: 100%; /* 1 */
+    margin: 0; /* 2 */
+    vertical-align: baseline; /* 3 */
+    *vertical-align: middle; /* 3 */
+}
+
+/**
+ * Address Firefox 3+ setting `line-height` on `input` using `!important` in
+ * the UA stylesheet.
+ */
+
+button,
+input {
+    line-height: normal;
+}
+
+/**
+ * Address inconsistent `text-transform` inheritance for `button` and `select`.
+ * All other form control elements do not inherit `text-transform` values.
+ * Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+.
+ * Correct `select` style inheritance in Firefox 4+ and Opera.
+ */
+
+button,
+select {
+    text-transform: none;
+}
+
+/**
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+ *    and `video` controls.
+ * 2. Correct inability to style clickable `input` types in iOS.
+ * 3. Improve usability and consistency of cursor style between image-type
+ *    `input` and others.
+ * 4. Remove inner spacing in IE 7 without affecting normal text inputs.
+ *    Known issue: inner spacing remains in IE 6.
+ */
+
+button,
+html input[type="button"], /* 1 */
+input[type="reset"],
+input[type="submit"] {
+    -webkit-appearance: button; /* 2 */
+    cursor: pointer; /* 3 */
+    *overflow: visible;  /* 4 */
+}
+
+/**
+ * Re-set default cursor for disabled elements.
+ */
+
+button[disabled],
+html input[disabled] {
+    cursor: default;
+}
+
+/**
+ * 1. Address box sizing set to content-box in IE 8/9.
+ * 2. Remove excess padding in IE 8/9.
+ * 3. Remove excess padding in IE 7.
+ *    Known issue: excess padding remains in IE 6.
+ */
+
+input[type="checkbox"],
+input[type="radio"] {
+    box-sizing: border-box; /* 1 */
+    padding: 0; /* 2 */
+    *height: 13px; /* 3 */
+    *width: 13px; /* 3 */
+}
+
+/**
+ * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
+ * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
+ *    (include `-moz` to future-proof).
+ */
+
+input[type="search"] {
+    -webkit-appearance: textfield; /* 1 */
+    -moz-box-sizing: content-box;
+    -webkit-box-sizing: content-box; /* 2 */
+    box-sizing: content-box;
+}
+
+/**
+ * Remove inner padding and search cancel button in Safari 5 and Chrome
+ * on OS X.
+ */
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+    -webkit-appearance: none;
+}
+
+/**
+ * Remove inner padding and border in Firefox 3+.
+ */
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+    border: 0;
+    padding: 0;
+}
+
+/**
+ * 1. Remove default vertical scrollbar in IE 6/7/8/9.
+ * 2. Improve readability and alignment in all browsers.
+ */
+
+textarea {
+    overflow: auto; /* 1 */
+    vertical-align: top; /* 2 */
+}
+
+/* ==========================================================================
+   Tables
+   ========================================================================== */
+
+/**
+ * Remove most spacing between table cells.
+ */
+
+table {
+    border-collapse: collapse;
+    border-spacing: 0;
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/style/theme.css
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/style/theme.css b/rocketmq-console/src/main/resources/static/style/theme.css
new file mode 100644
index 0000000..26a5f32
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/style/theme.css
@@ -0,0 +1,80 @@
+body{
+    background-color: #ffffff;
+}
+
+.navbar.navbar-app {
+    background-color: #F26E5F;
+    color: rgba(255,255,255, 0.84);
+}
+
+.foot-wrap{
+    background-color: #5B90E7;
+    height:100px;
+    color: #FFFFFF;
+}
+
+.foot-wrap > *{
+    margin-top:20px;
+}
+
+.avatar{
+    border-radius: 100%;
+}
+
+@media (min-width: 1024px){
+    .left{
+        /*background-color: #5B90E7;*/
+        /*color: #FFFFFF;*/
+        /*margin-top:-20px;*/
+        margin-left: 20px;
+        display: block;
+    }
+}
+
+
+.left .separator{
+    clear: both;
+    overflow: hidden;
+    margin-top: 10px;
+    margin-bottom: 10px;
+    border-bottom: 1px solid rgba(0, 0, 0, 0.1);
+    content: "";
+}
+.left .nav {
+    font-size: 20px;
+    color: #000000;
+}
+
+@media (min-width: 1024px) {
+    .right{
+        width: 61.8%;
+        margin-left: 23.2%;
+    } }
+.right{
+
+}
+
+.right .separator{
+    /*clear: both;*/
+    overflow: hidden;
+    margin-top: 10px;
+    margin-bottom: 10px;
+    border-bottom: 1px solid rgba(0, 0, 0, 0.1);
+    content: "";
+}
+
+a, a:hover, a:focus {
+     color: #000000;
+}
+a {
+    color: #337ab7;
+    text-decoration: none;
+}
+
+.form-group .checkbox label, .form-group .radio label, .form-group label{
+    color:#333333;
+}
+
+.form-group.is-focused .radio label:hover, .form-group.is-focused label.radio-inline:hover, .form-group.is-focused .radio label:focus, .form-group.is-focused label.radio-inline:focus{
+    color:#333333;
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/style/timeline.css
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/style/timeline.css b/rocketmq-console/src/main/resources/static/style/timeline.css
new file mode 100644
index 0000000..5539d64
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/style/timeline.css
@@ -0,0 +1,126 @@
+.timeline {
+    list-style: none;
+    padding: 20px 0 20px;
+    position: relative;
+}
+.timeline:before {
+    top: 0;
+    bottom: 0;
+    position: absolute;
+    content: " ";
+    width: 3px;
+    background-color: #eeeeee;
+    left: 50%;
+    margin-left: -1.5px;
+}
+.timeline > li {
+    margin-bottom: 20px;
+    position: relative;
+}
+.timeline > li:before,
+.timeline > li:after {
+    content: " ";
+    display: table;
+}
+.timeline > li:after {
+    clear: both;
+}
+.timeline > li:before,
+.timeline > li:after {
+    content: " ";
+    display: table;
+}
+.timeline > li:after {
+    clear: both;
+}
+.timeline > li > .timeline-panel {
+    width: 46%;
+    float: left;
+    border: 1px solid #d4d4d4;
+    border-radius: 2px;
+    padding: 20px;
+    position: relative;
+    -webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.175);
+    box-shadow: 0 1px 6px rgba(0, 0, 0, 0.175);
+}
+.timeline > li > .timeline-panel:before {
+    position: absolute;
+    top: 26px;
+    right: -15px;
+    display: inline-block;
+    border-top: 15px solid transparent;
+    border-left: 15px solid #ccc;
+    border-right: 0 solid #ccc;
+    border-bottom: 15px solid transparent;
+    content: " ";
+}
+.timeline > li > .timeline-panel:after {
+    position: absolute;
+    top: 27px;
+    right: -14px;
+    display: inline-block;
+    border-top: 14px solid transparent;
+    border-left: 14px solid #fff;
+    border-right: 0 solid #fff;
+    border-bottom: 14px solid transparent;
+    content: " ";
+}
+.timeline > li > .timeline-badge {
+    color: #fff;
+    width: 50px;
+    height: 50px;
+    line-height: 50px;
+    font-size: 1.4em;
+    text-align: center;
+    position: absolute;
+    top: 16px;
+    left: 50%;
+    margin-left: -25px;
+    background-color: #999999;
+    z-index: 100;
+    border-top-right-radius: 50%;
+    border-top-left-radius: 50%;
+    border-bottom-right-radius: 50%;
+    border-bottom-left-radius: 50%;
+}
+.timeline > li.timeline-inverted > .timeline-panel {
+    float: right;
+}
+.timeline > li.timeline-inverted > .timeline-panel:before {
+    border-left-width: 0;
+    border-right-width: 15px;
+    left: -15px;
+    right: auto;
+}
+.timeline > li.timeline-inverted > .timeline-panel:after {
+    border-left-width: 0;
+    border-right-width: 14px;
+    left: -14px;
+    right: auto;
+}
+.timeline-badge.primary {
+    background-color: #2e6da4 !important;
+}
+.timeline-badge.success {
+    background-color: #3f903f !important;
+}
+.timeline-badge.warning {
+    background-color: #f0ad4e !important;
+}
+.timeline-badge.danger {
+    background-color: #d9534f !important;
+}
+.timeline-badge.info {
+    background-color: #5bc0de !important;
+}
+.timeline-title {
+    margin-top: 0;
+    color: inherit;
+}
+.timeline-body > p,
+.timeline-body > ul {
+    margin-bottom: 0;
+}
+.timeline-body > p + p {
+    margin-top: 5px;
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular-material/angular-animate.min.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular-material/angular-animate.min.js b/rocketmq-console/src/main/resources/static/vendor/angular-material/angular-animate.min.js
new file mode 100644
index 0000000..da9c862
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular-material/angular-animate.min.js
@@ -0,0 +1,56 @@
+/*
+ AngularJS v1.5.3
+ (c) 2010-2016 Google, Inc. http://angularjs.org
+ License: MIT
+ */
+(function(E,w,Va){'use strict';function ya(a,b,c){if(!a)throw Ka("areq",b||"?",c||"required");return a}function za(a,b){if(!a&&!b)return"";if(!a)return b;if(!b)return a;ba(a)&&(a=a.join(" "));ba(b)&&(b=b.join(" "));return a+" "+b}function La(a){var b={};a&&(a.to||a.from)&&(b.to=a.to,b.from=a.from);return b}function V(a,b,c){var d="";a=ba(a)?a:a&&I(a)&&a.length?a.split(/\s+/):[];q(a,function(a,f){a&&0<a.length&&(d+=0<f?" ":"",d+=c?b+a:a+b)});return d}function Ma(a){if(a instanceof H)switch(a.length){case 0:return[];
+    case 1:if(1===a[0].nodeType)return a;break;default:return H(ga(a))}if(1===a.nodeType)return H(a)}function ga(a){if(!a[0])return a;for(var b=0;b<a.length;b++){var c=a[b];if(1==c.nodeType)return c}}function Na(a,b,c){q(b,function(b){a.addClass(b,c)})}function Oa(a,b,c){q(b,function(b){a.removeClass(b,c)})}function Q(a){return function(b,c){c.addClass&&(Na(a,b,c.addClass),c.addClass=null);c.removeClass&&(Oa(a,b,c.removeClass),c.removeClass=null)}}function oa(a){a=a||{};if(!a.$$prepared){var b=a.domOperation||
+    O;a.domOperation=function(){a.$$domOperationFired=!0;b();b=O};a.$$prepared=!0}return a}function ha(a,b){Aa(a,b);Ba(a,b)}function Aa(a,b){b.from&&(a.css(b.from),b.from=null)}function Ba(a,b){b.to&&(a.css(b.to),b.to=null)}function T(a,b,c){var d=b.options||{};c=c.options||{};var e=(d.addClass||"")+" "+(c.addClass||""),f=(d.removeClass||"")+" "+(c.removeClass||"");a=Pa(a.attr("class"),e,f);c.preparationClasses&&(d.preparationClasses=W(c.preparationClasses,d.preparationClasses),delete c.preparationClasses);
+    e=d.domOperation!==O?d.domOperation:null;Ca(d,c);e&&(d.domOperation=e);d.addClass=a.addClass?a.addClass:null;d.removeClass=a.removeClass?a.removeClass:null;b.addClass=d.addClass;b.removeClass=d.removeClass;return d}function Pa(a,b,c){function d(a){I(a)&&(a=a.split(" "));var b={};q(a,function(a){a.length&&(b[a]=!0)});return b}var e={};a=d(a);b=d(b);q(b,function(a,b){e[b]=1});c=d(c);q(c,function(a,b){e[b]=1===e[b]?null:-1});var f={addClass:"",removeClass:""};q(e,function(b,c){var d,e;1===b?(d="addClass",
+    e=!a[c]):-1===b&&(d="removeClass",e=a[c]);e&&(f[d].length&&(f[d]+=" "),f[d]+=c)});return f}function A(a){return a instanceof w.element?a[0]:a}function Qa(a,b,c){var d="";b&&(d=V(b,"ng-",!0));c.addClass&&(d=W(d,V(c.addClass,"-add")));c.removeClass&&(d=W(d,V(c.removeClass,"-remove")));d.length&&(c.preparationClasses=d,a.addClass(d))}function pa(a,b){var c=b?"-"+b+"s":"";la(a,[ma,c]);return[ma,c]}function ra(a,b){var c=b?"paused":"",d=X+"PlayState";la(a,[d,c]);return[d,c]}function la(a,b){a.style[b[0]]=
+    b[1]}function W(a,b){return a?b?a+" "+b:a:b}function Da(a,b,c){var d=Object.create(null),e=a.getComputedStyle(b)||{};q(c,function(a,b){var c=e[a];if(c){var F=c.charAt(0);if("-"===F||"+"===F||0<=F)c=Ra(c);0===c&&(c=null);d[b]=c}});return d}function Ra(a){var b=0;a=a.split(/\s*,\s*/);q(a,function(a){"s"==a.charAt(a.length-1)&&(a=a.substring(0,a.length-1));a=parseFloat(a)||0;b=b?Math.max(a,b):a});return b}function sa(a){return 0===a||null!=a}function Ea(a,b){var c=R,d=a+"s";b?c+="Duration":d+=" linear all";
+    return[c,d]}function Fa(){var a=Object.create(null);return{flush:function(){a=Object.create(null)},count:function(b){return(b=a[b])?b.total:0},get:function(b){return(b=a[b])&&b.value},put:function(b,c){a[b]?a[b].total++:a[b]={total:1,value:c}}}}function Ga(a,b,c){q(c,function(c){a[c]=Y(a[c])?a[c]:b.style.getPropertyValue(c)})}var O=w.noop,Ha=w.copy,Ca=w.extend,H=w.element,q=w.forEach,ba=w.isArray,I=w.isString,ca=w.isObject,N=w.isUndefined,Y=w.isDefined,Ia=w.isFunction,ta=w.isElement,R,ua,X,va;N(E.ontransitionend)&&
+Y(E.onwebkittransitionend)?(R="WebkitTransition",ua="webkitTransitionEnd transitionend"):(R="transition",ua="transitionend");N(E.onanimationend)&&Y(E.onwebkitanimationend)?(X="WebkitAnimation",va="webkitAnimationEnd animationend"):(X="animation",va="animationend");var qa=X+"Delay",wa=X+"Duration",ma=R+"Delay";E=R+"Duration";var Ka=w.$$minErr("ng"),Sa={transitionDuration:E,transitionDelay:ma,transitionProperty:R+"Property",animationDuration:wa,animationDelay:qa,animationIterationCount:X+"IterationCount"},
+    Ta={transitionDuration:E,transitionDelay:ma,animationDuration:wa,animationDelay:qa};w.module("ngAnimate",[]).directive("ngAnimateSwap",["$animate","$rootScope",function(a,b){return{restrict:"A",transclude:"element",terminal:!0,priority:600,link:function(b,d,e,f,r){var x,F;b.$watchCollection(e.ngAnimateSwap||e["for"],function(e){x&&a.leave(x);F&&(F.$destroy(),F=null);if(e||0===e)F=b.$new(),r(F,function(b){x=b;a.enter(b,null,d)})})}}}]).directive("ngAnimateChildren",["$interpolate",function(a){return{link:function(b,
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          c,d){function e(a){c.data("$$ngAnimateChildren","on"===a||"true"===a)}var f=d.ngAnimateChildren;w.isString(f)&&0===f.length?c.data("$$ngAnimateChildren",!0):(e(a(f)(b)),d.$observe("ngAnimateChildren",e))}}}]).factory("$$rAFScheduler",["$$rAF",function(a){function b(a){d=d.concat(a);c()}function c(){if(d.length){for(var b=d.shift(),r=0;r<b.length;r++)b[r]();e||a(function(){e||c()})}}var d,e;d=b.queue=[];b.waitUntilQuiet=function(b){e&&e();e=a(function(){e=null;b();c()})};
 return b}]).provider("$$animateQueue",
+    ["$animateProvider",function(a){function b(a){if(!a)return null;a=a.split(" ");var b=Object.create(null);q(a,function(a){b[a]=!0});return b}function c(a,c){if(a&&c){var d=b(c);return a.split(" ").some(function(a){return d[a]})}}function d(a,b,c,d){return f[a].some(function(a){return a(b,c,d)})}function e(a,b){var c=0<(a.addClass||"").length,d=0<(a.removeClass||"").length;return b?c&&d:c||d}var f=this.rules={skip:[],cancel:[],join:[]};f.join.push(function(a,b,c){return!b.structural&&e(b)});f.skip.push(function(a,
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       b,c){return!b.structural&&!e(b)});f.skip.push(function(a,b,c){return"leave"==c.event&&b.structural});f.skip.push(function(a,b,c){return c.structural&&2===c.state&&!b.structural});f.cancel.push(function(a,b,c){return c.structural&&b.structural});f.cancel.push(function(a,b,c){return 2===c.state&&b.structural});f.cancel.push(function(a,b,d){if(d.structural)return!1;a=b.addClass;b=b.removeClass;var e=d.addClass;d=d.removeClass;return N(a)&&N(b)||N(e)&&N(d)?!1:c(a,d)||c(b,e)});t
 his.$get=["$$rAF","$rootScope",
+        "$rootElement","$document","$$HashMap","$$animation","$$AnimateRunner","$templateRequest","$$jqLite","$$forceReflow",function(b,c,f,u,l,w,s,M,v,h){function P(){var a=!1;return function(b){a?b():c.$$postDigest(function(){a=!0;b()})}}function y(a,b,c){var g=A(b),d=A(a),k=[];(a=G[c])&&q(a,function(a){t.call(a.node,g)?k.push(a.callback):"leave"===c&&t.call(a.node,d)&&k.push(a.callback)});return k}function k(a,g,k){function m(c,g,d,k){F(function(){var c=y(J,a,g);c.length&&b(function(){q(c,function(b){b(a,
+            d,k)})})});c.progress(g,d,k)}function G(b){var c=a,g=h;g.preparationClasses&&(c.removeClass(g.preparationClasses),g.preparationClasses=null);g.activeClasses&&(c.removeClass(g.activeClasses),g.activeClasses=null);Ja(a,h);ha(a,h);h.domOperation();f.complete(!b)}var h=Ha(k),t,J;if(a=Ma(a))t=A(a),J=a.parent();var h=oa(h),f=new s,F=P();ba(h.addClass)&&(h.addClass=h.addClass.join(" "));h.addClass&&!I(h.addClass)&&(h.addClass=null);ba(h.removeClass)&&(h.removeClass=h.removeClass.join(" "));h.removeClass&&
+        !I(h.removeClass)&&(h.removeClass=null);h.from&&!ca(h.from)&&(h.from=null);h.to&&!ca(h.to)&&(h.to=null);if(!t)return G(),f;k=[t.className,h.addClass,h.removeClass].join(" ");if(!Ua(k))return G(),f;var v=0<=["enter","move","leave"].indexOf(g),l=!K||u[0].hidden||C.get(t);k=!l&&z.get(t)||{};var Z=!!k.state;l||Z&&1==k.state||(l=!n(a,J,g));if(l)return G(),f;v&&xa(a);l={structural:v,element:a,event:g,addClass:h.addClass,removeClass:h.removeClass,close:G,options:h,runner:f};if(Z){if(d("skip",a,l,k)){if(2===
+            k.state)return G(),f;T(a,k,l);return k.runner}if(d("cancel",a,l,k))if(2===k.state)k.runner.end();else if(k.structural)k.close();else return T(a,k,l),k.runner;else if(d("join",a,l,k))if(2===k.state)T(a,l,{});else return Qa(a,v?g:null,h),g=l.event=k.event,h=T(a,k,l),k.runner}else T(a,l,{});(Z=l.structural)||(Z="animate"===l.event&&0<Object.keys(l.options.to||{}).length||e(l));if(!Z)return G(),ka(a),f;var M=(k.counter||0)+1;l.counter=M;D(a,1,l);c.$$postDigest(function(){var b=z.get(t),c=!b,b=b||{},d=
+            0<(a.parent()||[]).length&&("animate"===b.event||b.structural||e(b));if(c||b.counter!==M||!d){c&&(Ja(a,h),ha(a,h));if(c||v&&b.event!==g)h.domOperation(),f.end();d||ka(a)}else g=!b.structural&&e(b,!0)?"setClass":b.event,D(a,2),b=w(a,g,b.options),b.done(function(b){G(!b);(b=z.get(t))&&b.counter===M&&ka(A(a));m(f,g,"close",{})}),f.setHost(b),m(f,g,"start",{})});return f}function xa(a){a=A(a).querySelectorAll("[data-ng-animate]");q(a,function(a){var b=parseInt(a.getAttribute("data-ng-animate")),c=z.get(a);
+            if(c)switch(b){case 2:c.runner.end();case 1:z.remove(a)}})}function ka(a){a=A(a);a.removeAttribute("data-ng-animate");z.remove(a)}function J(a,b){return A(a)===A(b)}function n(a,b,c){c=H(u[0].body);var g=J(a,c)||"HTML"===a[0].nodeName,d=J(a,f),k=!1,h,m=C.get(A(a));(a=H.data(a[0],"$ngAnimatePin"))&&(b=a);for(b=A(b);b;){d||(d=J(b,f));if(1!==b.nodeType)break;a=z.get(b)||{};if(!k){var e=C.get(b);if(!0===e&&!1!==m){m=!0;break}else!1===e&&(m=!1);k=a.structural}if(N(h)||!0===h)a=H.data(b,"$$ngAnimateChildren"),
+        Y(a)&&(h=a);if(k&&!1===h)break;g||(g=J(b,c));if(g&&d)break;if(!d&&(a=H.data(b,"$ngAnimatePin"))){b=A(a);continue}b=b.parentNode}return(!k||h)&&!0!==m&&d&&g}function D(a,b,c){c=c||{};c.state=b;a=A(a);a.setAttribute("data-ng-animate",b);c=(b=z.get(a))?Ca(b,c):c;z.put(a,c)}var z=new l,C=new l,K=null,g=c.$watch(function(){return 0===M.totalPendingRequests},function(a){a&&(g(),c.$$postDigest(function(){c.$$postDigest(function(){null===K&&(K=!0)})}))}),G={},m=a.classNameFilter(),Ua=m?function(a){return m.test(a)}:
+            function(){return!0},Ja=Q(v),t=Node.prototype.contains||function(a){return this===a||!!(this.compareDocumentPosition(a)&16)},Z={on:function(a,b,c){var g=ga(b);G[a]=G[a]||[];G[a].push({node:g,callback:c});H(b).on("$destroy",function(){Z.off(a,b,c)})},off:function(a,b,c){function g(a,b,c){var d=ga(b);return a.filter(function(a){return!(a.node===d&&(!c||a.callback===c))})}var d=G[a];d&&(G[a]=1===arguments.length?null:g(d,b,c))},pin:function(a,b){ya(ta(a),"element","not an element");ya(ta(b),"parentElement",
+            "not an element");a.data("$ngAnimatePin",b)},push:function(a,b,c,g){c=c||{};c.domOperation=g;return k(a,b,c)},enabled:function(a,b){var c=arguments.length;if(0===c)b=!!K;else if(ta(a)){var g=A(a),d=C.get(g);1===c?b=!d:C.put(g,!b)}else b=K=!!a;return b}};return Z}]}]).provider("$$animation",["$animateProvider",function(a){function b(a){return a.data("$$animationRunner")}var c=this.drivers=[];this.$get=["$$jqLite","$rootScope","$injector","$$AnimateRunner","$$HashMap","$$rAFScheduler",function(a,e,
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             f,r,x,F){function u(a){function b(a){if(a.processed)return a;a.processed=!0;var d=a.domNode,h=d.parentNode;e.put(d,a);for(var f;h;){if(f=e.get(h)){f.processed||(f=b(f));break}h=h.parentNode}(f||c).children.push(a);return a}var c={children:[]},d,e=new x;for(d=0;d<a.length;d++){var f=a[d];e.put(f.domNode,a[d]={domNode:f.domNode,fn:f.fn,children:[]})}for(d=0;d<a.length;d++)b(a[d]);return function(a){var b=[],c=[],d;for(d=0;d<a.children.length;d++)c.push(a.children[d]);a=c.length;var h=0
 ,e=[];for(d=0;d<
+c.length;d++){var f=c[d];0>=a&&(a=h,h=0,b.push(e),e=[]);e.push(f.fn);f.children.forEach(function(a){h++;c.push(a)});a--}e.length&&b.push(e);return b}(c)}var l=[],w=Q(a);return function(s,x,v){function h(a){a=a.hasAttribute("ng-animate-ref")?[a]:a.querySelectorAll("[ng-animate-ref]");var b=[];q(a,function(a){var c=a.getAttribute("ng-animate-ref");c&&c.length&&b.push(a)});return b}function P(a){var b=[],c={};q(a,function(a,g){var d=A(a.element),k=0<=["enter","move"].indexOf(a.event),d=a.structural?
+    h(d):[];if(d.length){var e=k?"to":"from";q(d,function(a){var b=a.getAttribute("ng-animate-ref");c[b]=c[b]||{};c[b][e]={animationID:g,element:H(a)}})}else b.push(a)});var d={},k={};q(c,function(c,h){var e=c.from,f=c.to;if(e&&f){var m=a[e.animationID],C=a[f.animationID],n=e.animationID.toString();if(!k[n]){var D=k[n]={structural:!0,beforeStart:function(){m.beforeStart();C.beforeStart()},close:function(){m.close();C.close()},classes:y(m.classes,C.classes),from:m,to:C,anchors:[]};D.classes.length?b.push(D):
+    (b.push(m),b.push(C))}k[n].anchors.push({out:e.element,"in":f.element})}else e=e?e.animationID:f.animationID,f=e.toString(),d[f]||(d[f]=!0,b.push(a[e]))});return b}function y(a,b){a=a.split(" ");b=b.split(" ");for(var c=[],d=0;d<a.length;d++){var k=a[d];if("ng-"!==k.substring(0,3))for(var e=0;e<b.length;e++)if(k===b[e]){c.push(k);break}}return c.join(" ")}function k(a){for(var b=c.length-1;0<=b;b--){var d=c[b];if(f.has(d)&&(d=f.get(d)(a)))return d}}function xa(a,c){a.from&&a.to?(b(a.from.element).setHost(c),
+    b(a.to.element).setHost(c)):b(a.element).setHost(c)}function ka(){var a=b(s);!a||"leave"===x&&v.$$domOperationFired||a.end()}function J(b){s.off("$destroy",ka);s.removeData("$$animationRunner");w(s,v);ha(s,v);v.domOperation();C&&a.removeClass(s,C);s.removeClass("ng-animate");D.complete(!b)}v=oa(v);var n=0<=["enter","move","leave"].indexOf(x),D=new r({end:function(){J()},cancel:function(){J(!0)}});if(!c.length)return J(),D;s.data("$$animationRunner",D);var z=za(s.attr("class"),za(v.addClass,v.removeClass)),
+    C=v.tempClasses;C&&(z+=" "+C,v.tempClasses=null);var K;n&&(K="ng-"+x+"-prepare",a.addClass(s,K));l.push({element:s,classes:z,event:x,structural:n,options:v,beforeStart:function(){s.addClass("ng-animate");C&&a.addClass(s,C);K&&(a.removeClass(s,K),K=null)},close:J});s.on("$destroy",ka);if(1<l.length)return D;e.$$postDigest(function(){var a=[];q(l,function(c){b(c.element)?a.push(c):c.close()});l.length=0;var c=P(a),d=[];q(c,function(a){d.push({domNode:A(a.from?a.from.element:a.element),fn:function(){a.beforeStart();
+    var c,d=a.close;if(b(a.anchors?a.from.element||a.to.element:a.element)){var g=k(a);g&&(c=g.start)}c?(c=c(),c.done(function(a){d(!a)}),xa(a,c)):d()}})});F(u(d))});return D}}]}]).provider("$animateCss",["$animateProvider",function(a){var b=Fa(),c=Fa();this.$get=["$window","$$jqLite","$$AnimateRunner","$timeout","$$forceReflow","$sniffer","$$rAFScheduler","$$animateQueue",function(a,e,f,r,x,F,u,l){function w(a,b){var c=a.parentNode;return(c.$$ngAnimateParentKey||(c.$$ngAnimateParentKey=++P))+"-"+a.getAttribute("class")+
+    "-"+b}function s(k,h,f,l){var n;0<b.count(f)&&(n=c.get(f),n||(h=V(h,"-stagger"),e.addClass(k,h),n=Da(a,k,l),n.animationDuration=Math.max(n.animationDuration,0),n.transitionDuration=Math.max(n.transitionDuration,0),e.removeClass(k,h),c.put(f,n)));return n||{}}function M(a){y.push(a);u.waitUntilQuiet(function(){b.flush();c.flush();for(var a=x(),d=0;d<y.length;d++)y[d](a);y.length=0})}function v(c,h,e){h=b.get(e);h||(h=Da(a,c,Sa),"infinite"===h.animationIterationCount&&(h.animationIterationCount=1));
+    b.put(e,h);c=h;e=c.animationDelay;h=c.transitionDelay;c.maxDelay=e&&h?Math.max(e,h):e||h;c.maxDuration=Math.max(c.animationDuration*c.animationIterationCount,c.transitionDuration);return c}var h=Q(e),P=0,y=[];return function(a,c){function d(){n()}function u(){n(!0)}function n(b){if(!(P||H&&da)){P=!0;da=!1;g.$$skipPreparationClasses||e.removeClass(a,fa);e.removeClass(a,ga);ra(m,!1);pa(m,!1);q(y,function(a){m.style[a[0]]=""});h(a,g);ha(a,g);Object.keys(G).length&&q(G,function(a,b){a?m.style.setProperty(b,
+    a):m.style.removeProperty(b)});if(g.onDone)g.onDone();ea&&ea.length&&a.off(ea.join(" "),C);var c=a.data("$$animateCss");c&&(r.cancel(c[0].timer),a.removeData("$$animateCss"));E&&E.complete(!b)}}function D(a){p.blockTransition&&pa(m,a);p.blockKeyframeAnimation&&ra(m,!!a)}function z(){E=new f({end:d,cancel:u});M(O);n();return{$$willAnimate:!1,start:function(){return E},end:d}}function C(a){a.stopPropagation();var b=a.originalEvent||a;a=b.$manualTimeStamp||Date.now();b=parseFloat(b.elapsedTime.toFixed(3));
+    Math.max(a-W,0)>=Q&&b>=L&&(H=!0,n())}function K(){function b(){if(!P){D(!1);q(y,function(a){m.style[a[0]]=a[1]});h(a,g);e.addClass(a,ga);if(p.recalculateTimingStyles){na=m.className+" "+fa;ia=w(m,na);B=v(m,na,ia);$=B.maxDelay;I=Math.max($,0);L=B.maxDuration;if(0===L){n();return}p.hasTransitions=0<B.transitionDuration;p.hasAnimations=0<B.animationDuration}p.applyAnimationDelay&&($="boolean"!==typeof g.delay&&sa(g.delay)?parseFloat(g.delay):$,I=Math.max($,0),B.animationDelay=$,aa=[qa,$+"s"],y.push(aa),
+    m.style[aa[0]]=aa[1]);Q=1E3*I;T=1E3*L;if(g.easing){var d,f=g.easing;p.hasTransitions&&(d=R+"TimingFunction",y.push([d,f]),m.style[d]=f);p.hasAnimations&&(d=X+"TimingFunction",y.push([d,f]),m.style[d]=f)}B.transitionDuration&&ea.push(ua);B.animationDuration&&ea.push(va);W=Date.now();var l=Q+1.5*T;d=W+l;var f=a.data("$$animateCss")||[],K=!0;if(f.length){var z=f[0];(K=d>z.expectedEndTime)?r.cancel(z.timer):f.push(n)}K&&(l=r(c,l,!1),f[0]={timer:l,expectedEndTime:d},f.push(n),a.data("$$animateCss",f));
+    if(ea.length)a.on(ea.join(" "),C);g.to&&(g.cleanupStyles&&Ga(G,m,Object.keys(g.to)),Ba(a,g))}}function c(){var b=a.data("$$animateCss");if(b){for(var d=1;d<b.length;d++)b[d]();a.removeData("$$animateCss")}}if(!P)if(m.parentNode){var d=function(a){if(H)da&&a&&(da=!1,n());else if(da=!a,B.animationDuration)if(a=ra(m,da),da)y.push(a);else{var b=y,c=b.indexOf(a);0<=a&&b.splice(c,1)}},f=0<ca&&(B.transitionDuration&&0===U.transitionDuration||B.animationDuration&&0===U.animationDuration)&&Math.max(U.animationDelay,
+        U.transitionDelay);f?r(b,Math.floor(f*ca*1E3),!1):b();N.resume=function(){d(!0)};N.pause=function(){d(!1)}}else n()}var g=c||{};g.$$prepared||(g=oa(Ha(g)));var G={},m=A(a);if(!m||!m.parentNode||!l.enabled())return z();var y=[],x=a.attr("class"),t=La(g),P,da,H,E,N,I,Q,L,T,W,ea=[];if(0===g.duration||!F.animations&&!F.transitions)return z();var ja=g.event&&ba(g.event)?g.event.join(" "):g.event,Y="",S="";ja&&g.structural?Y=V(ja,"ng-",!0):ja&&(Y=ja);g.addClass&&(S+=V(g.addClass,"-add"));g.removeClass&&
+(S.length&&(S+=" "),S+=V(g.removeClass,"-remove"));g.applyClassesEarly&&S.length&&h(a,g);var fa=[Y,S].join(" ").trim(),na=x+" "+fa,ga=V(fa,"-active"),x=t.to&&0<Object.keys(t.to).length;if(!(0<(g.keyframeStyle||"").length||x||fa))return z();var ia,U;0<g.stagger?(t=parseFloat(g.stagger),U={transitionDelay:t,animationDelay:t,transitionDuration:0,animationDuration:0}):(ia=w(m,na),U=s(m,fa,ia,Ta));g.$$skipPreparationClasses||e.addClass(a,fa);g.transitionStyle&&(t=[R,g.transitionStyle],la(m,t),y.push(t));
+    0<=g.duration&&(t=0<m.style[R].length,t=Ea(g.duration,t),la(m,t),y.push(t));g.keyframeStyle&&(t=[X,g.keyframeStyle],la(m,t),y.push(t));var ca=U?0<=g.staggerIndex?g.staggerIndex:b.count(ia):0;(ja=0===ca)&&!g.skipBlocking&&pa(m,9999);var B=v(m,na,ia),$=B.maxDelay;I=Math.max($,0);L=B.maxDuration;var p={};p.hasTransitions=0<B.transitionDuration;p.hasAnimations=0<B.animationDuration;p.hasTransitionAll=p.hasTransitions&&"all"==B.transitionProperty;p.applyTransitionDuration=x&&(p.hasTransitions&&!p.hasTransitionAll||
+        p.hasAnimations&&!p.hasTransitions);p.applyAnimationDuration=g.duration&&p.hasAnimations;p.applyTransitionDelay=sa(g.delay)&&(p.applyTransitionDuration||p.hasTransitions);p.applyAnimationDelay=sa(g.delay)&&p.hasAnimations;p.recalculateTimingStyles=0<S.length;if(p.applyTransitionDuration||p.applyAnimationDuration)L=g.duration?parseFloat(g.duration):L,p.applyTransitionDuration&&(p.hasTransitions=!0,B.transitionDuration=L,t=0<m.style[R+"Property"].length,y.push(Ea(L,t))),p.applyAnimationDuration&&(p.hasAnimations=
+        !0,B.animationDuration=L,y.push([wa,L+"s"]));if(0===L&&!p.recalculateTimingStyles)return z();if(null!=g.delay){var aa;"boolean"!==typeof g.delay&&(aa=parseFloat(g.delay),I=Math.max(aa,0));p.applyTransitionDelay&&y.push([ma,aa+"s"]);p.applyAnimationDelay&&y.push([qa,aa+"s"])}null==g.duration&&0<B.transitionDuration&&(p.recalculateTimingStyles=p.recalculateTimingStyles||ja);Q=1E3*I;T=1E3*L;g.skipBlocking||(p.blockTransition=0<B.transitionDuration,p.blockKeyframeAnimation=0<B.animationDuration&&0<U.animationDelay&&
+        0===U.animationDuration);g.from&&(g.cleanupStyles&&Ga(G,m,Object.keys(g.from)),Aa(a,g));p.blockTransition||p.blockKeyframeAnimation?D(L):g.skipBlocking||pa(m,!1);return{$$willAnimate:!0,end:d,start:function(){if(!P)return N={end:d,cancel:u,resume:null,pause:null},E=new f(N),M(K),E}}}}]}]).provider("$$animateCssDriver",["$$animationProvider",function(a){a.drivers.push("$$animateCssDriver");this.$get=["$animateCss","$rootScope","$$AnimateRunner","$rootElement","$sniffer","$$jqLite","$document",function(a,
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  c,d,e,f,r,x){function F(a){return a.replace(/\bng-\S+\b/g,"")}function u(a,b){I(a)&&(a=a.split(" "));I(b)&&(b=b.split(" "));return a.filter(function(a){return-1===b.indexOf(a)}).join(" ")}function l(c,e,f){function k(a){var b={},c=A(a).getBoundingClientRect();q(["width","height","top","left"],function(a){var d=c[a];switch(a){case "top":d+=M.scrollTop;break;case "left":d+=M.scrollLeft}b[a]=Math.floor(d)+"px"});return b}function l(){var c=F(f.attr("class")||""),d=u(c,n),c=u(n,c),d
 =a(r,{to:k(f),addClass:"ng-anchor-in "+
+d,removeClass:"ng-anchor-out "+c,delay:!0});return d.$$willAnimate?d:null}function x(){r.remove();e.removeClass("ng-animate-shim");f.removeClass("ng-animate-shim")}var r=H(A(e).cloneNode(!0)),n=F(r.attr("class")||"");e.addClass("ng-animate-shim");f.addClass("ng-animate-shim");r.addClass("ng-anchor");v.append(r);var D;c=function(){var c=a(r,{addClass:"ng-anchor-out",delay:!0,from:k(e)});return c.$$willAnimate?c:null}();if(!c&&(D=l(),!D))return x();var z=c||D;return{start:function(){function a(){c&&
+c.end()}var b,c=z.start();c.done(function(){c=null;if(!D&&(D=l()))return c=D.start(),c.done(function(){c=null;x();b.complete()}),c;x();b.complete()});return b=new d({end:a,cancel:a})}}}function w(a,b,c,e){var f=s(a,O),r=s(b,O),x=[];q(e,function(a){(a=l(c,a.out,a["in"]))&&x.push(a)});if(f||r||0!==x.length)return{start:function(){function a(){q(b,function(a){a.end()})}var b=[];f&&b.push(f.start());r&&b.push(r.start());q(x,function(a){b.push(a.start())});var c=new d({end:a,cancel:a});d.all(b,function(a){c.complete(a)});
+    return c}}}function s(c){var d=c.element,e=c.options||{};c.structural&&(e.event=c.event,e.structural=!0,e.applyClassesEarly=!0,"leave"===c.event&&(e.onDone=e.domOperation));e.preparationClasses&&(e.event=W(e.event,e.preparationClasses));c=a(d,e);return c.$$willAnimate?c:null}if(!f.animations&&!f.transitions)return O;var M=x[0].body;c=A(e);var v=H(c.parentNode&&11===c.parentNode.nodeType||M.contains(c)?c:M);Q(r);return function(a){return a.from&&a.to?w(a.from,a.to,a.classes,a.anchors):s(a)}}]}]).provider("$$animateJs",
+    ["$animateProvider",function(a){this.$get=["$injector","$$AnimateRunner","$$jqLite",function(b,c,d){function e(c){c=ba(c)?c:c.split(" ");for(var d=[],e={},f=0;f<c.length;f++){var l=c[f],q=a.$$registeredAnimations[l];q&&!e[l]&&(d.push(b.get(q)),e[l]=!0)}return d}var f=Q(d);return function(a,b,d,u){function l(){u.domOperation();f(a,u)}function w(a,b,d,e,g){switch(d){case "animate":b=[b,e.from,e.to,g];break;case "setClass":b=[b,h,H,g];break;case "addClass":b=[b,h,g];break;case "removeClass":b=[b,H,g];
+        break;default:b=[b,g]}b.push(e);if(a=a.apply(a,b))if(Ia(a.start)&&(a=a.start()),a instanceof c)a.done(g);else if(Ia(a))return a;return O}function s(a,b,d,e,g){var f=[];q(e,function(e){var h=e[g];h&&f.push(function(){var e,g,f=!1,k=function(a){f||(f=!0,(g||O)(a),e.complete(!a))};e=new c({end:function(){k()},cancel:function(){k(!0)}});g=w(h,a,b,d,function(a){k(!1===a)});return e})});return f}function A(a,b,d,e,g){var f=s(a,b,d,e,g);if(0===f.length){var h,k;"beforeSetClass"===g?(h=s(a,"removeClass",
+        d,e,"beforeRemoveClass"),k=s(a,"addClass",d,e,"beforeAddClass")):"setClass"===g&&(h=s(a,"removeClass",d,e,"removeClass"),k=s(a,"addClass",d,e,"addClass"));h&&(f=f.concat(h));k&&(f=f.concat(k))}if(0!==f.length)return function(a){var b=[];f.length&&q(f,function(a){b.push(a())});b.length?c.all(b,a):a();return function(a){q(b,function(b){a?b.cancel():b.end()})}}}var v=!1;3===arguments.length&&ca(d)&&(u=d,d=null);u=oa(u);d||(d=a.attr("class")||"",u.addClass&&(d+=" "+u.addClass),u.removeClass&&(d+=" "+
+        u.removeClass));var h=u.addClass,H=u.removeClass,y=e(d),k,E;if(y.length){var I,J;"leave"==b?(J="leave",I="afterLeave"):(J="before"+b.charAt(0).toUpperCase()+b.substr(1),I=b);"enter"!==b&&"move"!==b&&(k=A(a,b,u,y,J));E=A(a,b,u,y,I)}if(k||E){var n;return{$$willAnimate:!0,end:function(){n?n.end():(v=!0,l(),ha(a,u),n=new c,n.complete(!0));return n},start:function(){function b(c){v=!0;l();ha(a,u);n.complete(c)}if(n)return n;n=new c;var d,e=[];k&&e.push(function(a){d=k(a)});e.length?e.push(function(a){l();
+        a(!0)}):l();E&&e.push(function(a){d=E(a)});n.setHost({end:function(){v||((d||O)(void 0),b(void 0))},cancel:function(){v||((d||O)(!0),b(!0))}});c.chain(e,b);return n}}}}}]}]).provider("$$animateJsDriver",["$$animationProvider",function(a){a.drivers.push("$$animateJsDriver");this.$get=["$$animateJs","$$AnimateRunner",function(a,c){function d(c){return a(c.element,c.event,c.classes,c.options)}return function(a){if(a.from&&a.to){var b=d(a.from),r=d(a.to);if(b||r)return{start:function(){function a(){return function(){q(d,
+    function(a){a.end()})}}var d=[];b&&d.push(b.start());r&&d.push(r.start());c.all(d,function(a){e.complete(a)});var e=new c({end:a(),cancel:a()});return e}}}else return d(a)}}]}])})(window,window.angular);
+//# sourceMappingURL=angular-animate.min.js.map
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular-material/angular-aria.min.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular-material/angular-aria.min.js b/rocketmq-console/src/main/resources/static/vendor/angular-material/angular-aria.min.js
new file mode 100644
index 0000000..9c33873
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular-material/angular-aria.min.js
@@ -0,0 +1,14 @@
+/*
+ AngularJS v1.5.3
+ (c) 2010-2016 Google, Inc. http://angularjs.org
+ License: MIT
+ */
+(function(s,q,t){'use strict';var f="BUTTON A INPUT TEXTAREA SELECT DETAILS SUMMARY".split(" "),l=function(a,c){if(-1!==c.indexOf(a[0].nodeName))return!0};q.module("ngAria",["ng"]).provider("$aria",function(){function a(a,h,p,n){return function(d,e,b){var g=b.$normalize(h);!c[g]||l(e,p)||b[g]||d.$watch(b[a],function(b){b=n?!b:!!b;e.attr(h,b)})}}var c={ariaHidden:!0,ariaChecked:!0,ariaDisabled:!0,ariaRequired:!0,ariaInvalid:!0,ariaValue:!0,tabindex:!0,bindKeypress:!0,bindRoleForClick:!0};this.config=
+    function(a){c=q.extend(c,a)};this.$get=function(){return{config:function(a){return c[a]},$$watchExpr:a}}}).directive("ngShow",["$aria",function(a){return a.$$watchExpr("ngShow","aria-hidden",[],!0)}]).directive("ngHide",["$aria",function(a){return a.$$watchExpr("ngHide","aria-hidden",[],!1)}]).directive("ngValue",["$aria",function(a){return a.$$watchExpr("ngValue","aria-checked",f,!1)}]).directive("ngChecked",["$aria",function(a){return a.$$watchExpr("ngChecked","aria-checked",f,!1)}]).directive("ngRequired",
+    ["$aria",function(a){return a.$$watchExpr("ngRequired","aria-required",f,!1)}]).directive("ngModel",["$aria",function(a){function c(c,n,d,e){return a.config(n)&&!d.attr(c)&&(e||!l(d,f))}function m(a,c){return!c.attr("role")&&c.attr("type")===a&&"INPUT"!==c[0].nodeName}function h(a,c){var d=a.type,e=a.role;return"checkbox"===(d||e)||"menuitemcheckbox"===e?"checkbox":"radio"===(d||e)||"menuitemradio"===e?"radio":"range"===d||"progressbar"===e||"slider"===e?"range":""}return{restrict:"A",require:"ngModel",
+    priority:200,compile:function(f,n){var d=h(n,f);return{pre:function(a,b,c,k){"checkbox"===d&&(k.$isEmpty=function(a){return!1===a})},post:function(e,b,g,k){function f(){return k.$modelValue}function h(a){b.attr("aria-checked",g.value==k.$viewValue)}function n(){b.attr("aria-checked",!k.$isEmpty(k.$viewValue))}var l=c("tabindex","tabindex",b,!1);switch(d){case "radio":case "checkbox":m(d,b)&&b.attr("role",d);c("aria-checked","ariaChecked",b,!1)&&e.$watch(f,"radio"===d?h:n);l&&b.attr("tabindex",0);
+        break;case "range":m(d,b)&&b.attr("role","slider");if(a.config("ariaValue")){var p=!b.attr("aria-valuemin")&&(g.hasOwnProperty("min")||g.hasOwnProperty("ngMin")),q=!b.attr("aria-valuemax")&&(g.hasOwnProperty("max")||g.hasOwnProperty("ngMax")),r=!b.attr("aria-valuenow");p&&g.$observe("min",function(a){b.attr("aria-valuemin",a)});q&&g.$observe("max",function(a){b.attr("aria-valuemax",a)});r&&e.$watch(f,function(a){b.attr("aria-valuenow",a)})}l&&b.attr("tabindex",0)}!g.hasOwnProperty("ngRequired")&&
+    k.$validators.required&&c("aria-required","ariaRequired",b,!1)&&g.$observe("required",function(){b.attr("aria-required",!!g.required)});c("aria-invalid","ariaInvalid",b,!0)&&e.$watch(function(){return k.$invalid},function(a){b.attr("aria-invalid",!!a)})}}}}}]).directive("ngDisabled",["$aria",function(a){return a.$$watchExpr("ngDisabled","aria-disabled",f,!1)}]).directive("ngMessages",function(){return{restrict:"A",require:"?ngMessages",link:function(a,c,f,h){c.attr("aria-live")||c.attr("aria-live",
+    "assertive")}}}).directive("ngClick",["$aria","$parse",function(a,c){return{restrict:"A",compile:function(m,h){var p=c(h.ngClick,null,!0);return function(c,d,e){if(!l(d,f)&&(a.config("bindRoleForClick")&&!d.attr("role")&&d.attr("role","button"),a.config("tabindex")&&!d.attr("tabindex")&&d.attr("tabindex",0),a.config("bindKeypress")&&!e.ngKeypress))d.on("keypress",function(a){function d(){p(c,{$event:a})}var e=a.which||a.keyCode;32!==e&&13!==e||c.$apply(d)})}}}}]).directive("ngDblclick",["$aria",function(a){return function(c,
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    m,h){!a.config("tabindex")||m.attr("tabindex")||l(m,f)||m.attr("tabindex",0)}}])})(window,window.angular);
+//# sourceMappingURL=angular-aria.min.js.map
\ No newline at end of file


[47/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/support/GlobalExceptionHandler.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/support/GlobalExceptionHandler.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/support/GlobalExceptionHandler.java
new file mode 100644
index 0000000..37a8d64
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/support/GlobalExceptionHandler.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.rocketmq.console.support;
+
+import javax.servlet.http.HttpServletRequest;
+import org.apache.rocketmq.console.exception.ServiceException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+@ControllerAdvice(basePackages = "org.apache.rocketmq.console")
+public class GlobalExceptionHandler {
+    private Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);
+
+    @ExceptionHandler(value = Exception.class)
+    @ResponseBody
+    public JsonResult<Object> jsonErrorHandler(HttpServletRequest req, Exception ex) throws Exception {
+        JsonResult<Object> value = null;
+        if (ex != null) {
+            logger.error("op=global_exception_handler_print_error", ex);
+            if (ex instanceof ServiceException) {
+                value = new JsonResult<Object>(((ServiceException) ex).getCode(), ex.getMessage());
+            }
+            else {
+                value = new JsonResult<Object>(-1, ex.getMessage());
+            }
+        }
+        return value;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/support/GlobalRestfulResponseBodyAdvice.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/support/GlobalRestfulResponseBodyAdvice.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/support/GlobalRestfulResponseBodyAdvice.java
new file mode 100644
index 0000000..e67fa33
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/support/GlobalRestfulResponseBodyAdvice.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.rocketmq.console.support;
+
+import java.lang.annotation.Annotation;
+import org.apache.rocketmq.console.aspect.admin.annotation.OriginalControllerReturnValue;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.core.MethodParameter;
+import org.springframework.http.MediaType;
+import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.http.server.ServerHttpRequest;
+import org.springframework.http.server.ServerHttpResponse;
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
+
+@ControllerAdvice(basePackages = "org.apache.rocketmq.console")
+public class GlobalRestfulResponseBodyAdvice implements ResponseBodyAdvice<Object> {
+
+    private Logger logger = LoggerFactory.getLogger(GlobalRestfulResponseBodyAdvice.class);
+
+    @Override
+    public Object beforeBodyWrite(
+        Object obj, MethodParameter methodParameter, MediaType mediaType,
+        Class<? extends HttpMessageConverter<?>> converterType,
+        ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {
+        Annotation originalControllerReturnValue = methodParameter.getMethodAnnotation(OriginalControllerReturnValue.class);
+        if (originalControllerReturnValue != null) {
+            return obj;
+        }
+        JsonResult value;
+        if (obj instanceof JsonResult) {
+            value = (JsonResult)obj;
+        }
+        else {
+            value = new JsonResult(obj);
+        }
+        return value;
+    }
+
+    @Override
+    public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
+
+        return true;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/support/JsonResult.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/support/JsonResult.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/support/JsonResult.java
new file mode 100644
index 0000000..f5e20dd
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/support/JsonResult.java
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.rocketmq.console.support;
+
+public class JsonResult<T> {
+    private int status = 0;
+    private T data;
+    private String errMsg;
+
+    public JsonResult(T data) {
+        this.data = data;
+    }
+
+    public JsonResult(int status, String errMsg) {
+        this.status = status;
+        this.errMsg = errMsg;
+    }
+
+    public JsonResult(int status, T data, String errMsg) {
+        this.status = status;
+        this.data = data;
+        this.errMsg = errMsg;
+    }
+
+    public int getStatus() {
+        return status;
+    }
+
+    public void setStatus(int status) {
+        this.status = status;
+    }
+
+    public T getData() {
+        return data;
+    }
+
+    public void setData(T data) {
+        this.data = data;
+    }
+
+    public String getErrMsg() {
+        return errMsg;
+    }
+
+    public void setErrMsg(String errMsg) {
+        this.errMsg = errMsg;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/task/DashboardCollectTask.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/task/DashboardCollectTask.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/task/DashboardCollectTask.java
new file mode 100644
index 0000000..db1fbc4
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/task/DashboardCollectTask.java
@@ -0,0 +1,320 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.task;
+
+import com.google.common.base.Stopwatch;
+import org.apache.rocketmq.common.protocol.body.ClusterInfo;
+import org.apache.rocketmq.common.protocol.body.GroupList;
+import org.apache.rocketmq.common.protocol.body.KVTable;
+import org.apache.rocketmq.common.protocol.body.TopicList;
+import org.apache.rocketmq.common.protocol.route.BrokerData;
+import org.apache.rocketmq.common.protocol.route.TopicRouteData;
+import org.apache.rocketmq.console.aspect.admin.annotation.MultiMQAdminCmdMethod;
+import org.apache.rocketmq.store.stats.BrokerStatsManager;
+import org.apache.rocketmq.tools.admin.MQAdminExt;
+import org.apache.rocketmq.tools.command.stats.StatsAllSubCommand;
+import com.google.common.base.Throwables;
+import com.google.common.cache.LoadingCache;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.google.common.io.Files;
+import java.io.File;
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ExecutionException;
+import javax.annotation.Resource;
+import org.apache.rocketmq.common.MixAll;
+import org.apache.rocketmq.common.protocol.body.BrokerStatsData;
+import org.apache.rocketmq.console.config.RMQConfigure;
+import org.apache.rocketmq.console.service.DashboardCollectService;
+import org.apache.rocketmq.console.util.JsonUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DashboardCollectTask {
+    private Date currentDate = new Date();
+    @Resource
+    private MQAdminExt mqAdminExt;
+    @Resource
+    private RMQConfigure rmqConfigure;
+
+    @Resource
+    private DashboardCollectService dashboardCollectService;
+
+    private final static Logger log = LoggerFactory.getLogger(DashboardCollectTask.class);
+
+    @Scheduled(cron = "30 0/1 * * * ?")
+    @MultiMQAdminCmdMethod(timeoutMillis = 5000)
+    public void collectTopic() {
+        if (!rmqConfigure.isEnableDashBoardCollect()) {
+            return;
+        }
+        Date date = new Date();
+        Stopwatch stopwatch = Stopwatch.createStarted();
+        try {
+            TopicList topicList = mqAdminExt.fetchAllTopicList();
+            Set<String> topicSet = topicList.getTopicList();
+            for (String topic : topicSet) {
+                if (topic.startsWith(MixAll.RETRY_GROUP_TOPIC_PREFIX) || topic.startsWith(MixAll.DLQ_GROUP_TOPIC_PREFIX)) {
+                    continue;
+                }
+
+                TopicRouteData topicRouteData = mqAdminExt.examineTopicRouteInfo(topic);
+
+                GroupList groupList = mqAdminExt.queryTopicConsumeByWho(topic);
+
+                double inTPS = 0;
+
+                long inMsgCntToday = 0;
+
+                double outTPS = 0;
+
+                long outMsgCntToday = 0;
+
+                for (BrokerData bd : topicRouteData.getBrokerDatas()) {
+                    String masterAddr = bd.getBrokerAddrs().get(MixAll.MASTER_ID);
+                    if (masterAddr != null) {
+                        try {
+                            stopwatch.start();
+                            log.info("start time: {}", stopwatch.toString());
+                            BrokerStatsData bsd = mqAdminExt.viewBrokerStatsData(masterAddr, BrokerStatsManager.TOPIC_PUT_NUMS, topic);
+                            stopwatch.stop();
+                            log.info("stop time : {}", stopwatch.toString());
+                            stopwatch.reset();
+                            inTPS += bsd.getStatsMinute().getTps();
+                            inMsgCntToday += StatsAllSubCommand.compute24HourSum(bsd);
+                        }
+                        catch (Exception e) {
+//                            throw Throwables.propagate(e);
+                        }
+                    }
+                }
+
+                if (groupList != null && !groupList.getGroupList().isEmpty()) {
+
+                    for (String group : groupList.getGroupList()) {
+                        for (BrokerData bd : topicRouteData.getBrokerDatas()) {
+                            String masterAddr = bd.getBrokerAddrs().get(MixAll.MASTER_ID);
+                            if (masterAddr != null) {
+                                try {
+                                    String statsKey = String.format("%s@%s", topic, group);
+                                    BrokerStatsData bsd = mqAdminExt.viewBrokerStatsData(masterAddr, BrokerStatsManager.GROUP_GET_NUMS, statsKey);
+                                    outTPS += bsd.getStatsMinute().getTps();
+                                    outMsgCntToday += StatsAllSubCommand.compute24HourSum(bsd);
+                                }
+                                catch (Exception e) {
+//                                    throw Throwables.propagate(e);
+                                }
+                            }
+                        }
+                    }
+                }
+
+                List<String> list;
+                try {
+                    list = dashboardCollectService.getTopicMap().get(topic);
+                }
+                catch (ExecutionException e) {
+                    throw Throwables.propagate(e);
+                }
+                if (null == list) {
+                    list = Lists.newArrayList();
+                }
+
+                list.add(date.getTime() + "," + new BigDecimal(inTPS).setScale(5, BigDecimal.ROUND_HALF_UP) + "," + inMsgCntToday + "," + new BigDecimal(outTPS).setScale(5, BigDecimal.ROUND_HALF_UP) + "," + outMsgCntToday);
+                dashboardCollectService.getTopicMap().put(topic, list);
+
+            }
+
+            log.debug("Topic Collected Data in memory = {}" + JsonUtil.obj2String(dashboardCollectService.getTopicMap().asMap()));
+        }
+        catch (Exception err) {
+            throw Throwables.propagate(err);
+        }
+    }
+
+    @Scheduled(cron = "0 0/1 * * * ?")
+    public void collectBroker() {
+        if (!rmqConfigure.isEnableDashBoardCollect()) {
+            return;
+        }
+        try {
+            Date date = new Date();
+            ClusterInfo clusterInfo = mqAdminExt.examineBrokerClusterInfo();
+            Set<Map.Entry<String, BrokerData>> clusterEntries = clusterInfo.getBrokerAddrTable().entrySet();
+
+            Map<String, String> addresses = Maps.newHashMap();
+            for (Map.Entry<String, BrokerData> clusterEntry : clusterEntries) {
+                HashMap<Long, String> addrs = clusterEntry.getValue().getBrokerAddrs();
+                Set<Map.Entry<Long, String>> addrsEntries = addrs.entrySet();
+                for (Map.Entry<Long, String> addrEntry : addrsEntries) {
+                    addresses.put(addrEntry.getValue(), clusterEntry.getKey() + ":" + addrEntry.getKey());
+                }
+            }
+            Set<Map.Entry<String, String>> entries = addresses.entrySet();
+            for (Map.Entry<String, String> entry : entries) {
+                List<String> list = dashboardCollectService.getBrokerMap().get(entry.getValue());
+                if (null == list) {
+                    list = Lists.newArrayList();
+                }
+                KVTable kvTable = fetchBrokerRuntimeStats(entry.getKey(), 3);
+                if (kvTable == null) {
+                    continue;
+                }
+                String[] tpsArray = kvTable.getTable().get("getTotalTps").split(" ");
+                BigDecimal totalTps = new BigDecimal(0);
+                for (String tps : tpsArray) {
+                    totalTps = totalTps.add(new BigDecimal(tps));
+                }
+                BigDecimal averageTps = totalTps.divide(new BigDecimal(tpsArray.length), 5, BigDecimal.ROUND_HALF_UP);
+                list.add(date.getTime() + "," + averageTps.toString());
+                dashboardCollectService.getBrokerMap().put(entry.getValue(), list);
+            }
+            log.debug("Broker Collected Data in memory = {}" + JsonUtil.obj2String(dashboardCollectService.getBrokerMap().asMap()));
+        }
+        catch (Exception e) {
+            throw Throwables.propagate(e);
+        }
+    }
+
+    private KVTable fetchBrokerRuntimeStats(String brokerAddr, Integer retryTime) {
+        if (retryTime == 0) {
+            return null;
+        }
+        try {
+            return mqAdminExt.fetchBrokerRuntimeStats(brokerAddr);
+        }
+        catch (Exception e) {
+            try {
+                Thread.sleep(1000);
+            }
+            catch (InterruptedException e1) {
+                throw Throwables.propagate(e1);
+            }
+            fetchBrokerRuntimeStats(brokerAddr, retryTime - 1);
+            throw Throwables.propagate(e);
+        }
+    }
+
+    @Scheduled(cron = "0/5 * * * * ?")
+    public void saveData() {
+        if (!rmqConfigure.isEnableDashBoardCollect()) {
+            return;
+        }
+        //one day refresh cache one time
+        String dataLocationPath = rmqConfigure.getConsoleCollectData();
+        DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+        String nowDateStr = format.format(new Date());
+        String currentDateStr = format.format(currentDate);
+        if (!currentDateStr.equals(nowDateStr)) {
+            dashboardCollectService.getBrokerMap().invalidateAll();
+            dashboardCollectService.getTopicMap().invalidateAll();
+            currentDate = new Date();
+        }
+        File brokerFile = new File(dataLocationPath + nowDateStr + ".json");
+        File topicFile = new File(dataLocationPath + nowDateStr + "_topic" + ".json");
+        try {
+            Map<String, List<String>> brokerFileMap;
+            Map<String, List<String>> topicFileMap;
+            if (brokerFile.exists()) {
+                brokerFileMap = dashboardCollectService.jsonDataFile2map(brokerFile);
+            }
+            else {
+                brokerFileMap = Maps.newHashMap();
+                Files.createParentDirs(brokerFile);
+            }
+
+            if (topicFile.exists()) {
+                topicFileMap = dashboardCollectService.jsonDataFile2map(topicFile);
+            }
+            else {
+                topicFileMap = Maps.newHashMap();
+                Files.createParentDirs(topicFile);
+            }
+
+            brokerFile.createNewFile();
+            topicFile.createNewFile();
+
+            writeFile(dashboardCollectService.getBrokerMap(), brokerFileMap, brokerFile);
+            writeFile(dashboardCollectService.getTopicMap(), topicFileMap, topicFile);
+            log.debug("Broker Collected Data in memory = {}" + JsonUtil.obj2String(dashboardCollectService.getBrokerMap().asMap()));
+            log.debug("Topic Collected Data in memory = {}" + JsonUtil.obj2String(dashboardCollectService.getTopicMap().asMap()));
+
+        }
+        catch (IOException e) {
+            throw Throwables.propagate(e);
+        }
+    }
+
+    private void writeFile(LoadingCache<String, List<String>> map, Map<String, List<String>> fileMap,
+        File file) throws IOException {
+        Map<String, List<String>> newMap = map.asMap();
+        Map<String, List<String>> resultMap = Maps.newHashMap();
+        if (fileMap.size() == 0) {
+            resultMap = newMap;
+        }
+        else {
+            for (Map.Entry<String, List<String>> entry : fileMap.entrySet()) {
+                List<String> oldList = entry.getValue();
+                List<String> newList = newMap.get(entry.getKey());
+                resultMap.put(entry.getKey(), appendData(newList, oldList));
+                if (newList == null || newList.size() == 0) {
+                    map.put(entry.getKey(), appendData(newList, oldList));
+                }
+            }
+
+            for (Map.Entry<String, List<String>> entry : newMap.entrySet()) {
+                List<String> oldList = fileMap.get(entry.getKey());
+                if (oldList == null || oldList.size() == 0) {
+                    resultMap.put(entry.getKey(), entry.getValue());
+                }
+            }
+        }
+        Files.write(JsonUtil.obj2String(resultMap).getBytes(), file);
+    }
+
+    private List<String> appendData(List<String> newTpsList, List<String> oldTpsList) {
+        List<String> result = Lists.newArrayList();
+        if (newTpsList == null || newTpsList.size() == 0) {
+            return oldTpsList;
+        }
+        if (oldTpsList == null || oldTpsList.size() == 0) {
+            return newTpsList;
+        }
+        String oldLastTps = oldTpsList.get(oldTpsList.size() - 1);
+        Long oldLastTimestamp = Long.parseLong(oldLastTps.split(",")[0]);
+        String newFirstTps = newTpsList.get(0);
+        Long newFirstTimestamp = Long.parseLong(newFirstTps.split(",")[0]);
+        if (oldLastTimestamp.longValue() < newFirstTimestamp.longValue()) {
+            result.addAll(oldTpsList);
+            result.addAll(newTpsList);
+            return result;
+        }
+        return newTpsList;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/task/MonitorTask.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/task/MonitorTask.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/task/MonitorTask.java
new file mode 100644
index 0000000..0db07be
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/task/MonitorTask.java
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.task;
+
+import java.util.Map;
+import javax.annotation.Resource;
+import org.apache.rocketmq.console.model.ConsumerMonitorConfig;
+import org.apache.rocketmq.console.model.GroupConsumeInfo;
+import org.apache.rocketmq.console.service.ConsumerService;
+import org.apache.rocketmq.console.service.MonitorService;
+import org.apache.rocketmq.console.util.JsonUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+@Component
+public class MonitorTask {
+    private Logger logger = LoggerFactory.getLogger(MonitorTask.class);
+
+    @Resource
+    private MonitorService monitorService;
+
+    @Resource
+    private ConsumerService consumerService;
+
+//    @Scheduled(cron = "* * * * * ?")
+    public void scanProblemConsumeGroup() {
+        for (Map.Entry<String, ConsumerMonitorConfig> configEntry : monitorService.queryConsumerMonitorConfig().entrySet()) {
+            GroupConsumeInfo consumeInfo = consumerService.queryGroup(configEntry.getKey());
+            if (consumeInfo.getCount() < configEntry.getValue().getMinCount() || consumeInfo.getDiffTotal() > configEntry.getValue().getMaxDiffTotal()) {
+                logger.info("op=look consumeInfo {}", JsonUtil.obj2String(consumeInfo)); // notify the alert system
+            }
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/util/JsonUtil.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/util/JsonUtil.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/util/JsonUtil.java
new file mode 100644
index 0000000..857a7fa
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/util/JsonUtil.java
@@ -0,0 +1,156 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package org.apache.rocketmq.console.util;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;
+import com.google.common.base.Strings;
+import com.google.common.base.Throwables;
+import java.io.IOException;
+import java.io.Writer;
+import java.text.SimpleDateFormat;
+import java.util.Map;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings("unchecked")
+public class JsonUtil {
+
+    private static Logger logger = LoggerFactory.getLogger(JsonUtil.class);
+    private static ObjectMapper objectMapper = new ObjectMapper();
+
+    private JsonUtil() {
+    }
+
+    static {
+        objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
+        objectMapper.configure(SerializationFeature.WRITE_ENUMS_USING_TO_STRING, true);
+        objectMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
+        objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
+        objectMapper.setFilters(new SimpleFilterProvider().setFailOnUnknownId(false));
+        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
+        objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
+    }
+
+    public static void writeValue(Writer writer, Object obj) {
+        try {
+            objectMapper.writeValue(writer, obj);
+        }
+        catch (IOException e) {
+            Throwables.propagateIfPossible(e);
+        }
+    }
+
+    public static <T> String obj2String(T src) {
+        if (src == null) {
+            return null;
+        }
+
+        try {
+            return src instanceof String ? (String)src : objectMapper.writeValueAsString(src);
+        }
+        catch (Exception e) {
+            logger.error("Parse Object to String error src=" + src, e);
+            return null;
+        }
+    }
+
+    public static <T> byte[] obj2Byte(T src) {
+        if (src == null) {
+            return null;
+        }
+
+        try {
+            return src instanceof byte[] ? (byte[])src : objectMapper.writeValueAsBytes(src);
+        }
+        catch (Exception e) {
+            logger.error("Parse Object to byte[] error", e);
+            return null;
+        }
+    }
+
+    public static <T> T string2Obj(String str, Class<T> clazz) {
+        if (Strings.isNullOrEmpty(str) || clazz == null) {
+            return null;
+        }
+        str = escapesSpecialChar(str);
+        try {
+            return clazz.equals(String.class) ? (T)str : objectMapper.readValue(str, clazz);
+        }
+        catch (Exception e) {
+            logger.error("Parse String to Object error\nString: {}\nClass<T>: {}\nError: {}", str, clazz.getName(), e);
+            return null;
+        }
+    }
+
+    public static <T> T byte2Obj(byte[] bytes, Class<T> clazz) {
+        if (bytes == null || clazz == null) {
+            return null;
+        }
+        try {
+            return clazz.equals(byte[].class) ? (T)bytes : objectMapper.readValue(bytes, clazz);
+        }
+        catch (Exception e) {
+            logger.error("Parse byte[] to Object error\nbyte[]: {}\nClass<T>: {}\nError: {}", bytes, clazz.getName(), e);
+            return null;
+        }
+    }
+
+    public static <T> T string2Obj(String str, TypeReference<T> typeReference) {
+        if (Strings.isNullOrEmpty(str) || typeReference == null) {
+            return null;
+        }
+        str = escapesSpecialChar(str);
+        try {
+            return (T)(typeReference.getType().equals(String.class) ? str : objectMapper.readValue(str, typeReference));
+        }
+        catch (Exception e) {
+            logger.error("Parse String to Object error\nString: {}\nTypeReference<T>: {}\nError: {}", str,
+                typeReference.getType(), e);
+            return null;
+        }
+    }
+
+    public static <T> T byte2Obj(byte[] bytes, TypeReference<T> typeReference) {
+        if (bytes == null || typeReference == null) {
+            return null;
+        }
+        try {
+            return (T)(typeReference.getType().equals(byte[].class) ? bytes : objectMapper.readValue(bytes,
+                typeReference));
+        }
+        catch (Exception e) {
+            logger.error("Parse byte[] to Object error\nbyte[]: {}\nTypeReference<T>: {}\nError: {}", bytes,
+                typeReference.getType(), e);
+            return null;
+        }
+    }
+
+    public static <T> T map2Obj(Map<String, String> map, Class<T> clazz) {
+        String str = obj2String(map);
+        return string2Obj(str, clazz);
+    }
+
+    private static String escapesSpecialChar(String str) {
+        return str.replace("\n", "\\n").replace("\r", "\\r");
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/application.properties
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/application.properties b/rocketmq-console/src/main/resources/application.properties
new file mode 100644
index 0000000..de8eb1b
--- /dev/null
+++ b/rocketmq-console/src/main/resources/application.properties
@@ -0,0 +1,16 @@
+server.contextPath=
+server.port=8080
+#spring.application.index=true
+spring.application.name=rocketmq-console
+spring.http.encoding.charset=UTF-8
+spring.http.encoding.enabled=true
+spring.http.encoding.force=true
+logging.config=classpath:logback.xml
+#if this value is empty,use env value rocketmq.config.namesrvAddr  NAMESRV_ADDR | now, you can set it in ops page.default localhost:9876
+rocketmq.config.namesrvAddr=
+#if you use rocketmq version < 3.5.8, rocketmq.config.isVIPChannel should be false.default true
+rocketmq.config.isVIPChannel=
+#rocketmq-console's data path:dashboard/monitor
+rocketmq.config.dataPath=/tmp/rocketmq-console/data
+#set it false if you don't want use dashboard.default true
+rocketmq.config.enableDashBoardCollect=true
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/logback.xml
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/logback.xml b/rocketmq-console/src/main/resources/logback.xml
new file mode 100644
index 0000000..c1fc79a
--- /dev/null
+++ b/rocketmq-console/src/main/resources/logback.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+		<encoder charset="UTF-8">
+			<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] %5p %m%n</pattern>
+		</encoder>
+	</appender>
+
+	<appender name="FILE"
+		class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<file>${user.home}/logs/consolelogs/rocketmq-console.log</file>
+		<append>true</append>
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<fileNamePattern>${user.home}/logs/consolelogs/rocketmq-console-%d{yyyy-MM-dd}.%i.log
+			</fileNamePattern>
+			<timeBasedFileNamingAndTriggeringPolicy
+				class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+				<maxFileSize>104857600</maxFileSize>
+			</timeBasedFileNamingAndTriggeringPolicy>
+			<MaxHistory>10</MaxHistory>
+		</rollingPolicy>
+		<encoder>
+			<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] %5p %m%n</pattern>
+			<charset class="java.nio.charset.Charset">UTF-8</charset>
+		</encoder>
+	</appender>
+
+	<root level="INFO">
+		<appender-ref ref="STDOUT" />
+		<appender-ref ref="FILE" />
+	</root>
+
+</configuration> 
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/index.html
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/index.html b/rocketmq-console/src/main/resources/static/index.html
new file mode 100644
index 0000000..6e3e6aa
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/index.html
@@ -0,0 +1,117 @@
+<!DOCTYPE html>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<html lang="en" ng-app="app">
+<head>
+    <meta charset="UTF-8">
+    <title>RocketMq-console-ng</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name='description' content=''>
+    <meta name='keywords' content=''>
+    <!--iOS -->
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+
+    <!-- preLoading -->
+    <link rel="stylesheet" href="style/preLoading/normalize.css">
+    <link rel="stylesheet" href="style/preLoading/main.css">
+    <script src="vendor/preLoading/modernizr-2.6.2.min.js"></script>
+    <!-- preLoading -->
+
+    <link rel="stylesheet" href="vendor/bootstrap/css/bootstrap.min.css">
+    <link rel="stylesheet" href="vendor/bootstrap-material-design/css/bootstrap-material-design.css">
+    <link rel="stylesheet" href="vendor/bootstrap-material-design/css/ripples.css">
+    <link rel="stylesheet" href="vendor/angular/notification/angular-ui-notification.css">
+    <link rel="stylesheet" href="vendor/ng-dialog/ngDialog.min.css">
+    <link rel="stylesheet" href="vendor/ng-dialog/ngDialog-theme-default.css">
+    <link rel="stylesheet" href="vendor/dropdown/jquery.dropdown.css">
+    <link rel="stylesheet" href="vendor/datatimepicker/bootstrap-datetimepicker.min.css">
+    <link rel="stylesheet" href="vendor/font-awesome-4.7.0/css/font-awesome.min.css">
+    <link rel="stylesheet" href="vendor/font-awesome-4.7.0/fonts/fontawesome-webfont.svg">
+    <link rel="stylesheet" type="text/css" href="vendor/chosen/chosen.css"/>
+    <link rel="stylesheet" type="text/css" href="vendor/chosen/chosen-spinner.css"/>
+    <link rel="stylesheet" type="text/css" href="vendor/angular-material/angular-material.min.css"/>
+    <link rel="stylesheet" type="text/css" href="vendor/md-tab/docs.css"/>
+    <link rel="stylesheet" href="style/animate.css">
+    <link rel="stylesheet" href="style/theme.css">
+    <link rel="stylesheet" href="style/app.css">
+
+</head>
+<body ng-controller="AppCtrl">
+<!--[if lte IE 9]>
+<script type="text/javascript">
+    location.href = 'view/pages/un_support_browser.html';
+</script>
+<![endif]-->
+
+<div id="loader-wrapper">
+    <div id="loader"></div>
+
+    <div class="loader-section section-left"></div>
+    <div class="loader-section section-right"></div>
+
+</div>
+<div ng-include="'view/layout/_header.html'"></div>
+<section ng-view></section>
+<div ng-include="'view/layout/_footer.html'"></div>
+<script type="text/javascript" src="vendor/jquery/jquery1.11.3.min.js"></script>
+<script type="text/javascript" src="vendor/bootstrap/js/bootstrap.min.js"></script>
+<script type="text/javascript" src="vendor/bootstrap-material-design/js/material.min.js"></script>
+<script type="text/javascript" src="vendor/bootstrap-material-design/js/ripples.min.js"></script>
+<script type="text/javascript" src="vendor/angular/angular.min.js"></script>
+<script type="text/javascript" src="vendor/angular/angular-translate.min.js"></script>
+<script type="text/javascript"
+        src="vendor/angular/angular-translate-storage-cookie/angular-translate-storage-cookie.min.js"></script>
+<script type="text/javascript" src="vendor/angular/i18n/angular-locale_zh-cn.js"></script>
+<script type="text/javascript" src="src/i18n/en.js"></script>
+<script type="text/javascript" src="src/i18n/zh.js"></script>
+<script type="text/javascript" src="vendor/angular/angular-cookies.min.js"></script>
+<script type="text/javascript" src="vendor/angular/angular-animate.min.js"></script>
+<script type="text/javascript" src="vendor/angular/angular-route.min.js"></script>
+<script type="text/javascript" src="vendor/angular/angular-ui-router.min.js"></script>
+<script type="text/javascript" src="vendor/angular/angular-sanitize.min.js"></script>
+<script type="text/javascript" src="vendor/angular/angular-aria.min.js"></script>
+<script type="text/javascript" src="vendor/angular/angular-messages.min.js"></script>
+<script type="text/javascript" src="vendor/angular/angular-sanitize.min.js"></script>
+<script type="text/javascript" src="vendor/angular/notification/angular-ui-notification.js"></script>
+<script type="text/javascript" src="vendor/pagination/tm.pagination.js"></script>
+<script type="text/javascript" src="vendor/ng-dialog/ngDialog.min.js"></script>
+<script type="text/javascript" src="vendor/json-bigint/json-bigint.js"></script>
+<script type="text/javascript" src="vendor/dropdown/jquery.dropdown.js"></script>
+<script type="text/javascript" src="vendor/datatimepicker/moment.min.js"></script>
+<script type="text/javascript" src="vendor/datatimepicker/bootstrap-datetimepicker.min.js"></script>
+<script type="text/javascript" src="vendor/datatimepicker/angular-eonasdan-datetimepicker.min.js"></script>
+<script type="text/javascript" src="vendor/chosen/angular-chosen.js"></script>
+<script type="text/javascript" src="vendor/chosen/chosen.jquery.min.js"></script>
+<script type="text/javascript" src='vendor/md-tab/svg-assets-cache.js'></script>
+<script type="text/javascript" src='vendor/angular-material/angular-material.min.js'></script>
+<script type="text/javascript" src="vendor/echarts/echarts.min.js"></script>
+<script type="text/javascript" src="src/app.js"></script>
+<script type="text/javascript" src="src/controller.js?v=201702250025"></script>
+<script type="text/javascript" src="src/tools/tools.js?v=201703171710"></script>
+<script type="text/javascript" src="src/cluster.js?timestamp=4"></script>
+<script type="text/javascript" src="src/topic.js"></script>
+<script type="text/javascript" src="src/consumer.js?timestamp=6"></script>
+<script type="text/javascript" src="src/producer.js"></script>
+<script type="text/javascript" src="src/message.js"></script>
+<script type="text/javascript" src="src/ops.js?timestamp=7"></script>
+<script type="text/javascript" src="src/remoteApi/remoteApi.js"></script>
+<script type="text/javascript" src="vendor/preLoading/main.js"></script>
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/src/app.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/src/app.js b/rocketmq-console/src/main/resources/static/src/app.js
new file mode 100644
index 0000000..b241010
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/src/app.js
@@ -0,0 +1,208 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+'use strict';
+var app = angular.module('app', [
+    'ngAnimate',
+    'ngCookies',
+    'ngRoute',
+    'ngDialog',
+    'ngMaterial',
+    'ngSanitize',
+    'material.svgAssetsCache',
+    'ui-notification',
+    'tm.pagination',
+    'ae-datetimepicker',
+    'localytics.directives',
+    'pascalprecht.translate'
+]).run(
+        ['$rootScope','$location','$cookies',
+            function ($rootScope,$location,$cookies) {
+                // var filter = function(url){
+                //     var outFilterArrs = []
+                //     outFilterArrs.push("/login");
+                //     outFilterArrs.push("/reg");
+                //     outFilterArrs.push("/logout");
+                //     outFilterArrs.push("/404");
+                //     var flag = false;
+                //     $.each(outFilterArrs,function(i,value){
+                //         if(url.indexOf(value) > -1){
+                //             flag = true;
+                //             return false;
+                //         }
+                //     });
+                //     return flag;
+                // }
+
+                // if(angular.isDefined($cookies.get("isLogin")) && $cookies.get("isLogin") == 'true'){
+                //     chatApi.login();
+                // }
+
+
+                $rootScope.$on('$routeChangeSuccess', function() {
+                    var pathArray = $location.url().split("/");
+                    var index = pathArray.indexOf("");
+                    if(index >= 0){
+                        pathArray.remove(index);
+                    }
+                    $rootScope.path = pathArray[0];
+
+                    //初始化material UI控件
+                    $.material.init();
+                });
+
+                $rootScope.$on('$routeChangeStart',function (evt, next,current) {
+                    window.clearInterval($rootScope._thread);
+                })
+            }
+        ]
+    ).animation('.view', function () {
+        return {
+            animate: function (element, className, from, to, done) {
+                //styles
+            }
+        }
+    });
+
+app.provider('getDictName', function () {
+
+    var dictList = [];
+
+    this.init = function () {
+        var url = "src/data/dict.json";//无法使用common服务类,地址只能写死
+        var params = {};
+        $.get(url, params, function (ret) {
+            dictList = ret;
+        })
+    }
+
+    this.$get = function () {
+        return function (dictType, value) {
+            for (var i = 0; i < dictList.length; i++) {
+                var dict = dictList[i];
+                if (dict.TYPE == dictType && dict.DICT_VALUE == value) {
+                    return dict.DICT_NAME;
+                }
+            }
+        }
+    }
+})
+
+app.config(['$routeProvider', '$httpProvider','$cookiesProvider','getDictNameProvider','$sceProvider','$translateProvider','$mdThemingProvider',
+    function ($routeProvider, $httpProvider ,$cookiesProvider,getDictNameProvider,$sceProvider,$translateProvider,$mdThemingProvider) {
+        //关闭html校验,存在安全隐患,但目前没问题,使用ng-bind-html需要注意,防止跨站攻击
+        $sceProvider.enabled(false);
+        //前端字典项目初始化
+        getDictNameProvider.init();
+
+        //init angular
+        $mdThemingProvider.theme('default')
+            .primaryPalette('pink')
+            .accentPalette('light-blue');
+
+
+        //设置ajax默认配置
+        $.ajaxSetup({
+            type: "POST",
+            contentType: 'application/json',
+            cache:false,
+            timeout : 5000, //超时时间设置,单位毫秒
+            converters:{
+                "text json": JSONbig.parse
+            }
+        });
+
+        $httpProvider.defaults.cache = false;
+
+        $routeProvider.when('/', {
+            templateUrl: 'view/pages/index.html',
+            controller:'dashboardCtrl'
+        }).when('/cluster', {
+            templateUrl: 'view/pages/cluster.html',
+            controller:'clusterController'
+        }).when('/topic', {
+            templateUrl: 'view/pages/topic.html',
+            controller:'topicController'
+        }).when('/consumer', {
+            templateUrl: 'view/pages/consumer.html',
+            controller:'consumerController'
+        }).when('/producer', {
+            templateUrl: 'view/pages/producer.html',
+            controller:'producerController'
+        }).when('/message', {
+            templateUrl: 'view/pages/message.html',
+            controller:'messageController'
+        }).when('/ops', {
+            templateUrl: 'view/pages/ops.html',
+            controller:'opsController'
+        }).when('/404', {
+            templateUrl: '404'
+        }).otherwise('404');
+
+        $translateProvider.translations('en',en);
+        $translateProvider.translations('zh',zh);
+        $translateProvider.preferredLanguage('en');
+        $translateProvider.useCookieStorage();
+//        $translateProvider.useSanitizeValueStrategy('sanitize');
+
+    }]);
+
+app.filter('range', function() {
+    return function(input, range) {
+        var total = parseInt(range.totalPage) + 1;
+        var count = 5;
+        for (var i = range.start; i<total; i++) {
+            if(count > 0){
+                input.push(i);
+                count -- ;
+            }else {
+                break;
+            }
+        }
+        return input;
+    };
+});
+
+
+app.filter('dict',['getDictName',function(getDictName){
+    return function(value,type){
+        return getDictName(type,value);
+    }
+}])
+
+/**
+ * 数组扩展方法,移除数组中某一元素或某一段元素
+ * @param from 需要移除元素的索引开始值(只传一个参数表示单独移除该元素)
+ * @param to 需要移除元素的索引结束值
+ * @returns {*}
+ */
+Array.prototype.remove = function(from, to) {
+    var rest = this.slice((to || from) + 1 || this.length);
+    this.length = from < 0 ? this.length + from : from;
+    return this.push.apply(this, rest);
+};
+
+/**
+ * 根据元素值查询数组中元素的索引
+ * @param val
+ * @returns {number}
+ */
+Array.prototype.indexOf = function(val) {
+    for (var i = 0; i < this.length; i++) {
+        if (this[i] == val) return i;
+    }
+    return -1;
+};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/src/cluster.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/src/cluster.js b/rocketmq-console/src/main/resources/static/src/cluster.js
new file mode 100644
index 0000000..6f1baee
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/src/cluster.js
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+app.controller('clusterController', ['$scope','$location','$http','Notification','remoteApi','tools', function ($scope,$location,$http,Notification,remoteApi,tools) {
+    $scope.clusterMap = {};//cluster:brokerNameList
+    $scope.brokerMap = {};//brokerName:{id:addr}
+    $scope.brokerDetail = {};//{brokerName,id:detail}
+    $scope.clusterNames = [];
+    $scope.selectedCluster = "";
+    var callback = function (resp) {
+        if (resp.status == 0) {
+            $scope.clusterMap = resp.data.clusterInfo.clusterAddrTable;
+            $scope.brokerMap = resp.data.clusterInfo.brokerAddrTable;
+            $scope.brokerDetail = resp.data.brokerServer;
+            $.each($scope.clusterMap,function(clusterName,clusterBrokersNames){
+                $scope.clusterNames.push(clusterName);
+            });
+            if ($scope.clusterNames.length > 0) {
+                $scope.selectedCluster = $scope.clusterNames[0];
+            }
+            $scope.brokers = tools.generateBrokerMap($scope.brokerDetail,$scope.clusterMap,$scope.brokerMap);
+            $scope.switchCluster();
+        }else{
+            Notification.error({message: resp.errMsg, delay: 2000});
+        }
+    }
+
+    remoteApi.queryClusterList(callback);
+
+    $scope.switchCluster = function(){
+        $scope.instances = $scope.brokers[$scope.selectedCluster];
+    }
+
+    $scope.showDetail = function (brokerName,index) {
+        $scope.detail = $scope.brokerDetail[brokerName][index];
+        $scope.brokerName = brokerName;
+        $scope.index = index;
+        $(".brokerModal").modal();
+    }
+
+    $scope.showConfig = function (brokerAddr,brokerName,index) {
+        $scope.brokerAddr = brokerAddr;
+        $scope.brokerName = brokerName;
+        $scope.index = index;
+        $http({
+            method: "GET",
+            url: "cluster/brokerConfig.query",
+            params:{brokerAddr:brokerAddr}
+        }).success(function (resp) {
+            if (resp.status == 0) {
+                $scope.brokerConfig = resp.data;
+                $(".configModal").modal();
+            }else{
+                Notification.error({message: resp.errMsg, delay: 2000});
+            }
+        })
+    }
+}])

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/src/consumer.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/src/consumer.js b/rocketmq-console/src/main/resources/static/src/consumer.js
new file mode 100644
index 0000000..cd093d4
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/src/consumer.js
@@ -0,0 +1,350 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var module = app;
+
+module.controller('consumerController', ['$scope', 'ngDialog', '$http','Notification',function ($scope, ngDialog, $http,Notification) {
+    $scope.paginationConf = {
+        currentPage: 1,
+        totalItems: 0,
+        itemsPerPage: 10,
+        pagesLength: 15,
+        perPageOptions: [10],
+        rememberPerPage: 'perPageItems',
+        onChange: function () {
+            $scope.showConsumerGroupList(this.currentPage,this.totalItems);
+        }
+    };
+    $scope.sortKey = null;
+    $scope.sortOrder=1;
+    $scope.intervalProcessSwitch = false;
+    $scope.intervalProcess = null;
+    $scope.allConsumerGrouopList = [];
+    $scope.consumerGroupShowList = [];
+    $scope.sortByKey = function (key) {
+        $scope.paginationConf.currentPage=1;
+        $scope.sortOrder = -$scope.sortOrder;
+        $scope.sortKey = key;
+        $scope.doSort();
+    };
+
+    $scope.doSort = function (){// todo  how to change this fe's code ? (it's dirty)
+        if($scope.sortKey == 'diffTotal'){
+            $scope.allConsumerGrouopList.sort(function(a,b) {return (a.diffTotal > b.diffTotal) ? $scope.sortOrder : ((b.diffTotal > a.diffTotal) ? -$scope.sortOrder : 0);} );
+        }
+        if($scope.sortKey == 'group'){
+            $scope.allConsumerGrouopList.sort(function(a,b) {return (a.group > b.group) ? $scope.sortOrder : ((b.group > a.group) ? -$scope.sortOrder : 0);} );
+        }
+        if($scope.sortKey == 'count'){
+            $scope.allConsumerGrouopList.sort(function(a,b) {return (a.count > b.count) ? $scope.sortOrder : ((b.count > a.count) ? -$scope.sortOrder : 0);} );
+        }
+        if($scope.sortKey == 'consumeTps'){
+            $scope.allConsumerGrouopList.sort(function(a,b) {return (a.consumeTps > b.consumeTps) ? $scope.sortOrder : ((b.consumeTps > a.consumeTps) ? -$scope.sortOrder : 0);} );
+        }
+        $scope.filterList($scope.paginationConf.currentPage)
+    };
+    $scope.refreshConsumerData = function () {
+        $http({
+            method: "GET",
+            url: "consumer/groupList.query"
+        }).success(function (resp) {
+            if(resp.status ==0){
+                $scope.allConsumerGrouopList = resp.data;
+                console.log($scope.allConsumerGrouopList);
+                console.log(JSON.stringify(resp));
+                $scope.showConsumerGroupList($scope.paginationConf.currentPage,$scope.allConsumerGrouopList.length);
+            }else {
+                Notification.error({message: resp.errMsg, delay: 2000});
+            }
+        });
+    };
+    $scope.monitor = function(consumerGroupName){
+        $http({
+            method: "GET",
+            url: "monitor/consumerMonitorConfigByGroupName.query",
+            params:{consumeGroupName:consumerGroupName}
+        }).success(function (resp) {
+            // if(resp.status ==0){
+                ngDialog.open({
+                    template: 'consumerMonitorDialog',
+                    controller: 'consumerMonitorDialogController',
+                    data:{consumerGroupName:consumerGroupName,data:resp.data}
+                });
+            // }else {
+            //     Notification.error({message: resp.errMsg, delay: 2000});
+            // }
+        });
+    };
+
+
+    $scope.$watch('intervalProcessSwitch', function () {
+        if ($scope.intervalProcess != null) {
+            clearInterval($scope.intervalProcess);
+            $scope.intervalProcess = null;
+        }
+        if ($scope.intervalProcessSwitch) {
+            $scope.intervalProcess = setInterval($scope.refreshConsumerData, 10000);
+        }
+    });
+
+
+    $scope.refreshConsumerData();
+    $scope.filterStr="";
+    $scope.$watch('filterStr', function() {
+        $scope.paginationConf.currentPage=1;
+        $scope.filterList(1)
+    });
+
+    $scope.filterList = function (currentPage) {
+        var lowExceptStr =  $scope.filterStr.toLowerCase();
+        var canShowList = [];
+        $scope.allConsumerGrouopList.forEach(function(element) {
+            console.log(element)
+            if (element.group.toLowerCase().indexOf(lowExceptStr) != -1){
+                canShowList.push(element);
+            }
+        });
+        $scope.paginationConf.totalItems =canShowList.length;
+        var perPage = $scope.paginationConf.itemsPerPage;
+        var from = (currentPage - 1) * perPage;
+        var to = (from + perPage)>canShowList.length?canShowList.length:from + perPage;
+        $scope.consumerGroupShowList = canShowList.slice(from, to);
+    };
+
+
+    $scope.showConsumerGroupList = function (currentPage,totalItem) {
+        var perPage = $scope.paginationConf.itemsPerPage;
+        var from = (currentPage - 1) * perPage;
+        var to = (from + perPage)>totalItem?totalItem:from + perPage;
+        $scope.consumerGroupShowList = $scope.allConsumerGrouopList.slice(from, to);
+        $scope.paginationConf.totalItems = totalItem ;
+        console.log($scope.consumerGroupShowList)
+        console.log($scope.paginationConf.totalItems)
+        $scope.doSort()
+    };
+    $scope.openAddDialog = function () {
+        $scope.openCreateOrUpdateDialog(null);
+    };
+    $scope.openCreateOrUpdateDialog = function(request){
+        var bIsUpdate = true;
+        if(request == null){
+            request = [{
+                brokerNameList: [],
+                subscriptionGroupConfig: {
+                    groupName: "",
+                    consumeEnable: true,
+                    consumeFromMinEnable: true,
+                    consumeBroadcastEnable: true,
+                    retryQueueNums: 1,
+                    retryMaxTimes: 16,
+                    brokerId: 0,
+                    whichBrokerWhenConsumeSlowly: 1
+                }
+            }];
+            bIsUpdate = false;
+        }
+        console.log(request);
+        $http({
+            method: "GET",
+            url: "cluster/list.query"
+        }).success(function (resp) {
+            if(resp.status ==0){
+                console.log(resp);
+                ngDialog.open({
+                    template: 'consumerModifyDialog',
+                    controller: 'consumerModifyDialogController',
+                    data:{
+                        consumerRequestList:request,
+                        allClusterNameList:Object.keys(resp.data.clusterInfo.clusterAddrTable),
+                        allBrokerNameList:Object.keys(resp.data.brokerServer),
+                        bIsUpdate:bIsUpdate
+                    }
+                });
+            }else {
+                Notification.error({message: resp.errMsg, delay: 2000});
+            }
+        });
+    };
+    $scope.detail = function(consumerGroupName){
+        $http({
+            method: "GET",
+            url: "consumer/queryTopicByConsumer.query",
+            params:{consumerGroup:consumerGroupName}
+        }).success(function (resp) {
+            if(resp.status ==0){
+                console.log(resp);
+                ngDialog.open({
+                    template: 'consumerTopicViewDialog',
+                    controller: 'consumerTopicViewDialogController',
+                    data:{consumerGroupName:consumerGroupName,data:resp.data}
+                });
+            }else {
+                Notification.error({message: resp.errMsg, delay: 2000});
+            }
+        });
+    };
+
+    $scope.client = function(consumerGroupName){
+        $http({
+            method: "GET",
+            url: "consumer/consumerConnection.query",
+            params:{consumerGroup:consumerGroupName}
+        }).success(function (resp) {
+            if(resp.status ==0){
+                console.log(resp);
+                ngDialog.open({
+                    template: 'clientInfoDialog',
+                    // controller: 'addTopicDialogController',
+                    data:{data:resp.data,consumerGroupName:consumerGroupName}
+                });
+            }else {
+                Notification.error({message: resp.errMsg, delay: 2000});
+            }
+        });
+    };
+    $scope.updateConfigDialog = function(consumerGroupName){
+        $http({
+            method: "GET",
+            url: "consumer/examineSubscriptionGroupConfig.query",
+            params:{consumerGroup:consumerGroupName}
+        }).success(function (resp) {
+            if(resp.status ==0){
+                console.log(resp);
+                $scope.openCreateOrUpdateDialog(resp.data);
+            }else {
+                Notification.error({message: resp.errMsg, delay: 2000});
+            }
+        });
+
+
+    };
+    $scope.delete = function(consumerGroupName){
+        $http({
+            method: "GET",
+            url: "consumer/fetchBrokerNameList.query",
+            params:{
+                consumerGroup:consumerGroupName
+            }
+        }).success(function (resp) {
+            if(resp.status ==0){
+                console.log(resp);
+
+                ngDialog.open({
+                    template: 'deleteConsumerDialog',
+                    controller: 'deleteConsumerDialogController',
+                    data:{
+                        // allClusterList:Object.keys(resp.data.clusterInfo.clusterAddrTable),
+                        allBrokerNameList:resp.data,
+                        consumerGroupName:consumerGroupName
+                    }
+                });
+            }else {
+                Notification.error({message: resp.errMsg, delay: 2000});
+            }
+        });
+    }
+
+}])
+module.controller('consumerMonitorDialogController', function ($scope, ngDialog, $http,Notification) {
+        $scope.createOrUpdateConsumerMonitor = function () {
+            $http({
+                method: "POST",
+                url: "monitor/createOrUpdateConsumerMonitor.do",
+                params:{consumeGroupName:$scope.ngDialogData.consumerGroupName,
+                    minCount:$scope.ngDialogData.data.minCount,
+                    maxDiffTotal:$scope.ngDialogData.data.maxDiffTotal}
+            }).success(function (resp) {
+                if(resp.status ==0){
+                    Notification.info({message: "delete success!", delay: 2000});
+                }else {
+                    Notification.error({message: resp.errMsg, delay: 2000});
+                }
+            });
+        }
+    }
+);
+
+
+module.controller('deleteConsumerDialogController', ['$scope', 'ngDialog', '$http','Notification',function ($scope, ngDialog, $http,Notification) {
+        $scope.selectedClusterList = [];
+        $scope.selectedBrokerNameList = [];
+        $scope.delete = function () {
+            console.log($scope.selectedClusterList);
+            console.log($scope.selectedBrokerNameList);
+            console.log($scope.ngDialogData.consumerGroupName);
+            $http({
+                method: "POST",
+                url: "consumer/deleteSubGroup.do",
+                data:{groupName:$scope.ngDialogData.consumerGroupName,
+                    brokerNameList:$scope.selectedBrokerNameList}
+            }).success(function (resp) {
+                if(resp.status ==0){
+                    Notification.info({message: "delete success!", delay: 2000});
+                }else {
+                    Notification.error({message: resp.errMsg, delay: 2000});
+                }
+            });
+        }
+    }]
+);
+
+module.controller('consumerModifyDialogController', ['$scope', 'ngDialog', '$http','Notification',function ($scope, ngDialog, $http,Notification) {
+        $scope.postConsumerRequest = function (consumerRequest) {
+            var request = JSON.parse(JSON.stringify(consumerRequest));
+            console.log(request);
+            $http({
+                method: "POST",
+                url: "consumer/createOrUpdate.do",
+                data:request
+            }).success(function (resp) {
+                if(resp.status ==0){
+                    Notification.info({message: "update success!", delay: 2000});
+                }else {
+                    Notification.error({message: resp.errMsg, delay: 2000});
+                }
+            });
+        }
+    }]
+);
+
+module.controller('consumerTopicViewDialogController', ['$scope', 'ngDialog', '$http', 'Notification', function ($scope, ngDialog, $http, Notification) {
+        $scope.consumerRunningInfo = function (consumerGroup, clientId, jstack) {
+            $http({
+                method: "GET",
+                url: "consumer/consumerRunningInfo.query",
+                params: {
+                    consumerGroup: consumerGroup,
+                    clientId: clientId,
+                    jstack: jstack
+                }
+            }).success(function (resp) {
+                if (resp.status == 0) {
+                    ngDialog.open({
+                        template: 'consumerClientDialog',
+                        data:{consumerClientInfo:resp.data,
+                        clientId:clientId}
+                    });
+                } else {
+                    Notification.error({message: resp.errMsg, delay: 2000});
+                }
+            });
+        };
+    }]
+);
+
+
+

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/src/controller.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/src/controller.js b/rocketmq-console/src/main/resources/static/src/controller.js
new file mode 100644
index 0000000..8d5d5d2
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/src/controller.js
@@ -0,0 +1,557 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+app.controller('AppCtrl', ['$scope','$rootScope','$cookies','$location','$translate', function ($scope,$rootScope,$cookies,$location,$translate) {
+    $scope.changeTranslate = function(langKey){
+        $translate.use(langKey);
+    }
+}]);
+
+app.controller('dashboardCtrl', ['$scope','$rootScope','$translate','$filter','Notification','remoteApi','tools', function ($scope,$rootScope,$translate,$filter,Notification,remoteApi,tools) {
+
+    $scope.barChart = echarts.init(document.getElementById('main'));
+    $scope.lineChart = echarts.init(document.getElementById('line'));
+    $scope.topicBarChart = echarts.init(document.getElementById('topicBar'));
+    $scope.topicLineChart = echarts.init(document.getElementById('topicLine'));
+    $scope.timepickerOptions ={format: 'YYYY-MM-DD', showClear: true};
+    $scope.topicNames = [];
+
+    $translate('BROKER').then(function (broker) {
+        $scope.BROKER_TITLE = broker;
+        initBrokerBarChart();
+        initBrokerLineChart();
+    }, function (translationId) {
+        $scope.BROKER_TITLE = translationId;
+    });
+
+    $translate('TOPIC').then(function (topic) {
+        $scope.TOPIC_TITLE = topic;
+        initTopicBarChart();
+        initTopicLineChart();
+    }, function (translationId) {
+        $scope.TOPIC_TITLE = translationId;
+    });
+
+    var initBrokerBarChart = function(){
+        $scope.barChart.setOption({
+            title: {
+                text:$scope.BROKER_TITLE + ' TOP 10'
+            },
+            tooltip: {},
+            legend: {
+                data:['TotalMsg']
+            },
+            axisPointer : {
+                type : 'shadow'
+            },
+            xAxis: {
+                data: [],
+                axisLabel: {
+                    inside: false,
+                    textStyle: {
+                        color: '#000000'
+                    },
+                    rotate: 0,
+                    interval:0
+                },
+                axisTick: {
+                    show: true
+                },
+                axisLine: {
+                    show: true
+                },
+                z: 10
+            },
+            yAxis: {
+                type: 'value',
+                boundaryGap: [0, '100%'],
+                axisLabel: {
+                    formatter: function(value){
+                        return value.toFixed(2);
+                    }
+                },
+                splitLine: {
+                    show: true
+                }
+            },
+            series: [{
+                name: 'TotalMsg',
+                type: 'bar',
+                data: []
+            }]
+        })
+    }
+
+    var initBrokerLineChart = function(){
+        $scope.lineChart.setOption({
+            title: {
+                text: $scope.BROKER_TITLE + ' 5min trend'
+            },
+            toolbox: {
+                feature: {
+                    dataZoom: {
+                        yAxisIndex: 'none'
+                    },
+                    restore: {},
+                    saveAsImage: {}
+                }
+            },
+            tooltip: {
+                trigger: 'axis',
+                axisPointer: {
+                    animation: false
+                }
+            },
+            yAxis: {
+                type: 'value',
+                boundaryGap: [0, '80%'],
+                axisLabel: {
+                    formatter: function(value){
+                        return value.toFixed(2);
+                    }
+                },
+                splitLine: {
+                    show: true
+                }
+            },
+            dataZoom: [{
+                type: 'inside',
+                start: 90,
+                end: 100
+            }, {
+                start: 0,
+                end: 10,
+                handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z',
+                handleSize: '80%',
+                handleStyle: {
+                    color: '#fff',
+                    shadowBlur: 3,
+                    shadowColor: 'rgba(0, 0, 0, 0.6)',
+                    shadowOffsetX: 2,
+                    shadowOffsetY: 2
+                }
+            }],
+            legend: {
+                data: [],
+                top:30
+            },
+            xAxis: {
+                type: 'time',
+                boundaryGap: false,
+                data: []
+            },
+            series: []
+        })
+
+    }
+
+    var initTopicBarChart = function(){
+        $scope.topicBarChart.setOption({
+            title: {
+                text:$scope.TOPIC_TITLE + ' TOP 10'
+            },
+            tooltip: {},
+            legend: {
+                data:['TotalMsg']
+            },
+            axisPointer : {
+                type : 'shadow'
+            },
+            xAxis: {
+                data: [],
+                axisLabel: {
+                    inside: false,
+                    textStyle: {
+                        color: '#000000'
+                    },
+                    rotate: 0,
+                    interval:0
+                },
+                axisTick: {
+                    show: true
+                },
+                axisLine: {
+                    show: true
+                },
+                z: 10
+            },
+            yAxis: {
+                type: 'value',
+                boundaryGap: [0, '100%'],
+                axisLabel: {
+                    formatter: function(value){
+                        return value.toFixed(2);
+                    }
+                },
+                splitLine: {
+                    show: true
+                }
+            },
+            series: [{
+                name: 'TotalMsg',
+                type: 'bar',
+                data: []
+            }]
+        })
+    }
+
+    var initTopicLineChart = function(){
+        var _option = {
+            baseOption:{
+                title: {
+                    text: $scope.TOPIC_TITLE + ' 5min trend'
+                },
+                toolbox: {
+                    feature: {
+                        dataZoom: {
+                            yAxisIndex: 'none'
+                        },
+                        restore: {},
+                        saveAsImage: {}
+                    }
+                },
+                grid:{
+                    top:100
+                },
+                tooltip: {
+                    trigger: 'axis',
+                    axisPointer: {
+                        animation: false
+                    }
+                },
+                yAxis: {
+                    type: 'value',
+                    boundaryGap: [0, '80%'],
+                    axisLabel: {
+                        formatter: function(value){
+                            return value.toFixed(2);
+                        }
+                    },
+                    splitLine: {
+                        show: true
+                    }
+                },
+                dataZoom: [{
+                    type: 'inside',
+                    start: 90,
+                    end: 100
+                }, {
+                    start: 0,
+                    end: 10,
+                    handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z',
+                    handleSize: '80%',
+                    handleStyle: {
+                        color: '#fff',
+                        shadowBlur: 3,
+                        shadowColor: 'rgba(0, 0, 0, 0.6)',
+                        shadowOffsetX: 2,
+                        shadowOffsetY: 2
+                    }
+                }],
+                legend:{
+                    data:[],
+                    top:30
+                },
+                xAxis: {
+                    type: 'time',
+                    boundaryGap: false,
+                    data: []
+                },
+                series: []
+            }
+        }
+        $scope.topicLineChart.setOption(_option)
+
+    }
+
+    var getBrokerBarChartOp = function(xAxisData,data){
+        // 指定图表的配置项和数据
+        var option = {
+            xAxis: {
+                data: xAxisData,
+                axisLabel: {
+                    inside: false,
+                    textStyle: {
+                        color: '#000000'
+                    },
+                    rotate: 0,
+                    interval:0
+                },
+                axisTick: {
+                    show: true
+                },
+                axisLine: {
+                    show: true
+                },
+                z: 10
+            },
+            series: [{
+                name: 'TotalMsg',
+                type: 'bar',
+                data: data
+            }]
+        };
+
+        $scope.barChart.setOption(option);
+    }
+
+    var callback = function (resp) {
+        $scope.barChart.hideLoading();
+        if (resp.status == 0) {
+            var clusterAddrTable = resp.data.clusterInfo.clusterAddrTable;
+            var brokerMap = resp.data.clusterInfo.brokerAddrTable;
+            var brokerDetail = resp.data.brokerServer;
+            var clusterMap = tools.generateBrokerMap(brokerDetail,clusterAddrTable,brokerMap);
+            $scope.brokerArray = [];
+            $.each(clusterMap,function(clusterName,brokers){
+                $.each(brokers,function(i,broker){
+                    $scope.brokerArray.push(broker)
+                })
+            });
+
+            //sort the brokerArray
+            $scope.brokerArray.sort(function(firstBroker,lastBroker){
+                var firstTotalMsg = parseFloat(firstBroker.msgGetTotalTodayNow);
+                var lastTotalMsg = parseFloat(lastBroker.msgGetTotalTodayNow);
+                return lastTotalMsg-firstTotalMsg;
+            });
+
+            var xAxisData = [],
+                data = [];
+
+            $.each($scope.brokerArray,function(i,broker){
+                if(i > 9){
+                    return false;
+                }
+                xAxisData.push(broker.brokerName + ":" + broker.index);
+                data.push(broker.msgGetTotalTodayNow);
+            })
+            getBrokerBarChartOp(xAxisData,data);
+        }else{
+            Notification.error({message: resp.errMsg, delay: 2000});
+        }
+    }
+
+    $scope.barChart.showLoading();
+    remoteApi.queryClusterList(callback);
+
+    $scope.topicBarChart.showLoading();
+    remoteApi.queryTopicCurrentData(function(resp){
+        $scope.topicBarChart.hideLoading();
+        if (resp.status == 0) {
+            var topicList = resp.data;
+            topicList.sort(function(first,last){
+                var firstTotalMsg = parseFloat(first.split(",")[1]);
+                var lastTotalMsg = parseFloat(last.split(",")[1]);
+                return lastTotalMsg-firstTotalMsg;
+            })
+
+            var xAxisData = [];
+            var data = [];
+            $.each(topicList,function (i,currentData) {
+                var currentArray = currentData.split(",");
+                $scope.topicNames.push(currentArray[0]);
+                if(!angular.isDefined($scope.selectedTopic)){
+                    $scope.selectedTopic = currentArray[0];
+                }
+            })
+            $.each(topicList,function (i, currentData) {
+                if(i > 9){
+                    return false;
+                }
+                var currentArray = currentData.split(",");
+                xAxisData.push(currentArray[0]);
+                data.push(currentArray[1]);
+            })
+            // 指定图表的配置项和数据
+            var option = {
+                xAxis: {
+                    data: xAxisData,
+                    axisLabel: {
+                        inside: false,
+                        textStyle: {
+                            color: '#000000'
+                        },
+                        rotate: 60,
+                        interval:0
+                    },
+                    axisTick: {
+                        show: true
+                    },
+                    axisLine: {
+                        show: true
+                    },
+                    z: 10
+                },
+                series: [{
+                    name: 'TotalMsg',
+                    type: 'bar',
+                    data: data
+                }]
+            };
+            $scope.topicBarChart.setOption(option);
+            queryLineData();
+        }else{
+            Notification.error({message: resp.errMsg, delay: 2000});
+        }
+    })
+
+
+    var getBrokerLineChart = function(legend,data){
+        var series = [];
+        var xAxisData = [];
+        var flag = true;
+        var i = 0;
+        $.each(data,function(key,value){
+            // if(i > 9 ){
+            //     return false;
+            // }
+            var _tps = [];
+            $.each(value,function(i,tpsValue){
+                var tpsArray = tpsValue.split(",");
+                if(flag){
+                    xAxisData.push($filter('date')(tpsArray[0], "HH:mm:ss"));
+                }
+                _tps.push(tpsArray[1]);
+            })
+            flag = false;
+            var _series = {
+                name:key,
+                type:'line',
+                smooth:true,
+                symbol: 'none',
+                sampling: 'average',
+                data: _tps
+            }
+            series.push(_series);
+            i++
+        })
+
+        var option = {
+            legend: {
+                data: legend
+            },
+            color: ["#FF0000", "#00BFFF", "#FF00FF", "#1ce322", "#000000", '#EE7942'],
+            xAxis: {
+                type: 'category',
+                boundaryGap: false,
+                data: xAxisData
+            },
+            series: series
+        };
+        return option;
+    }
+
+    var getTopicLineChart = function(legend,data){
+        var series = [];
+        var xAxisData = [];
+        var flag = true;
+        var i = 0;
+        $.each(data,function(key,value){
+            var _tps = [];
+            $.each(value,function(i,tpsValue){
+                var tpsArray = tpsValue.split(",");
+                if(flag){
+                    xAxisData.push($filter('date')(tpsArray[0], "HH:mm:ss"));
+                }
+                _tps.push(tpsArray[3]);
+            })
+            flag = false;
+            var _series = {
+                name:key,
+                type:'line',
+                smooth:true,
+                symbol: 'none',
+                sampling: 'average',
+                data: _tps
+            }
+            series.push(_series);
+            i++
+        })
+
+        var option = {
+            baseOption:{
+                legend: {
+                    data: legend
+                },
+                // color: ["#FF0000", "#00BFFF", "#FF00FF", "#1ce322", "#000000", '#EE7942'],
+                xAxis: {
+                    type: 'category',
+                    boundaryGap: false,
+                    data: xAxisData
+                },
+                series: series
+            },
+            media:[
+                {
+                    query:{},
+                    option:{
+
+                    }
+                }
+            ]
+
+        };
+        return option;
+    }
+
+
+    var queryLineData = function () {
+        var _date;
+        if($scope.date != null){
+            _date = $filter('date')($scope.date.valueOf(), "yyyy-MM-dd");
+        }else{
+            _date = $filter('date')(new Date(), "yyyy-MM-dd");
+        }
+        // $scope.lineChart.showLoading();
+        remoteApi.queryBrokerHisData(_date,function(resp){
+            // $scope.lineChart.hideLoading();
+            if (resp.status == 0) {
+                var _data = {}
+                var _xAxisData = [];
+                $.each(resp.data,function(address,values){
+                    _data[address] = values;
+                    _xAxisData.push(address);
+                })
+                $scope.lineChart.setOption(getBrokerLineChart(_xAxisData,_data));
+            }else{
+                Notification.error({message: "" + resp.errMsg, delay: 2000});
+            }
+        })
+
+        $scope.topicLineChart.showLoading();
+        remoteApi.queryTopicHisData(_date,$scope.selectedTopic,function (resp) {
+            $scope.topicLineChart.hideLoading();
+            if (resp.status == 0) {
+                var _data = {};
+                _data[$scope.selectedTopic] = resp.data;
+                var _xAxisData = $scope.selectedTopic;
+                $scope.topicLineChart.setOption(getTopicLineChart(_xAxisData,_data));
+            }else{
+                Notification.error({message: "" + resp.errMsg, delay: 2000});
+            }
+
+        })
+
+    }
+
+    //router after will clear this thread
+    $rootScope._thread = setInterval( queryLineData, tools.dashboardRefreshTime);
+
+
+}]);
+
+

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/src/data/dict.json
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/src/data/dict.json b/rocketmq-console/src/main/resources/static/src/data/dict.json
new file mode 100644
index 0000000..defdab3
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/src/data/dict.json
@@ -0,0 +1,4 @@
+[
+  {"TYPE":"DEMO_TYPE","DICT_VALUE":"0","DICT_NAME":"test1"},
+  {"TYPE":"DEMO_TYPE","DICT_VALUE":"1","DICT_NAME":"test2"}
+]
\ No newline at end of file


[30/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-touch.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-touch.js b/rocketmq-console/src/main/resources/static/vendor/angular/angular-touch.js
new file mode 100644
index 0000000..1d309e8
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-touch.js
@@ -0,0 +1,729 @@
+/**
+ * @license AngularJS v1.5.6
+ * (c) 2010-2016 Google, Inc. http://angularjs.org
+ * License: MIT
+ */
+(function(window, angular) {'use strict';
+
+/* global ngTouchClickDirectiveFactory: false,
+ */
+
+/**
+ * @ngdoc module
+ * @name ngTouch
+ * @description
+ *
+ * # ngTouch
+ *
+ * The `ngTouch` module provides touch events and other helpers for touch-enabled devices.
+ * The implementation is based on jQuery Mobile touch event handling
+ * ([jquerymobile.com](http://jquerymobile.com/)).
+ *
+ *
+ * See {@link ngTouch.$swipe `$swipe`} for usage.
+ *
+ * <div doc-module-components="ngTouch"></div>
+ *
+ */
+
+// define ngTouch module
+/* global -ngTouch */
+var ngTouch = angular.module('ngTouch', []);
+
+ngTouch.provider('$touch', $TouchProvider);
+
+function nodeName_(element) {
+  return angular.lowercase(element.nodeName || (element[0] && element[0].nodeName));
+}
+
+/**
+ * @ngdoc provider
+ * @name $touchProvider
+ *
+ * @description
+ * The `$touchProvider` allows enabling / disabling {@link ngTouch.ngClick ngTouch's ngClick directive}.
+ */
+$TouchProvider.$inject = ['$provide', '$compileProvider'];
+function $TouchProvider($provide, $compileProvider) {
+
+  /**
+   * @ngdoc method
+   * @name  $touchProvider#ngClickOverrideEnabled
+   *
+   * @param {boolean=} enabled update the ngClickOverrideEnabled state if provided, otherwise just return the
+   * current ngClickOverrideEnabled state
+   * @returns {*} current value if used as getter or itself (chaining) if used as setter
+   *
+   * @kind function
+   *
+   * @description
+   * Call this method to enable/disable {@link ngTouch.ngClick ngTouch's ngClick directive}. If enabled,
+   * the default ngClick directive will be replaced by a version that eliminates the 300ms delay for
+   * click events on browser for touch-devices.
+   *
+   * The default is `false`.
+   *
+   */
+  var ngClickOverrideEnabled = false;
+  var ngClickDirectiveAdded = false;
+  this.ngClickOverrideEnabled = function(enabled) {
+    if (angular.isDefined(enabled)) {
+
+      if (enabled && !ngClickDirectiveAdded) {
+        ngClickDirectiveAdded = true;
+
+        // Use this to identify the correct directive in the delegate
+        ngTouchClickDirectiveFactory.$$moduleName = 'ngTouch';
+        $compileProvider.directive('ngClick', ngTouchClickDirectiveFactory);
+
+        $provide.decorator('ngClickDirective', ['$delegate', function($delegate) {
+          if (ngClickOverrideEnabled) {
+            // drop the default ngClick directive
+            $delegate.shift();
+          } else {
+            // drop the ngTouch ngClick directive if the override has been re-disabled (because
+            // we cannot de-register added directives)
+            var i = $delegate.length - 1;
+            while (i >= 0) {
+              if ($delegate[i].$$moduleName === 'ngTouch') {
+                $delegate.splice(i, 1);
+                break;
+              }
+              i--;
+            }
+          }
+
+          return $delegate;
+        }]);
+      }
+
+      ngClickOverrideEnabled = enabled;
+      return this;
+    }
+
+    return ngClickOverrideEnabled;
+  };
+
+  /**
+  * @ngdoc service
+  * @name $touch
+  * @kind object
+  *
+  * @description
+  * Provides the {@link ngTouch.$touch#ngClickOverrideEnabled `ngClickOverrideEnabled`} method.
+  *
+  */
+  this.$get = function() {
+    return {
+      /**
+       * @ngdoc method
+       * @name  $touch#ngClickOverrideEnabled
+       *
+       * @returns {*} current value of `ngClickOverrideEnabled` set in the {@link ngTouch.$touchProvider $touchProvider},
+       * i.e. if {@link ngTouch.ngClick ngTouch's ngClick} directive is enabled.
+       *
+       * @kind function
+       */
+      ngClickOverrideEnabled: function() {
+        return ngClickOverrideEnabled;
+      }
+    };
+  };
+
+}
+
+/* global ngTouch: false */
+
+    /**
+     * @ngdoc service
+     * @name $swipe
+     *
+     * @description
+     * The `$swipe` service is a service that abstracts the messier details of hold-and-drag swipe
+     * behavior, to make implementing swipe-related directives more convenient.
+     *
+     * Requires the {@link ngTouch `ngTouch`} module to be installed.
+     *
+     * `$swipe` is used by the `ngSwipeLeft` and `ngSwipeRight` directives in `ngTouch`.
+     *
+     * # Usage
+     * The `$swipe` service is an object with a single method: `bind`. `bind` takes an element
+     * which is to be watched for swipes, and an object with four handler functions. See the
+     * documentation for `bind` below.
+     */
+
+ngTouch.factory('$swipe', [function() {
+  // The total distance in any direction before we make the call on swipe vs. scroll.
+  var MOVE_BUFFER_RADIUS = 10;
+
+  var POINTER_EVENTS = {
+    'mouse': {
+      start: 'mousedown',
+      move: 'mousemove',
+      end: 'mouseup'
+    },
+    'touch': {
+      start: 'touchstart',
+      move: 'touchmove',
+      end: 'touchend',
+      cancel: 'touchcancel'
+    }
+  };
+
+  function getCoordinates(event) {
+    var originalEvent = event.originalEvent || event;
+    var touches = originalEvent.touches && originalEvent.touches.length ? originalEvent.touches : [originalEvent];
+    var e = (originalEvent.changedTouches && originalEvent.changedTouches[0]) || touches[0];
+
+    return {
+      x: e.clientX,
+      y: e.clientY
+    };
+  }
+
+  function getEvents(pointerTypes, eventType) {
+    var res = [];
+    angular.forEach(pointerTypes, function(pointerType) {
+      var eventName = POINTER_EVENTS[pointerType][eventType];
+      if (eventName) {
+        res.push(eventName);
+      }
+    });
+    return res.join(' ');
+  }
+
+  return {
+    /**
+     * @ngdoc method
+     * @name $swipe#bind
+     *
+     * @description
+     * The main method of `$swipe`. It takes an element to be watched for swipe motions, and an
+     * object containing event handlers.
+     * The pointer types that should be used can be specified via the optional
+     * third argument, which is an array of strings `'mouse'` and `'touch'`. By default,
+     * `$swipe` will listen for `mouse` and `touch` events.
+     *
+     * The four events are `start`, `move`, `end`, and `cancel`. `start`, `move`, and `end`
+     * receive as a parameter a coordinates object of the form `{ x: 150, y: 310 }` and the raw
+     * `event`. `cancel` receives the raw `event` as its single parameter.
+     *
+     * `start` is called on either `mousedown` or `touchstart`. After this event, `$swipe` is
+     * watching for `touchmove` or `mousemove` events. These events are ignored until the total
+     * distance moved in either dimension exceeds a small threshold.
+     *
+     * Once this threshold is exceeded, either the horizontal or vertical delta is greater.
+     * - If the horizontal distance is greater, this is a swipe and `move` and `end` events follow.
+     * - If the vertical distance is greater, this is a scroll, and we let the browser take over.
+     *   A `cancel` event is sent.
+     *
+     * `move` is called on `mousemove` and `touchmove` after the above logic has determined that
+     * a swipe is in progress.
+     *
+     * `end` is called when a swipe is successfully completed with a `touchend` or `mouseup`.
+     *
+     * `cancel` is called either on a `touchcancel` from the browser, or when we begin scrolling
+     * as described above.
+     *
+     */
+    bind: function(element, eventHandlers, pointerTypes) {
+      // Absolute total movement, used to control swipe vs. scroll.
+      var totalX, totalY;
+      // Coordinates of the start position.
+      var startCoords;
+      // Last event's position.
+      var lastPos;
+      // Whether a swipe is active.
+      var active = false;
+
+      pointerTypes = pointerTypes || ['mouse', 'touch'];
+      element.on(getEvents(pointerTypes, 'start'), function(event) {
+        startCoords = getCoordinates(event);
+        active = true;
+        totalX = 0;
+        totalY = 0;
+        lastPos = startCoords;
+        eventHandlers['start'] && eventHandlers['start'](startCoords, event);
+      });
+      var events = getEvents(pointerTypes, 'cancel');
+      if (events) {
+        element.on(events, function(event) {
+          active = false;
+          eventHandlers['cancel'] && eventHandlers['cancel'](event);
+        });
+      }
+
+      element.on(getEvents(pointerTypes, 'move'), function(event) {
+        if (!active) return;
+
+        // Android will send a touchcancel if it thinks we're starting to scroll.
+        // So when the total distance (+ or - or both) exceeds 10px in either direction,
+        // we either:
+        // - On totalX > totalY, we send preventDefault() and treat this as a swipe.
+        // - On totalY > totalX, we let the browser handle it as a scroll.
+
+        if (!startCoords) return;
+        var coords = getCoordinates(event);
+
+        totalX += Math.abs(coords.x - lastPos.x);
+        totalY += Math.abs(coords.y - lastPos.y);
+
+        lastPos = coords;
+
+        if (totalX < MOVE_BUFFER_RADIUS && totalY < MOVE_BUFFER_RADIUS) {
+          return;
+        }
+
+        // One of totalX or totalY has exceeded the buffer, so decide on swipe vs. scroll.
+        if (totalY > totalX) {
+          // Allow native scrolling to take over.
+          active = false;
+          eventHandlers['cancel'] && eventHandlers['cancel'](event);
+          return;
+        } else {
+          // Prevent the browser from scrolling.
+          event.preventDefault();
+          eventHandlers['move'] && eventHandlers['move'](coords, event);
+        }
+      });
+
+      element.on(getEvents(pointerTypes, 'end'), function(event) {
+        if (!active) return;
+        active = false;
+        eventHandlers['end'] && eventHandlers['end'](getCoordinates(event), event);
+      });
+    }
+  };
+}]);
+
+/* global ngTouch: false,
+  nodeName_: false
+*/
+
+/**
+ * @ngdoc directive
+ * @name ngClick
+ * @deprecated
+ *
+ * @description
+ * <div class="alert alert-danger">
+ * **DEPRECATION NOTICE**: Beginning with Angular 1.5, this directive is deprecated and by default **disabled**.
+ * The directive will receive no further support and might be removed from future releases.
+ * If you need the directive, you can enable it with the {@link ngTouch.$touchProvider $touchProvider#ngClickOverrideEnabled}
+ * function. We also recommend that you migrate to [FastClick](https://github.com/ftlabs/fastclick).
+ * To learn more about the 300ms delay, this [Telerik article](http://developer.telerik.com/featured/300-ms-click-delay-ios-8/)
+ * gives a good overview.
+ * </div>
+ * A more powerful replacement for the default ngClick designed to be used on touchscreen
+ * devices. Most mobile browsers wait about 300ms after a tap-and-release before sending
+ * the click event. This version handles them immediately, and then prevents the
+ * following click event from propagating.
+ *
+ * Requires the {@link ngTouch `ngTouch`} module to be installed.
+ *
+ * This directive can fall back to using an ordinary click event, and so works on desktop
+ * browsers as well as mobile.
+ *
+ * This directive also sets the CSS class `ng-click-active` while the element is being held
+ * down (by a mouse click or touch) so you can restyle the depressed element if you wish.
+ *
+ * @element ANY
+ * @param {expression} ngClick {@link guide/expression Expression} to evaluate
+ * upon tap. (Event object is available as `$event`)
+ *
+ * @example
+    <example module="ngClickExample" deps="angular-touch.js">
+      <file name="index.html">
+        <button ng-click="count = count + 1" ng-init="count=0">
+          Increment
+        </button>
+        count: {{ count }}
+      </file>
+      <file name="script.js">
+        angular.module('ngClickExample', ['ngTouch']);
+      </file>
+    </example>
+ */
+
+var ngTouchClickDirectiveFactory = ['$parse', '$timeout', '$rootElement',
+    function($parse, $timeout, $rootElement) {
+  var TAP_DURATION = 750; // Shorter than 750ms is a tap, longer is a taphold or drag.
+  var MOVE_TOLERANCE = 12; // 12px seems to work in most mobile browsers.
+  var PREVENT_DURATION = 2500; // 2.5 seconds maximum from preventGhostClick call to click
+  var CLICKBUSTER_THRESHOLD = 25; // 25 pixels in any dimension is the limit for busting clicks.
+
+  var ACTIVE_CLASS_NAME = 'ng-click-active';
+  var lastPreventedTime;
+  var touchCoordinates;
+  var lastLabelClickCoordinates;
+
+
+  // TAP EVENTS AND GHOST CLICKS
+  //
+  // Why tap events?
+  // Mobile browsers detect a tap, then wait a moment (usually ~300ms) to see if you're
+  // double-tapping, and then fire a click event.
+  //
+  // This delay sucks and makes mobile apps feel unresponsive.
+  // So we detect touchstart, touchcancel and touchend ourselves and determine when
+  // the user has tapped on something.
+  //
+  // What happens when the browser then generates a click event?
+  // The browser, of course, also detects the tap and fires a click after a delay. This results in
+  // tapping/clicking twice. We do "clickbusting" to prevent it.
+  //
+  // How does it work?
+  // We attach global touchstart and click handlers, that run during the capture (early) phase.
+  // So the sequence for a tap is:
+  // - global touchstart: Sets an "allowable region" at the point touched.
+  // - element's touchstart: Starts a touch
+  // (- touchcancel ends the touch, no click follows)
+  // - element's touchend: Determines if the tap is valid (didn't move too far away, didn't hold
+  //   too long) and fires the user's tap handler. The touchend also calls preventGhostClick().
+  // - preventGhostClick() removes the allowable region the global touchstart created.
+  // - The browser generates a click event.
+  // - The global click handler catches the click, and checks whether it was in an allowable region.
+  //     - If preventGhostClick was called, the region will have been removed, the click is busted.
+  //     - If the region is still there, the click proceeds normally. Therefore clicks on links and
+  //       other elements without ngTap on them work normally.
+  //
+  // This is an ugly, terrible hack!
+  // Yeah, tell me about it. The alternatives are using the slow click events, or making our users
+  // deal with the ghost clicks, so I consider this the least of evils. Fortunately Angular
+  // encapsulates this ugly logic away from the user.
+  //
+  // Why not just put click handlers on the element?
+  // We do that too, just to be sure. If the tap event caused the DOM to change,
+  // it is possible another element is now in that position. To take account for these possibly
+  // distinct elements, the handlers are global and care only about coordinates.
+
+  // Checks if the coordinates are close enough to be within the region.
+  function hit(x1, y1, x2, y2) {
+    return Math.abs(x1 - x2) < CLICKBUSTER_THRESHOLD && Math.abs(y1 - y2) < CLICKBUSTER_THRESHOLD;
+  }
+
+  // Checks a list of allowable regions against a click location.
+  // Returns true if the click should be allowed.
+  // Splices out the allowable region from the list after it has been used.
+  function checkAllowableRegions(touchCoordinates, x, y) {
+    for (var i = 0; i < touchCoordinates.length; i += 2) {
+      if (hit(touchCoordinates[i], touchCoordinates[i + 1], x, y)) {
+        touchCoordinates.splice(i, i + 2);
+        return true; // allowable region
+      }
+    }
+    return false; // No allowable region; bust it.
+  }
+
+  // Global click handler that prevents the click if it's in a bustable zone and preventGhostClick
+  // was called recently.
+  function onClick(event) {
+    if (Date.now() - lastPreventedTime > PREVENT_DURATION) {
+      return; // Too old.
+    }
+
+    var touches = event.touches && event.touches.length ? event.touches : [event];
+    var x = touches[0].clientX;
+    var y = touches[0].clientY;
+    // Work around desktop Webkit quirk where clicking a label will fire two clicks (on the label
+    // and on the input element). Depending on the exact browser, this second click we don't want
+    // to bust has either (0,0), negative coordinates, or coordinates equal to triggering label
+    // click event
+    if (x < 1 && y < 1) {
+      return; // offscreen
+    }
+    if (lastLabelClickCoordinates &&
+        lastLabelClickCoordinates[0] === x && lastLabelClickCoordinates[1] === y) {
+      return; // input click triggered by label click
+    }
+    // reset label click coordinates on first subsequent click
+    if (lastLabelClickCoordinates) {
+      lastLabelClickCoordinates = null;
+    }
+    // remember label click coordinates to prevent click busting of trigger click event on input
+    if (nodeName_(event.target) === 'label') {
+      lastLabelClickCoordinates = [x, y];
+    }
+
+    // Look for an allowable region containing this click.
+    // If we find one, that means it was created by touchstart and not removed by
+    // preventGhostClick, so we don't bust it.
+    if (checkAllowableRegions(touchCoordinates, x, y)) {
+      return;
+    }
+
+    // If we didn't find an allowable region, bust the click.
+    event.stopPropagation();
+    event.preventDefault();
+
+    // Blur focused form elements
+    event.target && event.target.blur && event.target.blur();
+  }
+
+
+  // Global touchstart handler that creates an allowable region for a click event.
+  // This allowable region can be removed by preventGhostClick if we want to bust it.
+  function onTouchStart(event) {
+    var touches = event.touches && event.touches.length ? event.touches : [event];
+    var x = touches[0].clientX;
+    var y = touches[0].clientY;
+    touchCoordinates.push(x, y);
+
+    $timeout(function() {
+      // Remove the allowable region.
+      for (var i = 0; i < touchCoordinates.length; i += 2) {
+        if (touchCoordinates[i] == x && touchCoordinates[i + 1] == y) {
+          touchCoordinates.splice(i, i + 2);
+          return;
+        }
+      }
+    }, PREVENT_DURATION, false);
+  }
+
+  // On the first call, attaches some event handlers. Then whenever it gets called, it creates a
+  // zone around the touchstart where clicks will get busted.
+  function preventGhostClick(x, y) {
+    if (!touchCoordinates) {
+      $rootElement[0].addEventListener('click', onClick, true);
+      $rootElement[0].addEventListener('touchstart', onTouchStart, true);
+      touchCoordinates = [];
+    }
+
+    lastPreventedTime = Date.now();
+
+    checkAllowableRegions(touchCoordinates, x, y);
+  }
+
+  // Actual linking function.
+  return function(scope, element, attr) {
+    var clickHandler = $parse(attr.ngClick),
+        tapping = false,
+        tapElement,  // Used to blur the element after a tap.
+        startTime,   // Used to check if the tap was held too long.
+        touchStartX,
+        touchStartY;
+
+    function resetState() {
+      tapping = false;
+      element.removeClass(ACTIVE_CLASS_NAME);
+    }
+
+    element.on('touchstart', function(event) {
+      tapping = true;
+      tapElement = event.target ? event.target : event.srcElement; // IE uses srcElement.
+      // Hack for Safari, which can target text nodes instead of containers.
+      if (tapElement.nodeType == 3) {
+        tapElement = tapElement.parentNode;
+      }
+
+      element.addClass(ACTIVE_CLASS_NAME);
+
+      startTime = Date.now();
+
+      // Use jQuery originalEvent
+      var originalEvent = event.originalEvent || event;
+      var touches = originalEvent.touches && originalEvent.touches.length ? originalEvent.touches : [originalEvent];
+      var e = touches[0];
+      touchStartX = e.clientX;
+      touchStartY = e.clientY;
+    });
+
+    element.on('touchcancel', function(event) {
+      resetState();
+    });
+
+    element.on('touchend', function(event) {
+      var diff = Date.now() - startTime;
+
+      // Use jQuery originalEvent
+      var originalEvent = event.originalEvent || event;
+      var touches = (originalEvent.changedTouches && originalEvent.changedTouches.length) ?
+          originalEvent.changedTouches :
+          ((originalEvent.touches && originalEvent.touches.length) ? originalEvent.touches : [originalEvent]);
+      var e = touches[0];
+      var x = e.clientX;
+      var y = e.clientY;
+      var dist = Math.sqrt(Math.pow(x - touchStartX, 2) + Math.pow(y - touchStartY, 2));
+
+      if (tapping && diff < TAP_DURATION && dist < MOVE_TOLERANCE) {
+        // Call preventGhostClick so the clickbuster will catch the corresponding click.
+        preventGhostClick(x, y);
+
+        // Blur the focused element (the button, probably) before firing the callback.
+        // This doesn't work perfectly on Android Chrome, but seems to work elsewhere.
+        // I couldn't get anything to work reliably on Android Chrome.
+        if (tapElement) {
+          tapElement.blur();
+        }
+
+        if (!angular.isDefined(attr.disabled) || attr.disabled === false) {
+          element.triggerHandler('click', [event]);
+        }
+      }
+
+      resetState();
+    });
+
+    // Hack for iOS Safari's benefit. It goes searching for onclick handlers and is liable to click
+    // something else nearby.
+    element.onclick = function(event) { };
+
+    // Actual click handler.
+    // There are three different kinds of clicks, only two of which reach this point.
+    // - On desktop browsers without touch events, their clicks will always come here.
+    // - On mobile browsers, the simulated "fast" click will call this.
+    // - But the browser's follow-up slow click will be "busted" before it reaches this handler.
+    // Therefore it's safe to use this directive on both mobile and desktop.
+    element.on('click', function(event, touchend) {
+      scope.$apply(function() {
+        clickHandler(scope, {$event: (touchend || event)});
+      });
+    });
+
+    element.on('mousedown', function(event) {
+      element.addClass(ACTIVE_CLASS_NAME);
+    });
+
+    element.on('mousemove mouseup', function(event) {
+      element.removeClass(ACTIVE_CLASS_NAME);
+    });
+
+  };
+}];
+
+/* global ngTouch: false */
+
+/**
+ * @ngdoc directive
+ * @name ngSwipeLeft
+ *
+ * @description
+ * Specify custom behavior when an element is swiped to the left on a touchscreen device.
+ * A leftward swipe is a quick, right-to-left slide of the finger.
+ * Though ngSwipeLeft is designed for touch-based devices, it will work with a mouse click and drag
+ * too.
+ *
+ * To disable the mouse click and drag functionality, add `ng-swipe-disable-mouse` to
+ * the `ng-swipe-left` or `ng-swipe-right` DOM Element.
+ *
+ * Requires the {@link ngTouch `ngTouch`} module to be installed.
+ *
+ * @element ANY
+ * @param {expression} ngSwipeLeft {@link guide/expression Expression} to evaluate
+ * upon left swipe. (Event object is available as `$event`)
+ *
+ * @example
+    <example module="ngSwipeLeftExample" deps="angular-touch.js">
+      <file name="index.html">
+        <div ng-show="!showActions" ng-swipe-left="showActions = true">
+          Some list content, like an email in the inbox
+        </div>
+        <div ng-show="showActions" ng-swipe-right="showActions = false">
+          <button ng-click="reply()">Reply</button>
+          <button ng-click="delete()">Delete</button>
+        </div>
+      </file>
+      <file name="script.js">
+        angular.module('ngSwipeLeftExample', ['ngTouch']);
+      </file>
+    </example>
+ */
+
+/**
+ * @ngdoc directive
+ * @name ngSwipeRight
+ *
+ * @description
+ * Specify custom behavior when an element is swiped to the right on a touchscreen device.
+ * A rightward swipe is a quick, left-to-right slide of the finger.
+ * Though ngSwipeRight is designed for touch-based devices, it will work with a mouse click and drag
+ * too.
+ *
+ * Requires the {@link ngTouch `ngTouch`} module to be installed.
+ *
+ * @element ANY
+ * @param {expression} ngSwipeRight {@link guide/expression Expression} to evaluate
+ * upon right swipe. (Event object is available as `$event`)
+ *
+ * @example
+    <example module="ngSwipeRightExample" deps="angular-touch.js">
+      <file name="index.html">
+        <div ng-show="!showActions" ng-swipe-left="showActions = true">
+          Some list content, like an email in the inbox
+        </div>
+        <div ng-show="showActions" ng-swipe-right="showActions = false">
+          <button ng-click="reply()">Reply</button>
+          <button ng-click="delete()">Delete</button>
+        </div>
+      </file>
+      <file name="script.js">
+        angular.module('ngSwipeRightExample', ['ngTouch']);
+      </file>
+    </example>
+ */
+
+function makeSwipeDirective(directiveName, direction, eventName) {
+  ngTouch.directive(directiveName, ['$parse', '$swipe', function($parse, $swipe) {
+    // The maximum vertical delta for a swipe should be less than 75px.
+    var MAX_VERTICAL_DISTANCE = 75;
+    // Vertical distance should not be more than a fraction of the horizontal distance.
+    var MAX_VERTICAL_RATIO = 0.3;
+    // At least a 30px lateral motion is necessary for a swipe.
+    var MIN_HORIZONTAL_DISTANCE = 30;
+
+    return function(scope, element, attr) {
+      var swipeHandler = $parse(attr[directiveName]);
+
+      var startCoords, valid;
+
+      function validSwipe(coords) {
+        // Check that it's within the coordinates.
+        // Absolute vertical distance must be within tolerances.
+        // Horizontal distance, we take the current X - the starting X.
+        // This is negative for leftward swipes and positive for rightward swipes.
+        // After multiplying by the direction (-1 for left, +1 for right), legal swipes
+        // (ie. same direction as the directive wants) will have a positive delta and
+        // illegal ones a negative delta.
+        // Therefore this delta must be positive, and larger than the minimum.
+        if (!startCoords) return false;
+        var deltaY = Math.abs(coords.y - startCoords.y);
+        var deltaX = (coords.x - startCoords.x) * direction;
+        return valid && // Short circuit for already-invalidated swipes.
+            deltaY < MAX_VERTICAL_DISTANCE &&
+            deltaX > 0 &&
+            deltaX > MIN_HORIZONTAL_DISTANCE &&
+            deltaY / deltaX < MAX_VERTICAL_RATIO;
+      }
+
+      var pointerTypes = ['touch'];
+      if (!angular.isDefined(attr['ngSwipeDisableMouse'])) {
+        pointerTypes.push('mouse');
+      }
+      $swipe.bind(element, {
+        'start': function(coords, event) {
+          startCoords = coords;
+          valid = true;
+        },
+        'cancel': function(event) {
+          valid = false;
+        },
+        'end': function(coords, event) {
+          if (validSwipe(coords)) {
+            scope.$apply(function() {
+              element.triggerHandler(eventName);
+              swipeHandler(scope, {$event: event});
+            });
+          }
+        }
+      }, pointerTypes);
+    };
+  }]);
+}
+
+// Left is negative X-coordinate, right is positive.
+makeSwipeDirective('ngSwipeLeft', -1, 'swipeleft');
+makeSwipeDirective('ngSwipeRight', 1, 'swiperight');
+
+
+
+})(window, window.angular);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-touch.min.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-touch.min.js b/rocketmq-console/src/main/resources/static/vendor/angular/angular-touch.min.js
new file mode 100644
index 0000000..62e7f30
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-touch.min.js
@@ -0,0 +1,14 @@
+/*
+ AngularJS v1.5.6
+ (c) 2010-2016 Google, Inc. http://angularjs.org
+ License: MIT
+*/
+(function(x,n){'use strict';function s(f,k){var e=!1,a=!1;this.ngClickOverrideEnabled=function(b){return n.isDefined(b)?(b&&!a&&(a=!0,t.$$moduleName="ngTouch",k.directive("ngClick",t),f.decorator("ngClickDirective",["$delegate",function(a){if(e)a.shift();else for(var b=a.length-1;0<=b;){if("ngTouch"===a[b].$$moduleName){a.splice(b,1);break}b--}return a}])),e=b,this):e};this.$get=function(){return{ngClickOverrideEnabled:function(){return e}}}}function v(f,k,e){p.directive(f,["$parse","$swipe",function(a,
+b){return function(l,u,g){function h(c){if(!d)return!1;var a=Math.abs(c.y-d.y);c=(c.x-d.x)*k;return r&&75>a&&0<c&&30<c&&.3>a/c}var m=a(g[f]),d,r,c=["touch"];n.isDefined(g.ngSwipeDisableMouse)||c.push("mouse");b.bind(u,{start:function(c,a){d=c;r=!0},cancel:function(c){r=!1},end:function(c,d){h(c)&&l.$apply(function(){u.triggerHandler(e);m(l,{$event:d})})}},c)}}])}var p=n.module("ngTouch",[]);p.provider("$touch",s);s.$inject=["$provide","$compileProvider"];p.factory("$swipe",[function(){function f(a){a=
+a.originalEvent||a;var b=a.touches&&a.touches.length?a.touches:[a];a=a.changedTouches&&a.changedTouches[0]||b[0];return{x:a.clientX,y:a.clientY}}function k(a,b){var l=[];n.forEach(a,function(a){(a=e[a][b])&&l.push(a)});return l.join(" ")}var e={mouse:{start:"mousedown",move:"mousemove",end:"mouseup"},touch:{start:"touchstart",move:"touchmove",end:"touchend",cancel:"touchcancel"}};return{bind:function(a,b,l){var e,g,h,m,d=!1;l=l||["mouse","touch"];a.on(k(l,"start"),function(c){h=f(c);d=!0;g=e=0;m=
+h;b.start&&b.start(h,c)});var r=k(l,"cancel");if(r)a.on(r,function(c){d=!1;b.cancel&&b.cancel(c)});a.on(k(l,"move"),function(c){if(d&&h){var a=f(c);e+=Math.abs(a.x-m.x);g+=Math.abs(a.y-m.y);m=a;10>e&&10>g||(g>e?(d=!1,b.cancel&&b.cancel(c)):(c.preventDefault(),b.move&&b.move(a,c)))}});a.on(k(l,"end"),function(c){d&&(d=!1,b.end&&b.end(f(c),c))})}}}]);var t=["$parse","$timeout","$rootElement",function(f,k,e){function a(a,d,b){for(var c=0;c<a.length;c+=2){var g=a[c+1],e=b;if(25>Math.abs(a[c]-d)&&25>Math.abs(g-
+e))return a.splice(c,c+2),!0}return!1}function b(b){if(!(2500<Date.now()-u)){var d=b.touches&&b.touches.length?b.touches:[b],e=d[0].clientX,d=d[0].clientY;if(!(1>e&&1>d||h&&h[0]===e&&h[1]===d)){h&&(h=null);var c=b.target;"label"===n.lowercase(c.nodeName||c[0]&&c[0].nodeName)&&(h=[e,d]);a(g,e,d)||(b.stopPropagation(),b.preventDefault(),b.target&&b.target.blur&&b.target.blur())}}}function l(a){a=a.touches&&a.touches.length?a.touches:[a];var b=a[0].clientX,e=a[0].clientY;g.push(b,e);k(function(){for(var a=
+0;a<g.length;a+=2)if(g[a]==b&&g[a+1]==e){g.splice(a,a+2);break}},2500,!1)}var u,g,h;return function(h,d,k){var c=f(k.ngClick),w=!1,q,p,s,t;d.on("touchstart",function(a){w=!0;q=a.target?a.target:a.srcElement;3==q.nodeType&&(q=q.parentNode);d.addClass("ng-click-active");p=Date.now();a=a.originalEvent||a;a=(a.touches&&a.touches.length?a.touches:[a])[0];s=a.clientX;t=a.clientY});d.on("touchcancel",function(a){w=!1;d.removeClass("ng-click-active")});d.on("touchend",function(c){var h=Date.now()-p,f=c.originalEvent||
+c,m=(f.changedTouches&&f.changedTouches.length?f.changedTouches:f.touches&&f.touches.length?f.touches:[f])[0],f=m.clientX,m=m.clientY,v=Math.sqrt(Math.pow(f-s,2)+Math.pow(m-t,2));w&&750>h&&12>v&&(g||(e[0].addEventListener("click",b,!0),e[0].addEventListener("touchstart",l,!0),g=[]),u=Date.now(),a(g,f,m),q&&q.blur(),n.isDefined(k.disabled)&&!1!==k.disabled||d.triggerHandler("click",[c]));w=!1;d.removeClass("ng-click-active")});d.onclick=function(a){};d.on("click",function(a,b){h.$apply(function(){c(h,
+{$event:b||a})})});d.on("mousedown",function(a){d.addClass("ng-click-active")});d.on("mousemove mouseup",function(a){d.removeClass("ng-click-active")})}}];v("ngSwipeLeft",-1,"swipeleft");v("ngSwipeRight",1,"swiperight")})(window,window.angular);
+//# sourceMappingURL=angular-touch.min.js.map

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-touch.min.js.map
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-touch.min.js.map b/rocketmq-console/src/main/resources/static/vendor/angular/angular-touch.min.js.map
new file mode 100644
index 0000000..f285f48
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-touch.min.js.map
@@ -0,0 +1,8 @@
+{
+"version":3,
+"file":"angular-touch.min.js",
+"lineCount":13,
+"mappings":"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",
+"sources":["angular-touch.js"],
+"names":["window","angular","$TouchProvider","$provide","$compileProvider","ngClickOverrideEnabled","ngClickDirectiveAdded","this.ngClickOverrideEnabled","enabled","isDefined","ngTouchClickDirectiveFactory","$$moduleName","directive","decorator","$delegate","shift","i","length","splice","$get","this.$get","makeSwipeDirective","directiveName","direction","eventName","ngTouch","$parse","$swipe","scope","element","attr","validSwipe","coords","startCoords","deltaY","Math","abs","y","deltaX","x","valid","MAX_VERTICAL_DISTANCE","MIN_HORIZONTAL_DISTANCE","MAX_VERTICAL_RATIO","swipeHandler","pointerTypes","push","bind","start","event","cancel","end","$apply","triggerHandler","$event","module","provider","$inject","factory","getCoordinates","originalEvent","touches","e","changedTouches","clientX","clientY","getEvents","eventType","res","forEach","pointerType","POINTER_EVENTS","join","move","eventHandlers","totalX","totalY","lastPos","active","on","events","MOVE_BUFFER_RADIUS","preventDefault
 ","$timeout","$rootElement","checkAllowableRegions","touchCoordinates","CLICKBUSTER_THRESHOLD","x1","y1","y2","onClick","PREVENT_DURATION","Date","now","lastPreventedTime","lastLabelClickCoordinates","target","lowercase","nodeName","stopPropagation","blur","onTouchStart","clickHandler","ngClick","tapping","tapElement","startTime","touchStartX","touchStartY","srcElement","nodeType","parentNode","addClass","ACTIVE_CLASS_NAME","removeClass","diff","dist","sqrt","pow","TAP_DURATION","MOVE_TOLERANCE","addEventListener","disabled","onclick","element.onclick","touchend"]
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-translate-storage-cookie/angular-translate-storage-cookie.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-translate-storage-cookie/angular-translate-storage-cookie.js b/rocketmq-console/src/main/resources/static/vendor/angular/angular-translate-storage-cookie/angular-translate-storage-cookie.js
new file mode 100644
index 0000000..b9d1361
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-translate-storage-cookie/angular-translate-storage-cookie.js
@@ -0,0 +1,97 @@
+/*!
+ * angular-translate - v2.13.1 - 2016-12-06
+ * 
+ * Copyright (c) 2016 The angular-translate team, Pascal Precht; Licensed MIT
+ */
+(function (root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD. Register as an anonymous module unless amdModuleId is set
+    define([], function () {
+      return (factory());
+    });
+  } else if (typeof exports === 'object') {
+    // Node. Does not work with strict CommonJS, but
+    // only CommonJS-like environments that support module.exports,
+    // like Node.
+    module.exports = factory();
+  } else {
+    factory();
+  }
+}(this, function () {
+
+$translateCookieStorageFactory.$inject = ['$cookieStore'];
+angular.module('pascalprecht.translate')
+
+/**
+ * @ngdoc object
+ * @name pascalprecht.translate.$translateCookieStorage
+ * @requires $cookieStore
+ *
+ * @description
+ * Abstraction layer for cookieStore. This service is used when telling angular-translate
+ * to use cookieStore as storage.
+ *
+ */
+  .factory('$translateCookieStorage', $translateCookieStorageFactory);
+
+function $translateCookieStorageFactory($cookieStore) {
+
+  'use strict';
+
+  var $translateCookieStorage = {
+
+    /**
+     * @ngdoc function
+     * @name pascalprecht.translate.$translateCookieStorage#get
+     * @methodOf pascalprecht.translate.$translateCookieStorage
+     *
+     * @description
+     * Returns an item from cookieStorage by given name.
+     *
+     * @param {string} name Item name
+     * @return {string} Value of item name
+     */
+    get: function (name) {
+      return $cookieStore.get(name);
+    },
+
+    /**
+     * @ngdoc function
+     * @name pascalprecht.translate.$translateCookieStorage#set
+     * @methodOf pascalprecht.translate.$translateCookieStorage
+     *
+     * @description
+     * Sets an item in cookieStorage by given name.
+     *
+     * @deprecated use #put
+     *
+     * @param {string} name Item name
+     * @param {string} value Item value
+     */
+    set: function (name, value) {
+      $cookieStore.put(name, value);
+    },
+
+    /**
+     * @ngdoc function
+     * @name pascalprecht.translate.$translateCookieStorage#put
+     * @methodOf pascalprecht.translate.$translateCookieStorage
+     *
+     * @description
+     * Sets an item in cookieStorage by given name.
+     *
+     * @param {string} name Item name
+     * @param {string} value Item value
+     */
+    put: function (name, value) {
+      $cookieStore.put(name, value);
+    }
+  };
+
+  return $translateCookieStorage;
+}
+
+$translateCookieStorageFactory.displayName = '$translateCookieStorage';
+return 'pascalprecht.translate';
+
+}));

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-translate-storage-cookie/angular-translate-storage-cookie.min.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-translate-storage-cookie/angular-translate-storage-cookie.min.js b/rocketmq-console/src/main/resources/static/vendor/angular/angular-translate-storage-cookie/angular-translate-storage-cookie.min.js
new file mode 100644
index 0000000..da02568
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-translate-storage-cookie/angular-translate-storage-cookie.min.js
@@ -0,0 +1,6 @@
+/*!
+ * angular-translate - v2.13.1 - 2016-12-06
+ * 
+ * Copyright (c) 2016 The angular-translate team, Pascal Precht; Licensed MIT
+ */
+!function(a,b){"function"==typeof define&&define.amd?define([],function(){return b()}):"object"==typeof exports?module.exports=b():b()}(this,function(){function a(a){"use strict";var b={get:function(b){return a.get(b)},set:function(b,c){a.put(b,c)},put:function(b,c){a.put(b,c)}};return b}return a.$inject=["$cookieStore"],angular.module("pascalprecht.translate").factory("$translateCookieStorage",a),a.displayName="$translateCookieStorage","pascalprecht.translate"});
\ No newline at end of file



[51/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
Release rocketmq-console 1.0.0 version


Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/commit/e218eef9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/tree/e218eef9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/diff/e218eef9

Branch: refs/heads/release-rocketmq-console-1.0.0
Commit: e218eef94de8402ba15f2d21c61865f7ae38a775
Parents: 
Author: yukon <yu...@apache.org>
Authored: Thu Jun 15 10:46:45 2017 +0800
Committer: yukon <yu...@apache.org>
Committed: Thu Jun 15 10:47:00 2017 +0800

----------------------------------------------------------------------
 .gitignore                                      |     1 +
 README.md                                       |    32 +
 rocketmq-console/.gitignore                     |     3 +
 rocketmq-console/.travis.yml                    |    16 +
 rocketmq-console/LICENSE                        |   579 +
 rocketmq-console/NOTICE                         |     5 +
 rocketmq-console/README.md                      |    68 +
 rocketmq-console/doc/1_0_0/Milestone.md         |   102 +
 rocketmq-console/doc/1_0_0/UserGuide_CN.md      |    64 +
 rocketmq-console/doc/1_0_0/UserGuide_EN.md      |    65 +
 rocketmq-console/pom.xml                        |   276 +
 rocketmq-console/src/main/docker/Dockerfile     |     6 +
 .../java/org/apache/rocketmq/console/App.java   |    31 +
 .../console/aspect/admin/MQAdminAspect.java     |    71 +
 .../admin/annotation/MultiMQAdminCmdMethod.java |    31 +
 .../OriginalControllerReturnValue.java          |    30 +
 .../rocketmq/console/config/RMQConfigure.java   |    87 +
 .../console/controller/ClusterController.java   |    46 +
 .../console/controller/ConsumerController.java  |   111 +
 .../console/controller/DashboardController.java |    58 +
 .../console/controller/MessageController.java   |    78 +
 .../console/controller/MonitorController.java   |    62 +
 .../console/controller/NamesvrController.java   |    39 +
 .../console/controller/OpsController.java       |    60 +
 .../console/controller/ProducerController.java  |    43 +
 .../console/controller/TestController.java      |   101 +
 .../console/controller/TopicController.java     |   117 +
 .../console/exception/ServiceException.java     |    31 +
 .../rocketmq/console/model/ConnectionInfo.java  |    53 +
 .../model/ConsumerGroupRollBackStat.java        |    61 +
 .../console/model/ConsumerMonitorConfig.java    |    46 +
 .../console/model/GroupConsumeInfo.java         |    95 +
 .../rocketmq/console/model/MessageView.java     |   196 +
 .../rocketmq/console/model/QueueStatInfo.java   |    85 +
 .../console/model/TopicConsumerInfo.java        |    62 +
 .../model/request/ConsumerConfigInfo.java       |    61 +
 .../model/request/DeleteSubGroupRequest.java    |    40 +
 .../model/request/ResetOffsetRequest.java       |    58 +
 .../model/request/SendTopicMessageRequest.java  |    56 +
 .../console/model/request/TopicConfigInfo.java  |   114 +
 .../console/service/AbstractCommonService.java  |    49 +
 .../console/service/ClusterService.java         |    27 +
 .../console/service/ConsumerService.java        |    58 +
 .../service/DashboardCollectService.java        |    36 +
 .../console/service/DashboardService.java       |    42 +
 .../console/service/MessageService.java         |    51 +
 .../console/service/MonitorService.java         |    30 +
 .../rocketmq/console/service/OpsService.java    |    32 +
 .../console/service/ProducerService.java        |    24 +
 .../rocketmq/console/service/TopicService.java  |    54 +
 .../console/service/checker/CheckerType.java    |    23 +
 .../service/checker/RocketMqChecker.java        |    24 +
 .../checker/impl/ClusterHealthCheckerImpl.java  |    34 +
 .../impl/TopicOnlyOneBrokerCheckerImpl.java     |    34 +
 .../console/service/client/MQAdminExtImpl.java  |   501 +
 .../console/service/client/MQAdminInstance.java |    85 +
 .../service/impl/ClusterServiceImpl.java        |    77 +
 .../service/impl/ConsumerServiceImpl.java       |   341 +
 .../impl/DashboardCollectServiceImpl.java       |   155 +
 .../service/impl/DashboardServiceImpl.java      |    73 +
 .../service/impl/MessageServiceImpl.java        |   199 +
 .../service/impl/MonitorServiceImpl.java        |   100 +
 .../console/service/impl/OpsServiceImpl.java    |    71 +
 .../service/impl/ProducerServiceImpl.java       |    41 +
 .../console/service/impl/TopicServiceImpl.java  |   214 +
 .../console/support/GlobalExceptionHandler.java |    47 +
 .../GlobalRestfulResponseBodyAdvice.java        |    62 +
 .../rocketmq/console/support/JsonResult.java    |    63 +
 .../console/task/DashboardCollectTask.java      |   320 +
 .../rocketmq/console/task/MonitorTask.java      |    50 +
 .../apache/rocketmq/console/util/JsonUtil.java  |   156 +
 .../src/main/resources/application.properties   |    16 +
 rocketmq-console/src/main/resources/logback.xml |    33 +
 .../src/main/resources/static/index.html        |   117 +
 .../src/main/resources/static/src/app.js        |   208 +
 .../src/main/resources/static/src/cluster.js    |    72 +
 .../src/main/resources/static/src/consumer.js   |   350 +
 .../src/main/resources/static/src/controller.js |   557 +
 .../main/resources/static/src/data/dict.json    |     4 +
 .../src/main/resources/static/src/i18n/en.js    |    80 +
 .../src/main/resources/static/src/i18n/zh.js    |    80 +
 .../src/main/resources/static/src/message.js    |   200 +
 .../src/main/resources/static/src/ops.js        |    59 +
 .../src/main/resources/static/src/producer.js   |    49 +
 .../resources/static/src/remoteApi/remoteApi.js |    75 +
 .../main/resources/static/src/tools/tools.js    |    85 +
 .../src/main/resources/static/src/topic.js      |   406 +
 .../src/main/resources/static/style/animate.css |    32 +
 .../src/main/resources/static/style/app.css     |   274 +
 .../src/main/resources/static/style/btn.css     |   752 +
 .../main/resources/static/style/img/alipay.png  |   Bin 0 -> 2156 bytes
 .../static/style/img/alipay_active.png          |   Bin 0 -> 2275 bytes
 .../static/style/img/icon_user_center.png       |   Bin 0 -> 31449 bytes
 .../main/resources/static/style/img/weipay.png  |   Bin 0 -> 1801 bytes
 .../static/style/img/weipay_active.png          |   Bin 0 -> 1920 bytes
 .../src/main/resources/static/style/login.css   |    12 +
 .../resources/static/style/preLoading/main.css  |   420 +
 .../static/style/preLoading/normalize.css       |   527 +
 .../src/main/resources/static/style/theme.css   |    80 +
 .../main/resources/static/style/timeline.css    |   126 +
 .../angular-material/angular-animate.min.js     |    56 +
 .../vendor/angular-material/angular-aria.min.js |    14 +
 .../angular-material/angular-material.min.css   | 16862 +++++++
 .../angular-material/angular-material.min.js    |    15 +
 .../static/vendor/angular/angular-animate.js    |  4148 ++
 .../vendor/angular/angular-animate.min.js       |    56 +
 .../vendor/angular/angular-animate.min.js.map   |     8 +
 .../static/vendor/angular/angular-aria.js       |   405 +
 .../static/vendor/angular/angular-aria.min.js   |    14 +
 .../vendor/angular/angular-aria.min.js.map      |     8 +
 .../static/vendor/angular/angular-cookies.js    |   322 +
 .../vendor/angular/angular-cookies.min.js       |     9 +
 .../vendor/angular/angular-cookies.min.js.map   |     8 +
 .../static/vendor/angular/angular-csp.css       |    21 +
 .../static/vendor/angular/angular-loader.js     |   484 +
 .../static/vendor/angular/angular-loader.min.js |    10 +
 .../vendor/angular/angular-loader.min.js.map    |     8 +
 .../vendor/angular/angular-message-format.js    |   980 +
 .../angular/angular-message-format.min.js       |    26 +
 .../angular/angular-message-format.min.js.map   |     8 +
 .../static/vendor/angular/angular-messages.js   |   724 +
 .../vendor/angular/angular-messages.min.js      |    12 +
 .../vendor/angular/angular-messages.min.js.map  |     8 +
 .../static/vendor/angular/angular-mocks.js      |  3112 ++
 .../static/vendor/angular/angular-parse-ext.js  |  1271 +
 .../vendor/angular/angular-parse-ext.min.js     |    49 +
 .../vendor/angular/angular-parse-ext.min.js.map |     8 +
 .../static/vendor/angular/angular-resource.js   |   768 +
 .../vendor/angular/angular-resource.min.js      |    15 +
 .../vendor/angular/angular-resource.min.js.map  |     8 +
 .../static/vendor/angular/angular-route.js      |  1032 +
 .../static/vendor/angular/angular-route.min.js  |    15 +
 .../vendor/angular/angular-route.min.js.map     |     8 +
 .../static/vendor/angular/angular-sanitize.js   |   717 +
 .../vendor/angular/angular-sanitize.min.js      |    15 +
 .../vendor/angular/angular-sanitize.min.js.map  |     8 +
 .../static/vendor/angular/angular-scenario.js   | 43097 +++++++++++++++++
 .../static/vendor/angular/angular-touch.js      |   729 +
 .../static/vendor/angular/angular-touch.min.js  |    14 +
 .../vendor/angular/angular-touch.min.js.map     |     8 +
 .../angular-translate-storage-cookie.js         |    97 +
 .../angular-translate-storage-cookie.min.js     |     6 +
 .../static/vendor/angular/angular-translate.js  |  3691 ++
 .../vendor/angular/angular-translate.min.js     |     6 +
 .../vendor/angular/angular-ui-router.min.js     |     8 +
 .../vendor/angular/angular-websocket.min.js     |     2 +
 .../resources/static/vendor/angular/angular.js  | 31023 ++++++++++++
 .../static/vendor/angular/angular.min.js        |   316 +
 .../static/vendor/angular/angular.min.js.map    |     8 +
 .../resources/static/vendor/angular/errors.json |     1 +
 .../vendor/angular/i18n/angular-locale_aa-dj.js |   128 +
 .../vendor/angular/i18n/angular-locale_aa-er.js |   128 +
 .../vendor/angular/i18n/angular-locale_aa-et.js |   128 +
 .../vendor/angular/i18n/angular-locale_aa.js    |   128 +
 .../vendor/angular/i18n/angular-locale_af-na.js |   125 +
 .../vendor/angular/i18n/angular-locale_af-za.js |   125 +
 .../vendor/angular/i18n/angular-locale_af.js    |   125 +
 .../angular/i18n/angular-locale_agq-cm.js       |   143 +
 .../vendor/angular/i18n/angular-locale_agq.js   |   143 +
 .../vendor/angular/i18n/angular-locale_ak-gh.js |   143 +
 .../vendor/angular/i18n/angular-locale_ak.js    |   143 +
 .../vendor/angular/i18n/angular-locale_am-et.js |   125 +
 .../vendor/angular/i18n/angular-locale_am.js    |   125 +
 .../angular/i18n/angular-locale_ar-001.js       |   125 +
 .../vendor/angular/i18n/angular-locale_ar-ae.js |   125 +
 .../vendor/angular/i18n/angular-locale_ar-bh.js |   125 +
 .../vendor/angular/i18n/angular-locale_ar-dj.js |   125 +
 .../vendor/angular/i18n/angular-locale_ar-dz.js |   125 +
 .../vendor/angular/i18n/angular-locale_ar-eg.js |   125 +
 .../vendor/angular/i18n/angular-locale_ar-eh.js |   125 +
 .../vendor/angular/i18n/angular-locale_ar-er.js |   125 +
 .../vendor/angular/i18n/angular-locale_ar-il.js |   125 +
 .../vendor/angular/i18n/angular-locale_ar-iq.js |   125 +
 .../vendor/angular/i18n/angular-locale_ar-jo.js |   125 +
 .../vendor/angular/i18n/angular-locale_ar-km.js |   125 +
 .../vendor/angular/i18n/angular-locale_ar-kw.js |   125 +
 .../vendor/angular/i18n/angular-locale_ar-lb.js |   125 +
 .../vendor/angular/i18n/angular-locale_ar-ly.js |   125 +
 .../vendor/angular/i18n/angular-locale_ar-ma.js |   125 +
 .../vendor/angular/i18n/angular-locale_ar-mr.js |   125 +
 .../vendor/angular/i18n/angular-locale_ar-om.js |   125 +
 .../vendor/angular/i18n/angular-locale_ar-ps.js |   125 +
 .../vendor/angular/i18n/angular-locale_ar-qa.js |   125 +
 .../vendor/angular/i18n/angular-locale_ar-sa.js |   125 +
 .../vendor/angular/i18n/angular-locale_ar-sd.js |   125 +
 .../vendor/angular/i18n/angular-locale_ar-so.js |   125 +
 .../vendor/angular/i18n/angular-locale_ar-ss.js |   125 +
 .../vendor/angular/i18n/angular-locale_ar-sy.js |   125 +
 .../vendor/angular/i18n/angular-locale_ar-td.js |   125 +
 .../vendor/angular/i18n/angular-locale_ar-tn.js |   125 +
 .../vendor/angular/i18n/angular-locale_ar-ye.js |   125 +
 .../vendor/angular/i18n/angular-locale_ar.js    |   125 +
 .../vendor/angular/i18n/angular-locale_as-in.js |   143 +
 .../vendor/angular/i18n/angular-locale_as.js    |   143 +
 .../angular/i18n/angular-locale_asa-tz.js       |   143 +
 .../vendor/angular/i18n/angular-locale_asa.js   |   143 +
 .../angular/i18n/angular-locale_ast-es.js       |   143 +
 .../vendor/angular/i18n/angular-locale_ast.js   |   143 +
 .../angular/i18n/angular-locale_az-cyrl-az.js   |   125 +
 .../angular/i18n/angular-locale_az-cyrl.js      |   125 +
 .../angular/i18n/angular-locale_az-latn-az.js   |   125 +
 .../angular/i18n/angular-locale_az-latn.js      |   125 +
 .../vendor/angular/i18n/angular-locale_az.js    |   125 +
 .../angular/i18n/angular-locale_bas-cm.js       |   143 +
 .../vendor/angular/i18n/angular-locale_bas.js   |   143 +
 .../vendor/angular/i18n/angular-locale_be-by.js |   125 +
 .../vendor/angular/i18n/angular-locale_be.js    |   125 +
 .../angular/i18n/angular-locale_bem-zm.js       |   143 +
 .../vendor/angular/i18n/angular-locale_bem.js   |   143 +
 .../angular/i18n/angular-locale_bez-tz.js       |   143 +
 .../vendor/angular/i18n/angular-locale_bez.js   |   143 +
 .../vendor/angular/i18n/angular-locale_bg-bg.js |   125 +
 .../vendor/angular/i18n/angular-locale_bg.js    |   125 +
 .../angular/i18n/angular-locale_bm-latn-ml.js   |   143 +
 .../angular/i18n/angular-locale_bm-latn.js      |   143 +
 .../vendor/angular/i18n/angular-locale_bm-ml.js |   115 +
 .../vendor/angular/i18n/angular-locale_bm.js    |   143 +
 .../vendor/angular/i18n/angular-locale_bn-bd.js |   125 +
 .../vendor/angular/i18n/angular-locale_bn-in.js |   125 +
 .../vendor/angular/i18n/angular-locale_bn.js    |   125 +
 .../vendor/angular/i18n/angular-locale_bo-cn.js |   143 +
 .../vendor/angular/i18n/angular-locale_bo-in.js |   143 +
 .../vendor/angular/i18n/angular-locale_bo.js    |   143 +
 .../vendor/angular/i18n/angular-locale_br-fr.js |   125 +
 .../vendor/angular/i18n/angular-locale_br.js    |   125 +
 .../angular/i18n/angular-locale_brx-in.js       |   143 +
 .../vendor/angular/i18n/angular-locale_brx.js   |   143 +
 .../angular/i18n/angular-locale_bs-cyrl-ba.js   |   143 +
 .../angular/i18n/angular-locale_bs-cyrl.js      |   143 +
 .../angular/i18n/angular-locale_bs-latn-ba.js   |   143 +
 .../angular/i18n/angular-locale_bs-latn.js      |   143 +
 .../vendor/angular/i18n/angular-locale_bs.js    |   143 +
 .../angular/i18n/angular-locale_byn-er.js       |   115 +
 .../vendor/angular/i18n/angular-locale_byn.js   |   115 +
 .../vendor/angular/i18n/angular-locale_ca-ad.js |   143 +
 .../i18n/angular-locale_ca-es-valencia.js       |   143 +
 .../vendor/angular/i18n/angular-locale_ca-es.js |   143 +
 .../vendor/angular/i18n/angular-locale_ca-fr.js |   143 +
 .../vendor/angular/i18n/angular-locale_ca-it.js |   143 +
 .../vendor/angular/i18n/angular-locale_ca.js    |   143 +
 .../angular/i18n/angular-locale_cgg-ug.js       |   143 +
 .../vendor/angular/i18n/angular-locale_cgg.js   |   143 +
 .../angular/i18n/angular-locale_chr-us.js       |   125 +
 .../vendor/angular/i18n/angular-locale_chr.js   |   125 +
 .../angular/i18n/angular-locale_ckb-arab-iq.js  |   143 +
 .../angular/i18n/angular-locale_ckb-arab-ir.js  |   143 +
 .../angular/i18n/angular-locale_ckb-arab.js     |   143 +
 .../angular/i18n/angular-locale_ckb-iq.js       |   143 +
 .../angular/i18n/angular-locale_ckb-ir.js       |   143 +
 .../angular/i18n/angular-locale_ckb-latn-iq.js  |   143 +
 .../angular/i18n/angular-locale_ckb-latn.js     |   143 +
 .../vendor/angular/i18n/angular-locale_ckb.js   |   143 +
 .../vendor/angular/i18n/angular-locale_cs-cz.js |   143 +
 .../vendor/angular/i18n/angular-locale_cs.js    |   143 +
 .../vendor/angular/i18n/angular-locale_cy-gb.js |   125 +
 .../vendor/angular/i18n/angular-locale_cy.js    |   125 +
 .../vendor/angular/i18n/angular-locale_da-dk.js |   156 +
 .../vendor/angular/i18n/angular-locale_da-gl.js |   156 +
 .../vendor/angular/i18n/angular-locale_da.js    |   156 +
 .../angular/i18n/angular-locale_dav-ke.js       |   143 +
 .../vendor/angular/i18n/angular-locale_dav.js   |   143 +
 .../vendor/angular/i18n/angular-locale_de-at.js |   143 +
 .../vendor/angular/i18n/angular-locale_de-be.js |   143 +
 .../vendor/angular/i18n/angular-locale_de-ch.js |   143 +
 .../vendor/angular/i18n/angular-locale_de-de.js |   143 +
 .../vendor/angular/i18n/angular-locale_de-li.js |   143 +
 .../vendor/angular/i18n/angular-locale_de-lu.js |   143 +
 .../vendor/angular/i18n/angular-locale_de.js    |   143 +
 .../angular/i18n/angular-locale_dje-ne.js       |   143 +
 .../vendor/angular/i18n/angular-locale_dje.js   |   143 +
 .../angular/i18n/angular-locale_dsb-de.js       |   143 +
 .../vendor/angular/i18n/angular-locale_dsb.js   |   143 +
 .../angular/i18n/angular-locale_dua-cm.js       |   143 +
 .../vendor/angular/i18n/angular-locale_dua.js   |   143 +
 .../angular/i18n/angular-locale_dyo-sn.js       |   143 +
 .../vendor/angular/i18n/angular-locale_dyo.js   |   143 +
 .../vendor/angular/i18n/angular-locale_dz-bt.js |   143 +
 .../vendor/angular/i18n/angular-locale_dz.js    |   143 +
 .../angular/i18n/angular-locale_ebu-ke.js       |   143 +
 .../vendor/angular/i18n/angular-locale_ebu.js   |   143 +
 .../vendor/angular/i18n/angular-locale_ee-gh.js |   143 +
 .../vendor/angular/i18n/angular-locale_ee-tg.js |   143 +
 .../vendor/angular/i18n/angular-locale_ee.js    |   143 +
 .../vendor/angular/i18n/angular-locale_el-cy.js |   125 +
 .../vendor/angular/i18n/angular-locale_el-gr.js |   125 +
 .../vendor/angular/i18n/angular-locale_el.js    |   125 +
 .../angular/i18n/angular-locale_en-001.js       |   143 +
 .../angular/i18n/angular-locale_en-150.js       |   143 +
 .../vendor/angular/i18n/angular-locale_en-ag.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-ai.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-as.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-au.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-bb.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-be.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-bm.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-bs.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-bw.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-bz.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-ca.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-cc.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-ck.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-cm.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-cx.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-dg.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-dm.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-er.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-fj.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-fk.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-fm.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-gb.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-gd.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-gg.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-gh.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-gi.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-gm.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-gu.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-gy.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-hk.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-ie.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-im.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-in.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-io.js |   143 +
 .../angular/i18n/angular-locale_en-iso.js       |   143 +
 .../vendor/angular/i18n/angular-locale_en-je.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-jm.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-ke.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-ki.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-kn.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-ky.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-lc.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-lr.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-ls.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-mg.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-mh.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-mo.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-mp.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-ms.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-mt.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-mu.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-mw.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-my.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-na.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-nf.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-ng.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-nr.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-nu.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-nz.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-pg.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-ph.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-pk.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-pn.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-pr.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-pw.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-rw.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-sb.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-sc.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-sd.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-sg.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-sh.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-sl.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-ss.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-sx.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-sz.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-tc.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-tk.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-to.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-tt.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-tv.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-tz.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-ug.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-um.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-us.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-vc.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-vg.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-vi.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-vu.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-ws.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-za.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-zm.js |   143 +
 .../vendor/angular/i18n/angular-locale_en-zw.js |   143 +
 .../vendor/angular/i18n/angular-locale_en.js    |   143 +
 .../angular/i18n/angular-locale_eo-001.js       |   143 +
 .../vendor/angular/i18n/angular-locale_eo.js    |   143 +
 .../angular/i18n/angular-locale_es-419.js       |   125 +
 .../vendor/angular/i18n/angular-locale_es-ar.js |   125 +
 .../vendor/angular/i18n/angular-locale_es-bo.js |   125 +
 .../vendor/angular/i18n/angular-locale_es-cl.js |   125 +
 .../vendor/angular/i18n/angular-locale_es-co.js |   125 +
 .../vendor/angular/i18n/angular-locale_es-cr.js |   125 +
 .../vendor/angular/i18n/angular-locale_es-cu.js |   125 +
 .../vendor/angular/i18n/angular-locale_es-do.js |   125 +
 .../vendor/angular/i18n/angular-locale_es-ea.js |   125 +
 .../vendor/angular/i18n/angular-locale_es-ec.js |   125 +
 .../vendor/angular/i18n/angular-locale_es-es.js |   125 +
 .../vendor/angular/i18n/angular-locale_es-gq.js |   125 +
 .../vendor/angular/i18n/angular-locale_es-gt.js |   125 +
 .../vendor/angular/i18n/angular-locale_es-hn.js |   125 +
 .../vendor/angular/i18n/angular-locale_es-ic.js |   125 +
 .../vendor/angular/i18n/angular-locale_es-mx.js |   125 +
 .../vendor/angular/i18n/angular-locale_es-ni.js |   125 +
 .../vendor/angular/i18n/angular-locale_es-pa.js |   125 +
 .../vendor/angular/i18n/angular-locale_es-pe.js |   125 +
 .../vendor/angular/i18n/angular-locale_es-ph.js |   125 +
 .../vendor/angular/i18n/angular-locale_es-pr.js |   125 +
 .../vendor/angular/i18n/angular-locale_es-py.js |   125 +
 .../vendor/angular/i18n/angular-locale_es-sv.js |   125 +
 .../vendor/angular/i18n/angular-locale_es-us.js |   125 +
 .../vendor/angular/i18n/angular-locale_es-uy.js |   125 +
 .../vendor/angular/i18n/angular-locale_es-ve.js |   125 +
 .../vendor/angular/i18n/angular-locale_es.js    |   125 +
 .../vendor/angular/i18n/angular-locale_et-ee.js |   143 +
 .../vendor/angular/i18n/angular-locale_et.js    |   143 +
 .../vendor/angular/i18n/angular-locale_eu-es.js |   125 +
 .../vendor/angular/i18n/angular-locale_eu.js    |   125 +
 .../angular/i18n/angular-locale_ewo-cm.js       |   143 +
 .../vendor/angular/i18n/angular-locale_ewo.js   |   143 +
 .../vendor/angular/i18n/angular-locale_fa-af.js |   125 +
 .../vendor/angular/i18n/angular-locale_fa-ir.js |   125 +
 .../vendor/angular/i18n/angular-locale_fa.js    |   125 +
 .../vendor/angular/i18n/angular-locale_ff-cm.js |   143 +
 .../vendor/angular/i18n/angular-locale_ff-gn.js |   143 +
 .../vendor/angular/i18n/angular-locale_ff-mr.js |   143 +
 .../vendor/angular/i18n/angular-locale_ff-sn.js |   143 +
 .../vendor/angular/i18n/angular-locale_ff.js    |   143 +
 .../vendor/angular/i18n/angular-locale_fi-fi.js |   143 +
 .../vendor/angular/i18n/angular-locale_fi.js    |   143 +
 .../angular/i18n/angular-locale_fil-ph.js       |   143 +
 .../vendor/angular/i18n/angular-locale_fil.js   |   143 +
 .../vendor/angular/i18n/angular-locale_fo-fo.js |   143 +
 .../vendor/angular/i18n/angular-locale_fo.js    |   143 +
 .../vendor/angular/i18n/angular-locale_fr-be.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-bf.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-bi.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-bj.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-bl.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-ca.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-cd.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-cf.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-cg.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-ch.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-ci.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-cm.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-dj.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-dz.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-fr.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-ga.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-gf.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-gn.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-gp.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-gq.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-ht.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-km.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-lu.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-ma.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-mc.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-mf.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-mg.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-ml.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-mq.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-mr.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-mu.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-nc.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-ne.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-pf.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-pm.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-re.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-rw.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-sc.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-sn.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-sy.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-td.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-tg.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-tn.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-vu.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-wf.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr-yt.js |   125 +
 .../vendor/angular/i18n/angular-locale_fr.js    |   125 +
 .../angular/i18n/angular-locale_fur-it.js       |   143 +
 .../vendor/angular/i18n/angular-locale_fur.js   |   143 +
 .../vendor/angular/i18n/angular-locale_fy-nl.js |   143 +
 .../vendor/angular/i18n/angular-locale_fy.js    |   143 +
 .../vendor/angular/i18n/angular-locale_ga-ie.js |   125 +
 .../vendor/angular/i18n/angular-locale_ga.js    |   125 +
 .../vendor/angular/i18n/angular-locale_gd-gb.js |   143 +
 .../vendor/angular/i18n/angular-locale_gd.js    |   143 +
 .../vendor/angular/i18n/angular-locale_gl-es.js |   143 +
 .../vendor/angular/i18n/angular-locale_gl.js    |   143 +
 .../angular/i18n/angular-locale_gsw-ch.js       |   125 +
 .../angular/i18n/angular-locale_gsw-fr.js       |   125 +
 .../angular/i18n/angular-locale_gsw-li.js       |   125 +
 .../vendor/angular/i18n/angular-locale_gsw.js   |   125 +
 .../vendor/angular/i18n/angular-locale_gu-in.js |   125 +
 .../vendor/angular/i18n/angular-locale_gu.js    |   125 +
 .../angular/i18n/angular-locale_guz-ke.js       |   143 +
 .../vendor/angular/i18n/angular-locale_guz.js   |   143 +
 .../vendor/angular/i18n/angular-locale_gv-im.js |   143 +
 .../vendor/angular/i18n/angular-locale_gv.js    |   143 +
 .../angular/i18n/angular-locale_ha-latn-gh.js   |   143 +
 .../angular/i18n/angular-locale_ha-latn-ne.js   |   143 +
 .../angular/i18n/angular-locale_ha-latn-ng.js   |   143 +
 .../angular/i18n/angular-locale_ha-latn.js      |   143 +
 .../vendor/angular/i18n/angular-locale_ha.js    |   143 +
 .../angular/i18n/angular-locale_haw-us.js       |   125 +
 .../vendor/angular/i18n/angular-locale_haw.js   |   125 +
 .../vendor/angular/i18n/angular-locale_he-il.js |   143 +
 .../vendor/angular/i18n/angular-locale_he.js    |   143 +
 .../vendor/angular/i18n/angular-locale_hi-in.js |   125 +
 .../vendor/angular/i18n/angular-locale_hi.js    |   125 +
 .../vendor/angular/i18n/angular-locale_hr-ba.js |   143 +
 .../vendor/angular/i18n/angular-locale_hr-hr.js |   143 +
 .../vendor/angular/i18n/angular-locale_hr.js    |   143 +
 .../angular/i18n/angular-locale_hsb-de.js       |   143 +
 .../vendor/angular/i18n/angular-locale_hsb.js   |   143 +
 .../vendor/angular/i18n/angular-locale_hu-hu.js |   125 +
 .../vendor/angular/i18n/angular-locale_hu.js    |   125 +
 .../vendor/angular/i18n/angular-locale_hy-am.js |   125 +
 .../vendor/angular/i18n/angular-locale_hy.js    |   125 +
 .../vendor/angular/i18n/angular-locale_ia-fr.js |   128 +
 .../vendor/angular/i18n/angular-locale_ia.js    |   128 +
 .../vendor/angular/i18n/angular-locale_id-id.js |   125 +
 .../vendor/angular/i18n/angular-locale_id.js    |   125 +
 .../vendor/angular/i18n/angular-locale_ig-ng.js |   143 +
 .../vendor/angular/i18n/angular-locale_ig.js    |   143 +
 .../vendor/angular/i18n/angular-locale_ii-cn.js |   143 +
 .../vendor/angular/i18n/angular-locale_ii.js    |   143 +
 .../vendor/angular/i18n/angular-locale_in.js    |   125 +
 .../vendor/angular/i18n/angular-locale_is-is.js |   156 +
 .../vendor/angular/i18n/angular-locale_is.js    |   156 +
 .../vendor/angular/i18n/angular-locale_it-ch.js |   143 +
 .../vendor/angular/i18n/angular-locale_it-it.js |   143 +
 .../vendor/angular/i18n/angular-locale_it-sm.js |   143 +
 .../vendor/angular/i18n/angular-locale_it.js    |   143 +
 .../vendor/angular/i18n/angular-locale_iw.js    |   143 +
 .../vendor/angular/i18n/angular-locale_ja-jp.js |   125 +
 .../vendor/angular/i18n/angular-locale_ja.js    |   125 +
 .../angular/i18n/angular-locale_jgo-cm.js       |   143 +
 .../vendor/angular/i18n/angular-locale_jgo.js   |   143 +
 .../angular/i18n/angular-locale_jmc-tz.js       |   143 +
 .../vendor/angular/i18n/angular-locale_jmc.js   |   143 +
 .../vendor/angular/i18n/angular-locale_ka-ge.js |   125 +
 .../vendor/angular/i18n/angular-locale_ka.js    |   125 +
 .../angular/i18n/angular-locale_kab-dz.js       |   143 +
 .../vendor/angular/i18n/angular-locale_kab.js   |   143 +
 .../angular/i18n/angular-locale_kam-ke.js       |   143 +
 .../vendor/angular/i18n/angular-locale_kam.js   |   143 +
 .../angular/i18n/angular-locale_kde-tz.js       |   143 +
 .../vendor/angular/i18n/angular-locale_kde.js   |   143 +
 .../angular/i18n/angular-locale_kea-cv.js       |   143 +
 .../vendor/angular/i18n/angular-locale_kea.js   |   143 +
 .../angular/i18n/angular-locale_khq-ml.js       |   143 +
 .../vendor/angular/i18n/angular-locale_khq.js   |   143 +
 .../vendor/angular/i18n/angular-locale_ki-ke.js |   143 +
 .../vendor/angular/i18n/angular-locale_ki.js    |   143 +
 .../angular/i18n/angular-locale_kk-cyrl-kz.js   |   125 +
 .../angular/i18n/angular-locale_kk-cyrl.js      |   125 +
 .../vendor/angular/i18n/angular-locale_kk.js    |   125 +
 .../angular/i18n/angular-locale_kkj-cm.js       |   143 +
 .../vendor/angular/i18n/angular-locale_kkj.js   |   143 +
 .../vendor/angular/i18n/angular-locale_kl-gl.js |   143 +
 .../vendor/angular/i18n/angular-locale_kl.js    |   143 +
 .../angular/i18n/angular-locale_kln-ke.js       |   143 +
 .../vendor/angular/i18n/angular-locale_kln.js   |   143 +
 .../vendor/angular/i18n/angular-locale_km-kh.js |   125 +
 .../vendor/angular/i18n/angular-locale_km.js    |   125 +
 .../vendor/angular/i18n/angular-locale_kn-in.js |   125 +
 .../vendor/angular/i18n/angular-locale_kn.js    |   125 +
 .../vendor/angular/i18n/angular-locale_ko-kp.js |   125 +
 .../vendor/angular/i18n/angular-locale_ko-kr.js |   125 +
 .../vendor/angular/i18n/angular-locale_ko.js    |   125 +
 .../angular/i18n/angular-locale_kok-in.js       |   143 +
 .../vendor/angular/i18n/angular-locale_kok.js   |   143 +
 .../angular/i18n/angular-locale_ks-arab-in.js   |   143 +
 .../angular/i18n/angular-locale_ks-arab.js      |   143 +
 .../vendor/angular/i18n/angular-locale_ks.js    |   143 +
 .../angular/i18n/angular-locale_ksb-tz.js       |   143 +
 .../vendor/angular/i18n/angular-locale_ksb.js   |   143 +
 .../angular/i18n/angular-locale_ksf-cm.js       |   143 +
 .../vendor/angular/i18n/angular-locale_ksf.js   |   143 +
 .../angular/i18n/angular-locale_ksh-de.js       |   143 +
 .../vendor/angular/i18n/angular-locale_ksh.js   |   143 +
 .../vendor/angular/i18n/angular-locale_kw-gb.js |   143 +
 .../vendor/angular/i18n/angular-locale_kw.js    |   143 +
 .../angular/i18n/angular-locale_ky-cyrl-kg.js   |   125 +
 .../angular/i18n/angular-locale_ky-cyrl.js      |   125 +
 .../vendor/angular/i18n/angular-locale_ky.js    |   125 +
 .../angular/i18n/angular-locale_lag-tz.js       |   143 +
 .../vendor/angular/i18n/angular-locale_lag.js   |   143 +
 .../vendor/angular/i18n/angular-locale_lb-lu.js |   143 +
 .../vendor/angular/i18n/angular-locale_lb.js    |   143 +
 .../vendor/angular/i18n/angular-locale_lg-ug.js |   143 +
 .../vendor/angular/i18n/angular-locale_lg.js    |   143 +
 .../angular/i18n/angular-locale_lkt-us.js       |   143 +
 .../vendor/angular/i18n/angular-locale_lkt.js   |   143 +
 .../vendor/angular/i18n/angular-locale_ln-ao.js |   125 +
 .../vendor/angular/i18n/angular-locale_ln-cd.js |   125 +
 .../vendor/angular/i18n/angular-locale_ln-cf.js |   125 +
 .../vendor/angular/i18n/angular-locale_ln-cg.js |   125 +
 .../vendor/angular/i18n/angular-locale_ln.js    |   125 +
 .../vendor/angular/i18n/angular-locale_lo-la.js |   125 +
 .../vendor/angular/i18n/angular-locale_lo.js    |   125 +
 .../vendor/angular/i18n/angular-locale_lt-lt.js |   143 +
 .../vendor/angular/i18n/angular-locale_lt.js    |   143 +
 .../vendor/angular/i18n/angular-locale_lu-cd.js |   143 +
 .../vendor/angular/i18n/angular-locale_lu.js    |   143 +
 .../angular/i18n/angular-locale_luo-ke.js       |   143 +
 .../vendor/angular/i18n/angular-locale_luo.js   |   143 +
 .../angular/i18n/angular-locale_luy-ke.js       |   143 +
 .../vendor/angular/i18n/angular-locale_luy.js   |   143 +
 .../vendor/angular/i18n/angular-locale_lv-lv.js |   143 +
 .../vendor/angular/i18n/angular-locale_lv.js    |   143 +
 .../angular/i18n/angular-locale_mas-ke.js       |   143 +
 .../angular/i18n/angular-locale_mas-tz.js       |   143 +
 .../vendor/angular/i18n/angular-locale_mas.js   |   143 +
 .../angular/i18n/angular-locale_mer-ke.js       |   143 +
 .../vendor/angular/i18n/angular-locale_mer.js   |   143 +
 .../angular/i18n/angular-locale_mfe-mu.js       |   143 +
 .../vendor/angular/i18n/angular-locale_mfe.js   |   143 +
 .../vendor/angular/i18n/angular-locale_mg-mg.js |   143 +
 .../vendor/angular/i18n/angular-locale_mg.js    |   143 +
 .../angular/i18n/angular-locale_mgh-mz.js       |   143 +
 .../vendor/angular/i18n/angular-locale_mgh.js   |   143 +
 .../angular/i18n/angular-locale_mgo-cm.js       |   143 +
 .../vendor/angular/i18n/angular-locale_mgo.js   |   143 +
 .../vendor/angular/i18n/angular-locale_mk-mk.js |   143 +
 .../vendor/angular/i18n/angular-locale_mk.js    |   143 +
 .../vendor/angular/i18n/angular-locale_ml-in.js |   125 +
 .../vendor/angular/i18n/angular-locale_ml.js    |   125 +
 .../angular/i18n/angular-locale_mn-cyrl-mn.js   |   125 +
 .../angular/i18n/angular-locale_mn-cyrl.js      |   125 +
 .../vendor/angular/i18n/angular-locale_mn.js    |   125 +
 .../vendor/angular/i18n/angular-locale_mr-in.js |   125 +
 .../vendor/angular/i18n/angular-locale_mr.js    |   125 +
 .../angular/i18n/angular-locale_ms-latn-bn.js   |   125 +
 .../angular/i18n/angular-locale_ms-latn-my.js   |   125 +
 .../angular/i18n/angular-locale_ms-latn-sg.js   |   125 +
 .../angular/i18n/angular-locale_ms-latn.js      |   125 +
 .../vendor/angular/i18n/angular-locale_ms.js    |   125 +
 .../vendor/angular/i18n/angular-locale_mt-mt.js |   125 +
 .../vendor/angular/i18n/angular-locale_mt.js    |   125 +
 .../angular/i18n/angular-locale_mua-cm.js       |   143 +
 .../vendor/angular/i18n/angular-locale_mua.js   |   143 +
 .../vendor/angular/i18n/angular-locale_my-mm.js |   125 +
 .../vendor/angular/i18n/angular-locale_my.js    |   125 +
 .../angular/i18n/angular-locale_naq-na.js       |   143 +
 .../vendor/angular/i18n/angular-locale_naq.js   |   143 +
 .../vendor/angular/i18n/angular-locale_nb-no.js |   125 +
 .../vendor/angular/i18n/angular-locale_nb-sj.js |   125 +
 .../vendor/angular/i18n/angular-locale_nb.js    |   125 +
 .../vendor/angular/i18n/angular-locale_nd-zw.js |   143 +
 .../vendor/angular/i18n/angular-locale_nd.js    |   143 +
 .../vendor/angular/i18n/angular-locale_ne-in.js |   125 +
 .../vendor/angular/i18n/angular-locale_ne-np.js |   125 +
 .../vendor/angular/i18n/angular-locale_ne.js    |   125 +
 .../vendor/angular/i18n/angular-locale_nl-aw.js |   143 +
 .../vendor/angular/i18n/angular-locale_nl-be.js |   143 +
 .../vendor/angular/i18n/angular-locale_nl-bq.js |   143 +
 .../vendor/angular/i18n/angular-locale_nl-cw.js |   143 +
 .../vendor/angular/i18n/angular-locale_nl-nl.js |   143 +
 .../vendor/angular/i18n/angular-locale_nl-sr.js |   143 +
 .../vendor/angular/i18n/angular-locale_nl-sx.js |   143 +
 .../vendor/angular/i18n/angular-locale_nl.js    |   143 +
 .../angular/i18n/angular-locale_nmg-cm.js       |   143 +
 .../vendor/angular/i18n/angular-locale_nmg.js   |   143 +
 .../vendor/angular/i18n/angular-locale_nn-no.js |   143 +
 .../vendor/angular/i18n/angular-locale_nn.js    |   143 +
 .../angular/i18n/angular-locale_nnh-cm.js       |   143 +
 .../vendor/angular/i18n/angular-locale_nnh.js   |   143 +
 .../vendor/angular/i18n/angular-locale_no-no.js |   125 +
 .../vendor/angular/i18n/angular-locale_no.js    |   125 +
 .../vendor/angular/i18n/angular-locale_nr-za.js |   128 +
 .../vendor/angular/i18n/angular-locale_nr.js    |   128 +
 .../angular/i18n/angular-locale_nso-za.js       |   128 +
 .../vendor/angular/i18n/angular-locale_nso.js   |   128 +
 .../angular/i18n/angular-locale_nus-sd.js       |   143 +
 .../vendor/angular/i18n/angular-locale_nus.js   |   143 +
 .../angular/i18n/angular-locale_nyn-ug.js       |   143 +
 .../vendor/angular/i18n/angular-locale_nyn.js   |   143 +
 .../vendor/angular/i18n/angular-locale_om-et.js |   143 +
 .../vendor/angular/i18n/angular-locale_om-ke.js |   143 +
 .../vendor/angular/i18n/angular-locale_om.js    |   143 +
 .../vendor/angular/i18n/angular-locale_or-in.js |   125 +
 .../vendor/angular/i18n/angular-locale_or.js    |   125 +
 .../vendor/angular/i18n/angular-locale_os-ge.js |   143 +
 .../vendor/angular/i18n/angular-locale_os-ru.js |   143 +
 .../vendor/angular/i18n/angular-locale_os.js    |   143 +
 .../angular/i18n/angular-locale_pa-arab-pk.js   |   125 +
 .../angular/i18n/angular-locale_pa-arab.js      |   125 +
 .../angular/i18n/angular-locale_pa-guru-in.js   |   125 +
 .../angular/i18n/angular-locale_pa-guru.js      |   125 +
 .../vendor/angular/i18n/angular-locale_pa.js    |   125 +
 .../vendor/angular/i18n/angular-locale_pl-pl.js |   143 +
 .../vendor/angular/i18n/angular-locale_pl.js    |   143 +
 .../vendor/angular/i18n/angular-locale_ps-af.js |   143 +
 .../vendor/angular/i18n/angular-locale_ps.js    |   143 +
 .../vendor/angular/i18n/angular-locale_pt-ao.js |   125 +
 .../vendor/angular/i18n/angular-locale_pt-br.js |   125 +
 .../vendor/angular/i18n/angular-locale_pt-cv.js |   125 +
 .../vendor/angular/i18n/angular-locale_pt-gw.js |   125 +
 .../vendor/angular/i18n/angular-locale_pt-mo.js |   125 +
 .../vendor/angular/i18n/angular-locale_pt-mz.js |   125 +
 .../vendor/angular/i18n/angular-locale_pt-pt.js |   125 +
 .../vendor/angular/i18n/angular-locale_pt-st.js |   125 +
 .../vendor/angular/i18n/angular-locale_pt-tl.js |   125 +
 .../vendor/angular/i18n/angular-locale_pt.js    |   125 +
 .../vendor/angular/i18n/angular-locale_qu-bo.js |   143 +
 .../vendor/angular/i18n/angular-locale_qu-ec.js |   143 +
 .../vendor/angular/i18n/angular-locale_qu-pe.js |   143 +
 .../vendor/angular/i18n/angular-locale_qu.js    |   143 +
 .../vendor/angular/i18n/angular-locale_rm-ch.js |   143 +
 .../vendor/angular/i18n/angular-locale_rm.js    |   143 +
 .../vendor/angular/i18n/angular-locale_rn-bi.js |   143 +
 .../vendor/angular/i18n/angular-locale_rn.js    |   143 +
 .../vendor/angular/i18n/angular-locale_ro-md.js |   143 +
 .../vendor/angular/i18n/angular-locale_ro-ro.js |   143 +
 .../vendor/angular/i18n/angular-locale_ro.js    |   143 +
 .../angular/i18n/angular-locale_rof-tz.js       |   143 +
 .../vendor/angular/i18n/angular-locale_rof.js   |   143 +
 .../vendor/angular/i18n/angular-locale_ru-by.js |   143 +
 .../vendor/angular/i18n/angular-locale_ru-kg.js |   143 +
 .../vendor/angular/i18n/angular-locale_ru-kz.js |   143 +
 .../vendor/angular/i18n/angular-locale_ru-md.js |   143 +
 .../vendor/angular/i18n/angular-locale_ru-ru.js |   143 +
 .../vendor/angular/i18n/angular-locale_ru-ua.js |   143 +
 .../vendor/angular/i18n/angular-locale_ru.js    |   143 +
 .../vendor/angular/i18n/angular-locale_rw-rw.js |   143 +
 .../vendor/angular/i18n/angular-locale_rw.js    |   143 +
 .../angular/i18n/angular-locale_rwk-tz.js       |   143 +
 .../vendor/angular/i18n/angular-locale_rwk.js   |   143 +
 .../angular/i18n/angular-locale_sah-ru.js       |   143 +
 .../vendor/angular/i18n/angular-locale_sah.js   |   143 +
 .../angular/i18n/angular-locale_saq-ke.js       |   143 +
 .../vendor/angular/i18n/angular-locale_saq.js   |   143 +
 .../angular/i18n/angular-locale_sbp-tz.js       |   143 +
 .../vendor/angular/i18n/angular-locale_sbp.js   |   143 +
 .../vendor/angular/i18n/angular-locale_se-fi.js |   143 +
 .../vendor/angular/i18n/angular-locale_se-no.js |   143 +
 .../vendor/angular/i18n/angular-locale_se-se.js |   143 +
 .../vendor/angular/i18n/angular-locale_se.js    |   143 +
 .../angular/i18n/angular-locale_seh-mz.js       |   143 +
 .../vendor/angular/i18n/angular-locale_seh.js   |   143 +
 .../angular/i18n/angular-locale_ses-ml.js       |   143 +
 .../vendor/angular/i18n/angular-locale_ses.js   |   143 +
 .../vendor/angular/i18n/angular-locale_sg-cf.js |   143 +
 .../vendor/angular/i18n/angular-locale_sg.js    |   143 +
 .../angular/i18n/angular-locale_shi-latn-ma.js  |   143 +
 .../angular/i18n/angular-locale_shi-latn.js     |   143 +
 .../angular/i18n/angular-locale_shi-tfng-ma.js  |   143 +
 .../angular/i18n/angular-locale_shi-tfng.js     |   143 +
 .../vendor/angular/i18n/angular-locale_shi.js   |   143 +
 .../vendor/angular/i18n/angular-locale_si-lk.js |   143 +
 .../vendor/angular/i18n/angular-locale_si.js    |   143 +
 .../vendor/angular/i18n/angular-locale_sk-sk.js |   143 +
 .../vendor/angular/i18n/angular-locale_sk.js    |   143 +
 .../vendor/angular/i18n/angular-locale_sl-si.js |   143 +
 .../vendor/angular/i18n/angular-locale_sl.js    |   143 +
 .../angular/i18n/angular-locale_smn-fi.js       |   143 +
 .../vendor/angular/i18n/angular-locale_smn.js   |   143 +
 .../vendor/angular/i18n/angular-locale_sn-zw.js |   143 +
 .../vendor/angular/i18n/angular-locale_sn.js    |   143 +
 .../vendor/angular/i18n/angular-locale_so-dj.js |   143 +
 .../vendor/angular/i18n/angular-locale_so-et.js |   143 +
 .../vendor/angular/i18n/angular-locale_so-ke.js |   143 +
 .../vendor/angular/i18n/angular-locale_so-so.js |   143 +
 .../vendor/angular/i18n/angular-locale_so.js    |   143 +
 .../vendor/angular/i18n/angular-locale_sq-al.js |   125 +
 .../vendor/angular/i18n/angular-locale_sq-mk.js |   125 +
 .../vendor/angular/i18n/angular-locale_sq-xk.js |   125 +
 .../vendor/angular/i18n/angular-locale_sq.js    |   125 +
 .../angular/i18n/angular-locale_sr-cyrl-ba.js   |   143 +
 .../angular/i18n/angular-locale_sr-cyrl-me.js   |   143 +
 .../angular/i18n/angular-locale_sr-cyrl-rs.js   |   143 +
 .../angular/i18n/angular-locale_sr-cyrl-xk.js   |   143 +
 .../angular/i18n/angular-locale_sr-cyrl.js      |   143 +
 .../angular/i18n/angular-locale_sr-latn-ba.js   |   143 +
 .../angular/i18n/angular-locale_sr-latn-me.js   |   143 +
 .../angular/i18n/angular-locale_sr-latn-rs.js   |   143 +
 .../angular/i18n/angular-locale_sr-latn-xk.js   |   143 +
 .../angular/i18n/angular-locale_sr-latn.js      |   143 +
 .../vendor/angular/i18n/angular-locale_sr.js    |   143 +
 .../vendor/angular/i18n/angular-locale_ss-sz.js |   128 +
 .../vendor/angular/i18n/angular-locale_ss-za.js |   128 +
 .../vendor/angular/i18n/angular-locale_ss.js    |   128 +
 .../angular/i18n/angular-locale_ssy-er.js       |   128 +
 .../vendor/angular/i18n/angular-locale_ssy.js   |   128 +
 .../vendor/angular/i18n/angular-locale_st-ls.js |   115 +
 .../vendor/angular/i18n/angular-locale_st-za.js |   115 +
 .../vendor/angular/i18n/angular-locale_st.js    |   115 +
 .../vendor/angular/i18n/angular-locale_sv-ax.js |   143 +
 .../vendor/angular/i18n/angular-locale_sv-fi.js |   143 +
 .../vendor/angular/i18n/angular-locale_sv-se.js |   143 +
 .../vendor/angular/i18n/angular-locale_sv.js    |   143 +
 .../vendor/angular/i18n/angular-locale_sw-cd.js |   143 +
 .../vendor/angular/i18n/angular-locale_sw-ke.js |   143 +
 .../vendor/angular/i18n/angular-locale_sw-tz.js |   143 +
 .../vendor/angular/i18n/angular-locale_sw-ug.js |   143 +
 .../vendor/angular/i18n/angular-locale_sw.js    |   143 +
 .../angular/i18n/angular-locale_swc-cd.js       |   128 +
 .../vendor/angular/i18n/angular-locale_swc.js   |   128 +
 .../vendor/angular/i18n/angular-locale_ta-in.js |   125 +
 .../vendor/angular/i18n/angular-locale_ta-lk.js |   125 +
 .../vendor/angular/i18n/angular-locale_ta-my.js |   125 +
 .../vendor/angular/i18n/angular-locale_ta-sg.js |   125 +
 .../vendor/angular/i18n/angular-locale_ta.js    |   125 +
 .../vendor/angular/i18n/angular-locale_te-in.js |   125 +
 .../vendor/angular/i18n/angular-locale_te.js    |   125 +
 .../angular/i18n/angular-locale_teo-ke.js       |   143 +
 .../angular/i18n/angular-locale_teo-ug.js       |   143 +
 .../vendor/angular/i18n/angular-locale_teo.js   |   143 +
 .../angular/i18n/angular-locale_tg-cyrl-tj.js   |   115 +
 .../angular/i18n/angular-locale_tg-cyrl.js      |   115 +
 .../vendor/angular/i18n/angular-locale_tg.js    |   115 +
 .../vendor/angular/i18n/angular-locale_th-th.js |   125 +
 .../vendor/angular/i18n/angular-locale_th.js    |   125 +
 .../vendor/angular/i18n/angular-locale_ti-er.js |   143 +
 .../vendor/angular/i18n/angular-locale_ti-et.js |   143 +
 .../vendor/angular/i18n/angular-locale_ti.js    |   143 +
 .../angular/i18n/angular-locale_tig-er.js       |   115 +
 .../vendor/angular/i18n/angular-locale_tig.js   |   115 +
 .../vendor/angular/i18n/angular-locale_tl.js    |   143 +
 .../vendor/angular/i18n/angular-locale_tn-bw.js |   128 +
 .../vendor/angular/i18n/angular-locale_tn-za.js |   128 +
 .../vendor/angular/i18n/angular-locale_tn.js    |   128 +
 .../vendor/angular/i18n/angular-locale_to-to.js |   143 +
 .../vendor/angular/i18n/angular-locale_to.js    |   143 +
 .../vendor/angular/i18n/angular-locale_tr-cy.js |   125 +
 .../vendor/angular/i18n/angular-locale_tr-tr.js |   125 +
 .../vendor/angular/i18n/angular-locale_tr.js    |   125 +
 .../vendor/angular/i18n/angular-locale_ts-za.js |   128 +
 .../vendor/angular/i18n/angular-locale_ts.js    |   128 +
 .../angular/i18n/angular-locale_twq-ne.js       |   143 +
 .../vendor/angular/i18n/angular-locale_twq.js   |   143 +
 .../angular/i18n/angular-locale_tzm-latn-ma.js  |   143 +
 .../angular/i18n/angular-locale_tzm-latn.js     |   143 +
 .../vendor/angular/i18n/angular-locale_tzm.js   |   143 +
 .../angular/i18n/angular-locale_ug-arab-cn.js   |   143 +
 .../angular/i18n/angular-locale_ug-arab.js      |   143 +
 .../vendor/angular/i18n/angular-locale_ug.js    |   143 +
 .../vendor/angular/i18n/angular-locale_uk-ua.js |   143 +
 .../vendor/angular/i18n/angular-locale_uk.js    |   143 +
 .../vendor/angular/i18n/angular-locale_ur-in.js |   143 +
 .../vendor/angular/i18n/angular-locale_ur-pk.js |   143 +
 .../vendor/angular/i18n/angular-locale_ur.js    |   143 +
 .../angular/i18n/angular-locale_uz-arab-af.js   |   125 +
 .../angular/i18n/angular-locale_uz-arab.js      |   125 +
 .../angular/i18n/angular-locale_uz-cyrl-uz.js   |   125 +
 .../angular/i18n/angular-locale_uz-cyrl.js      |   125 +
 .../angular/i18n/angular-locale_uz-latn-uz.js   |   125 +
 .../angular/i18n/angular-locale_uz-latn.js      |   125 +
 .../vendor/angular/i18n/angular-locale_uz.js    |   125 +
 .../angular/i18n/angular-locale_vai-latn-lr.js  |   143 +
 .../angular/i18n/angular-locale_vai-latn.js     |   143 +
 .../angular/i18n/angular-locale_vai-vaii-lr.js  |   143 +
 .../angular/i18n/angular-locale_vai-vaii.js     |   143 +
 .../vendor/angular/i18n/angular-locale_vai.js   |   143 +
 .../vendor/angular/i18n/angular-locale_ve-za.js |   128 +
 .../vendor/angular/i18n/angular-locale_ve.js    |   128 +
 .../vendor/angular/i18n/angular-locale_vi-vn.js |   125 +
 .../vendor/angular/i18n/angular-locale_vi.js    |   125 +
 .../angular/i18n/angular-locale_vo-001.js       |   128 +
 .../vendor/angular/i18n/angular-locale_vo.js    |   128 +
 .../angular/i18n/angular-locale_vun-tz.js       |   143 +
 .../vendor/angular/i18n/angular-locale_vun.js   |   143 +
 .../angular/i18n/angular-locale_wae-ch.js       |   143 +
 .../vendor/angular/i18n/angular-locale_wae.js   |   143 +
 .../angular/i18n/angular-locale_wal-et.js       |   115 +
 .../vendor/angular/i18n/angular-locale_wal.js   |   115 +
 .../vendor/angular/i18n/angular-locale_xh-za.js |   115 +
 .../vendor/angular/i18n/angular-locale_xh.js    |   115 +
 .../angular/i18n/angular-locale_xog-ug.js       |   143 +
 .../vendor/angular/i18n/angular-locale_xog.js   |   143 +
 .../angular/i18n/angular-locale_yav-cm.js       |   143 +
 .../vendor/angular/i18n/angular-locale_yav.js   |   143 +
 .../angular/i18n/angular-locale_yi-001.js       |   143 +
 .../vendor/angular/i18n/angular-locale_yi.js    |   143 +
 .../vendor/angular/i18n/angular-locale_yo-bj.js |   143 +
 .../vendor/angular/i18n/angular-locale_yo-ng.js |   143 +
 .../vendor/angular/i18n/angular-locale_yo.js    |   143 +
 .../angular/i18n/angular-locale_zgh-ma.js       |   143 +
 .../vendor/angular/i18n/angular-locale_zgh.js   |   143 +
 .../vendor/angular/i18n/angular-locale_zh-cn.js |   125 +
 .../angular/i18n/angular-locale_zh-hans-cn.js   |   125 +
 .../angular/i18n/angular-locale_zh-hans-hk.js   |   125 +
 .../angular/i18n/angular-locale_zh-hans-mo.js   |   125 +
 .../angular/i18n/angular-locale_zh-hans-sg.js   |   125 +
 .../angular/i18n/angular-locale_zh-hans.js      |   125 +
 .../angular/i18n/angular-locale_zh-hant-hk.js   |   125 +
 .../angular/i18n/angular-locale_zh-hant-mo.js   |   125 +
 .../angular/i18n/angular-locale_zh-hant-tw.js   |   125 +
 .../angular/i18n/angular-locale_zh-hant.js      |   125 +
 .../vendor/angular/i18n/angular-locale_zh-hk.js |   125 +
 .../vendor/angular/i18n/angular-locale_zh-tw.js |   125 +
 .../vendor/angular/i18n/angular-locale_zh.js    |   125 +
 .../vendor/angular/i18n/angular-locale_zu-za.js |   125 +
 .../vendor/angular/i18n/angular-locale_zu.js    |   125 +
 .../notification/angular-ui-notification.css    |   105 +
 .../notification/angular-ui-notification.js     |   183 +
 .../static/vendor/angular/version.json          |     1 +
 .../resources/static/vendor/angular/version.txt |     1 +
 .../css/bootstrap-material-design.css           |  3426 ++
 .../css/bootstrap-material-design.css.map       |     1 +
 .../css/bootstrap-material-design.min.css       |     2 +
 .../css/bootstrap-material-design.min.css.map   |     1 +
 .../bootstrap-material-design/css/ripples.css   |    47 +
 .../css/ripples.css.map                         |     1 +
 .../css/ripples.min.css                         |     2 +
 .../css/ripples.min.css.map                     |     1 +
 .../bootstrap-material-design/js/material.js    |   352 +
 .../js/material.min.js                          |     2 +
 .../js/material.min.js.map                      |     1 +
 .../bootstrap-material-design/js/ripples.js     |   324 +
 .../bootstrap-material-design/js/ripples.min.js |     2 +
 .../js/ripples.min.js.map                       |     1 +
 .../sassc/bootstrap-material-design.css         |  2234 +
 .../sassc/bootstrap-material-design.css.map     |     7 +
 .../bootstrap-material-design/sassc/ripples.css |    37 +
 .../sassc/ripples.css.map                       |     7 +
 .../vendor/bootstrap/css/bootstrap-theme.css    |   587 +
 .../bootstrap/css/bootstrap-theme.css.map       |     1 +
 .../bootstrap/css/bootstrap-theme.min.css       |     5 +
 .../static/vendor/bootstrap/css/bootstrap.css   |  6800 +++
 .../vendor/bootstrap/css/bootstrap.css.map      |     1 +
 .../vendor/bootstrap/css/bootstrap.min.css      |     5 +
 .../fonts/glyphicons-halflings-regular.eot      |   Bin 0 -> 20127 bytes
 .../fonts/glyphicons-halflings-regular.svg      |   288 +
 .../fonts/glyphicons-halflings-regular.ttf      |   Bin 0 -> 45404 bytes
 .../fonts/glyphicons-halflings-regular.woff     |   Bin 0 -> 23424 bytes
 .../fonts/glyphicons-halflings-regular.woff2    |   Bin 0 -> 18028 bytes
 .../static/vendor/bootstrap/js/bootstrap.js     |  2363 +
 .../static/vendor/bootstrap/js/bootstrap.min.js |     7 +
 .../resources/static/vendor/bootstrap/js/npm.js |    13 +
 .../static/vendor/chosen/angular-chosen.js      |   143 +
 .../static/vendor/chosen/angular-chosen.min.js  |     7 +
 .../static/vendor/chosen/chosen-spinner.css     |    12 +
 .../static/vendor/chosen/chosen-sprite.png      |   Bin 0 -> 514 bytes
 .../static/vendor/chosen/chosen-sprite@2x.png   |   Bin 0 -> 690 bytes
 .../resources/static/vendor/chosen/chosen.css   |   450 +
 .../static/vendor/chosen/chosen.jquery.min.js   |     2 +
 .../resources/static/vendor/chosen/spinner.gif  |   Bin 0 -> 1849 bytes
 .../src/main/resources/static/vendor/common.js  |    10 +
 .../angular-eonasdan-datetimepicker.min.js      |     1 +
 .../bootstrap-datetimepicker.min.css            |     5 +
 .../bootstrap-datetimepicker.min.js             |     9 +
 .../static/vendor/datatimepicker/moment.min.js  |     7 +
 .../static/vendor/dropdown/jquery.dropdown.css  |    97 +
 .../static/vendor/dropdown/jquery.dropdown.js   |   410 +
 .../static/vendor/echarts/echarts.min.js        |    36 +
 .../vendor/font-awesome-4.7.0/HELP-US-OUT.txt   |     7 +
 .../font-awesome-4.7.0/css/font-awesome.css     |  2337 +
 .../font-awesome-4.7.0/css/font-awesome.min.css |     4 +
 .../font-awesome-4.7.0/fonts/FontAwesome.otf    |   Bin 0 -> 134808 bytes
 .../fonts/fontawesome-webfont.eot               |   Bin 0 -> 165742 bytes
 .../fonts/fontawesome-webfont.svg               |  2671 +
 .../fonts/fontawesome-webfont.ttf               |   Bin 0 -> 165548 bytes
 .../fonts/fontawesome-webfont.woff              |   Bin 0 -> 98024 bytes
 .../fonts/fontawesome-webfont.woff2             |   Bin 0 -> 77160 bytes
 .../font-awesome-4.7.0/less/animated.less       |    34 +
 .../less/bordered-pulled.less                   |    25 +
 .../vendor/font-awesome-4.7.0/less/core.less    |    12 +
 .../font-awesome-4.7.0/less/fixed-width.less    |     6 +
 .../font-awesome-4.7.0/less/font-awesome.less   |    18 +
 .../vendor/font-awesome-4.7.0/less/icons.less   |   789 +
 .../vendor/font-awesome-4.7.0/less/larger.less  |    13 +
 .../vendor/font-awesome-4.7.0/less/list.less    |    19 +
 .../vendor/font-awesome-4.7.0/less/mixins.less  |    60 +
 .../vendor/font-awesome-4.7.0/less/path.less    |    15 +
 .../less/rotated-flipped.less                   |    20 +
 .../font-awesome-4.7.0/less/screen-reader.less  |     5 +
 .../vendor/font-awesome-4.7.0/less/stacked.less |    20 +
 .../font-awesome-4.7.0/less/variables.less      |   800 +
 .../font-awesome-4.7.0/scss/_animated.scss      |    34 +
 .../scss/_bordered-pulled.scss                  |    25 +
 .../vendor/font-awesome-4.7.0/scss/_core.scss   |    12 +
 .../font-awesome-4.7.0/scss/_fixed-width.scss   |     6 +
 .../vendor/font-awesome-4.7.0/scss/_icons.scss  |   789 +
 .../vendor/font-awesome-4.7.0/scss/_larger.scss |    13 +
 .../vendor/font-awesome-4.7.0/scss/_list.scss   |    19 +
 .../vendor/font-awesome-4.7.0/scss/_mixins.scss |    60 +
 .../vendor/font-awesome-4.7.0/scss/_path.scss   |    15 +
 .../scss/_rotated-flipped.scss                  |    20 +
 .../font-awesome-4.7.0/scss/_screen-reader.scss |     5 +
 .../font-awesome-4.7.0/scss/_stacked.scss       |    20 +
 .../font-awesome-4.7.0/scss/_variables.scss     |   800 +
 .../font-awesome-4.7.0/scss/font-awesome.scss   |    18 +
 .../static/vendor/jquery/jquery-3.0.0.min.js    |     3 +
 .../static/vendor/jquery/jquery1.11.3.min.js    |     6 +
 .../static/vendor/json-bigint/json-bigint.js    |  2668 +
 .../static/vendor/loading/css/default.css       |   228 +
 .../static/vendor/loading/css/ladda-theme.scss  |    78 +
 .../static/vendor/loading/css/ladda.scss        |   486 +
 .../static/vendor/loading/css/normalize.css     |     1 +
 .../vendor/loading/dist/ladda-themeless.css     |   330 +
 .../vendor/loading/dist/ladda-themeless.min.css |     7 +
 .../static/vendor/loading/dist/ladda.css        |   392 +
 .../vendor/loading/dist/ladda.jquery.min.js     |     8 +
 .../static/vendor/loading/dist/ladda.js         |   160 +
 .../static/vendor/loading/dist/ladda.min.css    |     7 +
 .../static/vendor/loading/dist/ladda.min.js     |     8 +
 .../static/vendor/loading/dist/spin.js          |   218 +
 .../static/vendor/loading/dist/spin.min.js      |     1 +
 .../static/vendor/loading/fonts/icomoon.eot     |   Bin 0 -> 1540 bytes
 .../static/vendor/loading/fonts/icomoon.svg     |    12 +
 .../static/vendor/loading/fonts/icomoon.ttf     |   Bin 0 -> 1376 bytes
 .../static/vendor/loading/fonts/icomoon.woff    |   Bin 0 -> 1452 bytes
 .../static/vendor/loading/js/ladda.jquery.js    |    46 +
 .../resources/static/vendor/loading/js/ladda.js |   412 +
 .../resources/static/vendor/loading/js/spin.js  |   349 +
 .../vendor/md-tab/angular-messages.min.js       |    12 +
 .../static/vendor/md-tab/angular-route.min.js   |    15 +
 .../resources/static/vendor/md-tab/docs.css     |  1199 +
 .../static/vendor/md-tab/svg-assets-cache.js    |    71 +
 .../vendor/ng-dialog/ngDialog-theme-default.css |   192 +
 .../static/vendor/ng-dialog/ngDialog.min.css    |     1 +
 .../static/vendor/ng-dialog/ngDialog.min.js     |   890 +
 .../notification/angular-ui-notification.css    |   105 +
 .../notification/angular-ui-notification.js     |   183 +
 .../static/vendor/pagination/tm.pagination.js   |   192 +
 .../resources/static/vendor/preLoading/main.js  |    22 +
 .../vendor/preLoading/modernizr-2.6.2.min.js    |     4 +
 .../static/vendor/validator/validator.js        |   341 +
 .../static/vendor/validator/validator.min.js    |     9 +
 .../resources/static/view/layout/_footer.html   |     4 +
 .../resources/static/view/layout/_header.html   |    33 +
 .../main/resources/static/view/pages/404.html   |    16 +
 .../main/resources/static/view/pages/50x.html   |    16 +
 .../resources/static/view/pages/cluster.html    |   128 +
 .../resources/static/view/pages/consumer.html   |   438 +
 .../main/resources/static/view/pages/index.html |    58 +
 .../resources/static/view/pages/message.html    |   273 +
 .../main/resources/static/view/pages/ops.html   |    39 +
 .../resources/static/view/pages/producer.html   |    58 +
 .../main/resources/static/view/pages/topic.html |   499 +
 .../static/view/pages/un_support_browser.html   |    47 +
 .../controller/ClusterControllerTests.java      |    34 +
 .../console/controller/OpsControllerTest.java   |    57 +
 .../service/impl/ClusterServiceImplTest.java    |    61 +
 .../service/impl/ConsumerServiceImplTest.java   |   182 +
 .../impl/DashboardCollectServiceImplTest.java   |    62 +
 .../service/impl/DashboardServiceImplTest.java  |    51 +
 .../service/impl/MessageServiceImplTest.java    |   135 +
 .../service/impl/MonitorServiceImplTest.java    |    55 +
 .../service/impl/OpsServiceImplTest.java        |    66 +
 .../service/impl/ProducerServiceImplTest.java   |    71 +
 .../service/impl/TopicServiceImplTest.java      |   161 +
 .../testbase/RocketMQConsoleTestBase.java       |   168 +
 .../rocketmq/console/testbase/TestConstant.java |    38 +
 .../console/testbase/TestRocketMQServer.java    |   157 +
 .../console/web/WebStaticApplicationTests.java  |    84 +
 .../src/test/resources/application.properties   |    15 +
 rocketmq-console/src/test/resources/logback.xml |    13 +
 .../test/resources/logback_rocketmq_client.xml  |    44 +
 rocketmq-console/style/copyright/Apache.xml     |    23 +
 .../style/copyright/profiles_settings.xml       |    64 +
 rocketmq-console/style/rmq_checkstyle.xml       |   135 +
 rocketmq-console/style/rmq_codeStyle.xml        |   157 +
 1054 files changed, 260854 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..485dee6
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+.idea

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..07a5fa6
--- /dev/null
+++ b/README.md
@@ -0,0 +1,32 @@
+# RocketMQ Externals
+
+There are some RocketMQ external projects, with the purpose of growing the RocketMQ community.
+
+## RocketMQ-Console-Ng
+A console for RocketMQ
+
+## RocketMQ-JMS
+RocketMQ-JMS is an implement of JMS specification,taking Apache RocketMQ as broker. Now we are on the way of supporting JMS 1.1 and JMS2.0 is our final target.
+
+## RocketMQ-Flume-Ng
+
+This project is used to receive and send messages between
+[RocketMQ](http://rocketmq.incubator.apache.org/) and [Flume-ng](https://github.com/apache/flume)
+
+1. Firstly, please get familiar with [RocketMQ](http://rocketmq.incubator.apache.org/) and [Flume-ng](https://github.com/apache/flume).
+2. Ensure that the jar related to [RocketMQ](http://rocketmq.incubator.apache.org/dowloading/releases) exists in local maven repository.
+3. Execute the following command in rocketmq-flume root directory
+
+   `mvn clean install dependency:copy-dependencies`
+
+4. Copy the jar depended by rocketmq-flume to `$FLUME_HOME/lib`(the specific jar will be given later)
+
+
+## RocketMQ-Spark
+
+Apache Spark-Streaming integration with RocketMQ. Both push & pull consumer mode are provided.
+For more details please refer to rocketmq-spark README.md.
+
+## RocketMQ-Docker
+Apache RocketMQ Docker provides Dockerfile and bash scripts for building and running docker image.
+

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/.gitignore
----------------------------------------------------------------------
diff --git a/rocketmq-console/.gitignore b/rocketmq-console/.gitignore
new file mode 100644
index 0000000..6c53948
--- /dev/null
+++ b/rocketmq-console/.gitignore
@@ -0,0 +1,3 @@
+/.idea/
+/target/
+*.iml

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/.travis.yml
----------------------------------------------------------------------
diff --git a/rocketmq-console/.travis.yml b/rocketmq-console/.travis.yml
new file mode 100644
index 0000000..43b1d99
--- /dev/null
+++ b/rocketmq-console/.travis.yml
@@ -0,0 +1,16 @@
+notifications:
+  email:
+    recipients:
+      - styletang.me@gmail.com
+  on_success: change
+  on_failure: always
+
+language: java
+jdk:
+#  - oraclejdk8
+  - oraclejdk7
+script:
+  - travis_retry mvn -B clean
+  - travis_retry mvn -B package findbugs:findbugs jacoco:report coveralls:report
+#after_success:
+#    - mvn sonar:sonar
\ No newline at end of file


[21/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bem.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bem.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bem.js
new file mode 100644
index 0000000..8a8229d
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bem.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "uluchelo",
+      "akasuba"
+    ],
+    "DAY": [
+      "Pa Mulungu",
+      "Palichimo",
+      "Palichibuli",
+      "Palichitatu",
+      "Palichine",
+      "Palichisano",
+      "Pachibelushi"
+    ],
+    "ERANAMES": [
+      "Before Yesu",
+      "After Yesu"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Januari",
+      "Februari",
+      "Machi",
+      "Epreo",
+      "Mei",
+      "Juni",
+      "Julai",
+      "Ogasti",
+      "Septemba",
+      "Oktoba",
+      "Novemba",
+      "Disemba"
+    ],
+    "SHORTDAY": [
+      "Pa Mulungu",
+      "Palichimo",
+      "Palichibuli",
+      "Palichitatu",
+      "Palichine",
+      "Palichisano",
+      "Pachibelushi"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mac",
+      "Epr",
+      "Mei",
+      "Jun",
+      "Jul",
+      "Oga",
+      "Sep",
+      "Okt",
+      "Nov",
+      "Dis"
+    ],
+    "STANDALONEMONTH": [
+      "Januari",
+      "Februari",
+      "Machi",
+      "Epreo",
+      "Mei",
+      "Juni",
+      "Julai",
+      "Ogasti",
+      "Septemba",
+      "Oktoba",
+      "Novemba",
+      "Disemba"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "ZMW",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "bem",
+  "localeID": "bem",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bez-tz.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bez-tz.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bez-tz.js
new file mode 100644
index 0000000..9e5fa35
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bez-tz.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "pamilau",
+      "pamunyi"
+    ],
+    "DAY": [
+      "pa mulungu",
+      "pa shahuviluha",
+      "pa hivili",
+      "pa hidatu",
+      "pa hitayi",
+      "pa hihanu",
+      "pa shahulembela"
+    ],
+    "ERANAMES": [
+      "Kabla ya Mtwaa",
+      "Baada ya Mtwaa"
+    ],
+    "ERAS": [
+      "KM",
+      "BM"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "pa mwedzi gwa hutala",
+      "pa mwedzi gwa wuvili",
+      "pa mwedzi gwa wudatu",
+      "pa mwedzi gwa wutai",
+      "pa mwedzi gwa wuhanu",
+      "pa mwedzi gwa sita",
+      "pa mwedzi gwa saba",
+      "pa mwedzi gwa nane",
+      "pa mwedzi gwa tisa",
+      "pa mwedzi gwa kumi",
+      "pa mwedzi gwa kumi na moja",
+      "pa mwedzi gwa kumi na mbili"
+    ],
+    "SHORTDAY": [
+      "Mul",
+      "Vil",
+      "Hiv",
+      "Hid",
+      "Hit",
+      "Hih",
+      "Lem"
+    ],
+    "SHORTMONTH": [
+      "Hut",
+      "Vil",
+      "Dat",
+      "Tai",
+      "Han",
+      "Sit",
+      "Sab",
+      "Nan",
+      "Tis",
+      "Kum",
+      "Kmj",
+      "Kmb"
+    ],
+    "STANDALONEMONTH": [
+      "pa mwedzi gwa hutala",
+      "pa mwedzi gwa wuvili",
+      "pa mwedzi gwa wudatu",
+      "pa mwedzi gwa wutai",
+      "pa mwedzi gwa wuhanu",
+      "pa mwedzi gwa sita",
+      "pa mwedzi gwa saba",
+      "pa mwedzi gwa nane",
+      "pa mwedzi gwa tisa",
+      "pa mwedzi gwa kumi",
+      "pa mwedzi gwa kumi na moja",
+      "pa mwedzi gwa kumi na mbili"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "TSh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a4"
+      }
+    ]
+  },
+  "id": "bez-tz",
+  "localeID": "bez_TZ",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bez.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bez.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bez.js
new file mode 100644
index 0000000..3788f08
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bez.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "pamilau",
+      "pamunyi"
+    ],
+    "DAY": [
+      "pa mulungu",
+      "pa shahuviluha",
+      "pa hivili",
+      "pa hidatu",
+      "pa hitayi",
+      "pa hihanu",
+      "pa shahulembela"
+    ],
+    "ERANAMES": [
+      "Kabla ya Mtwaa",
+      "Baada ya Mtwaa"
+    ],
+    "ERAS": [
+      "KM",
+      "BM"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "pa mwedzi gwa hutala",
+      "pa mwedzi gwa wuvili",
+      "pa mwedzi gwa wudatu",
+      "pa mwedzi gwa wutai",
+      "pa mwedzi gwa wuhanu",
+      "pa mwedzi gwa sita",
+      "pa mwedzi gwa saba",
+      "pa mwedzi gwa nane",
+      "pa mwedzi gwa tisa",
+      "pa mwedzi gwa kumi",
+      "pa mwedzi gwa kumi na moja",
+      "pa mwedzi gwa kumi na mbili"
+    ],
+    "SHORTDAY": [
+      "Mul",
+      "Vil",
+      "Hiv",
+      "Hid",
+      "Hit",
+      "Hih",
+      "Lem"
+    ],
+    "SHORTMONTH": [
+      "Hut",
+      "Vil",
+      "Dat",
+      "Tai",
+      "Han",
+      "Sit",
+      "Sab",
+      "Nan",
+      "Tis",
+      "Kum",
+      "Kmj",
+      "Kmb"
+    ],
+    "STANDALONEMONTH": [
+      "pa mwedzi gwa hutala",
+      "pa mwedzi gwa wuvili",
+      "pa mwedzi gwa wudatu",
+      "pa mwedzi gwa wutai",
+      "pa mwedzi gwa wuhanu",
+      "pa mwedzi gwa sita",
+      "pa mwedzi gwa saba",
+      "pa mwedzi gwa nane",
+      "pa mwedzi gwa tisa",
+      "pa mwedzi gwa kumi",
+      "pa mwedzi gwa kumi na moja",
+      "pa mwedzi gwa kumi na mbili"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "TSh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a4"
+      }
+    ]
+  },
+  "id": "bez",
+  "localeID": "bez",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bg-bg.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bg-bg.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bg-bg.js
new file mode 100644
index 0000000..cd8d37d
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bg-bg.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u043f\u0440.\u043e\u0431.",
+      "\u0441\u043b.\u043e\u0431."
+    ],
+    "DAY": [
+      "\u043d\u0435\u0434\u0435\u043b\u044f",
+      "\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a",
+      "\u0432\u0442\u043e\u0440\u043d\u0438\u043a",
+      "\u0441\u0440\u044f\u0434\u0430",
+      "\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a",
+      "\u043f\u0435\u0442\u044a\u043a",
+      "\u0441\u044a\u0431\u043e\u0442\u0430"
+    ],
+    "ERANAMES": [
+      "\u043f\u0440\u0435\u0434\u0438 \u0425\u0440\u0438\u0441\u0442\u0430",
+      "\u0441\u043b\u0435\u0434 \u0425\u0440\u0438\u0441\u0442\u0430"
+    ],
+    "ERAS": [
+      "\u043f\u0440.\u0425\u0440.",
+      "\u0441\u043b.\u0425\u0440."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u044f\u043d\u0443\u0430\u0440\u0438",
+      "\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438",
+      "\u043c\u0430\u0440\u0442",
+      "\u0430\u043f\u0440\u0438\u043b",
+      "\u043c\u0430\u0439",
+      "\u044e\u043d\u0438",
+      "\u044e\u043b\u0438",
+      "\u0430\u0432\u0433\u0443\u0441\u0442",
+      "\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438",
+      "\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438",
+      "\u043d\u043e\u0435\u043c\u0432\u0440\u0438",
+      "\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438"
+    ],
+    "SHORTDAY": [
+      "\u043d\u0434",
+      "\u043f\u043d",
+      "\u0432\u0442",
+      "\u0441\u0440",
+      "\u0447\u0442",
+      "\u043f\u0442",
+      "\u0441\u0431"
+    ],
+    "SHORTMONTH": [
+      "\u044f\u043d.",
+      "\u0444\u0435\u0432\u0440.",
+      "\u043c\u0430\u0440\u0442",
+      "\u0430\u043f\u0440.",
+      "\u043c\u0430\u0439",
+      "\u044e\u043d\u0438",
+      "\u044e\u043b\u0438",
+      "\u0430\u0432\u0433.",
+      "\u0441\u0435\u043f\u0442.",
+      "\u043e\u043a\u0442.",
+      "\u043d\u043e\u0435\u043c.",
+      "\u0434\u0435\u043a."
+    ],
+    "STANDALONEMONTH": [
+      "\u044f\u043d\u0443\u0430\u0440\u0438",
+      "\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438",
+      "\u043c\u0430\u0440\u0442",
+      "\u0430\u043f\u0440\u0438\u043b",
+      "\u043c\u0430\u0439",
+      "\u044e\u043d\u0438",
+      "\u044e\u043b\u0438",
+      "\u0430\u0432\u0433\u0443\u0441\u0442",
+      "\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438",
+      "\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438",
+      "\u043d\u043e\u0435\u043c\u0432\u0440\u0438",
+      "\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y '\u0433'.",
+    "longDate": "d MMMM y '\u0433'.",
+    "medium": "d.MM.y '\u0433'. H:mm:ss",
+    "mediumDate": "d.MM.y '\u0433'.",
+    "mediumTime": "H:mm:ss",
+    "short": "d.MM.yy '\u0433'. H:mm",
+    "shortDate": "d.MM.yy '\u0433'.",
+    "shortTime": "H:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "lev",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "bg-bg",
+  "localeID": "bg_BG",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bg.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bg.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bg.js
new file mode 100644
index 0000000..2b62eaf
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bg.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u043f\u0440.\u043e\u0431.",
+      "\u0441\u043b.\u043e\u0431."
+    ],
+    "DAY": [
+      "\u043d\u0435\u0434\u0435\u043b\u044f",
+      "\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a",
+      "\u0432\u0442\u043e\u0440\u043d\u0438\u043a",
+      "\u0441\u0440\u044f\u0434\u0430",
+      "\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a",
+      "\u043f\u0435\u0442\u044a\u043a",
+      "\u0441\u044a\u0431\u043e\u0442\u0430"
+    ],
+    "ERANAMES": [
+      "\u043f\u0440\u0435\u0434\u0438 \u0425\u0440\u0438\u0441\u0442\u0430",
+      "\u0441\u043b\u0435\u0434 \u0425\u0440\u0438\u0441\u0442\u0430"
+    ],
+    "ERAS": [
+      "\u043f\u0440.\u0425\u0440.",
+      "\u0441\u043b.\u0425\u0440."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u044f\u043d\u0443\u0430\u0440\u0438",
+      "\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438",
+      "\u043c\u0430\u0440\u0442",
+      "\u0430\u043f\u0440\u0438\u043b",
+      "\u043c\u0430\u0439",
+      "\u044e\u043d\u0438",
+      "\u044e\u043b\u0438",
+      "\u0430\u0432\u0433\u0443\u0441\u0442",
+      "\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438",
+      "\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438",
+      "\u043d\u043e\u0435\u043c\u0432\u0440\u0438",
+      "\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438"
+    ],
+    "SHORTDAY": [
+      "\u043d\u0434",
+      "\u043f\u043d",
+      "\u0432\u0442",
+      "\u0441\u0440",
+      "\u0447\u0442",
+      "\u043f\u0442",
+      "\u0441\u0431"
+    ],
+    "SHORTMONTH": [
+      "\u044f\u043d.",
+      "\u0444\u0435\u0432\u0440.",
+      "\u043c\u0430\u0440\u0442",
+      "\u0430\u043f\u0440.",
+      "\u043c\u0430\u0439",
+      "\u044e\u043d\u0438",
+      "\u044e\u043b\u0438",
+      "\u0430\u0432\u0433.",
+      "\u0441\u0435\u043f\u0442.",
+      "\u043e\u043a\u0442.",
+      "\u043d\u043e\u0435\u043c.",
+      "\u0434\u0435\u043a."
+    ],
+    "STANDALONEMONTH": [
+      "\u044f\u043d\u0443\u0430\u0440\u0438",
+      "\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438",
+      "\u043c\u0430\u0440\u0442",
+      "\u0430\u043f\u0440\u0438\u043b",
+      "\u043c\u0430\u0439",
+      "\u044e\u043d\u0438",
+      "\u044e\u043b\u0438",
+      "\u0430\u0432\u0433\u0443\u0441\u0442",
+      "\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438",
+      "\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438",
+      "\u043d\u043e\u0435\u043c\u0432\u0440\u0438",
+      "\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y '\u0433'.",
+    "longDate": "d MMMM y '\u0433'.",
+    "medium": "d.MM.y '\u0433'. H:mm:ss",
+    "mediumDate": "d.MM.y '\u0433'.",
+    "mediumTime": "H:mm:ss",
+    "short": "d.MM.yy '\u0433'. H:mm",
+    "shortDate": "d.MM.yy '\u0433'.",
+    "shortTime": "H:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "lev",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "bg",
+  "localeID": "bg",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bm-latn-ml.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bm-latn-ml.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bm-latn-ml.js
new file mode 100644
index 0000000..d5d7258
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bm-latn-ml.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "kari",
+      "nt\u025bn\u025b",
+      "tarata",
+      "araba",
+      "alamisa",
+      "juma",
+      "sibiri"
+    ],
+    "ERANAMES": [
+      "jezu krisiti \u0272\u025b",
+      "jezu krisiti mink\u025b"
+    ],
+    "ERAS": [
+      "J.-C. \u0272\u025b",
+      "ni J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "zanwuye",
+      "feburuye",
+      "marisi",
+      "awirili",
+      "m\u025b",
+      "zuw\u025bn",
+      "zuluye",
+      "uti",
+      "s\u025btanburu",
+      "\u0254kut\u0254buru",
+      "nowanburu",
+      "desanburu"
+    ],
+    "SHORTDAY": [
+      "kar",
+      "nt\u025b",
+      "tar",
+      "ara",
+      "ala",
+      "jum",
+      "sib"
+    ],
+    "SHORTMONTH": [
+      "zan",
+      "feb",
+      "mar",
+      "awi",
+      "m\u025b",
+      "zuw",
+      "zul",
+      "uti",
+      "s\u025bt",
+      "\u0254ku",
+      "now",
+      "des"
+    ],
+    "STANDALONEMONTH": [
+      "zanwuye",
+      "feburuye",
+      "marisi",
+      "awirili",
+      "m\u025b",
+      "zuw\u025bn",
+      "zuluye",
+      "uti",
+      "s\u025btanburu",
+      "\u0254kut\u0254buru",
+      "nowanburu",
+      "desanburu"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "CFA",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "bm-latn-ml",
+  "localeID": "bm_Latn_ML",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bm-latn.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bm-latn.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bm-latn.js
new file mode 100644
index 0000000..1d2721b
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bm-latn.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "kari",
+      "nt\u025bn\u025b",
+      "tarata",
+      "araba",
+      "alamisa",
+      "juma",
+      "sibiri"
+    ],
+    "ERANAMES": [
+      "jezu krisiti \u0272\u025b",
+      "jezu krisiti mink\u025b"
+    ],
+    "ERAS": [
+      "J.-C. \u0272\u025b",
+      "ni J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "zanwuye",
+      "feburuye",
+      "marisi",
+      "awirili",
+      "m\u025b",
+      "zuw\u025bn",
+      "zuluye",
+      "uti",
+      "s\u025btanburu",
+      "\u0254kut\u0254buru",
+      "nowanburu",
+      "desanburu"
+    ],
+    "SHORTDAY": [
+      "kar",
+      "nt\u025b",
+      "tar",
+      "ara",
+      "ala",
+      "jum",
+      "sib"
+    ],
+    "SHORTMONTH": [
+      "zan",
+      "feb",
+      "mar",
+      "awi",
+      "m\u025b",
+      "zuw",
+      "zul",
+      "uti",
+      "s\u025bt",
+      "\u0254ku",
+      "now",
+      "des"
+    ],
+    "STANDALONEMONTH": [
+      "zanwuye",
+      "feburuye",
+      "marisi",
+      "awirili",
+      "m\u025b",
+      "zuw\u025bn",
+      "zuluye",
+      "uti",
+      "s\u025btanburu",
+      "\u0254kut\u0254buru",
+      "nowanburu",
+      "desanburu"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "CFA",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "bm-latn",
+  "localeID": "bm_Latn",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bm-ml.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bm-ml.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bm-ml.js
new file mode 100644
index 0000000..1fd1852
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bm-ml.js
@@ -0,0 +1,115 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "kari",
+      "nt\u025bn\u025b",
+      "tarata",
+      "araba",
+      "alamisa",
+      "juma",
+      "sibiri"
+    ],
+    "MONTH": [
+      "zanwuye",
+      "feburuye",
+      "marisi",
+      "awirili",
+      "m\u025b",
+      "zuw\u025bn",
+      "zuluye",
+      "uti",
+      "s\u025btanburu",
+      "\u0254kut\u0254buru",
+      "nowanburu",
+      "desanburu"
+    ],
+    "SHORTDAY": [
+      "kar",
+      "nt\u025b",
+      "tar",
+      "ara",
+      "ala",
+      "jum",
+      "sib"
+    ],
+    "SHORTMONTH": [
+      "zan",
+      "feb",
+      "mar",
+      "awi",
+      "m\u025b",
+      "zuw",
+      "zul",
+      "uti",
+      "s\u025bt",
+      "\u0254ku",
+      "now",
+      "des"
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "CFA",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4-",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "bm-ml",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bm.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bm.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bm.js
new file mode 100644
index 0000000..af07e44
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bm.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "kari",
+      "nt\u025bn\u025b",
+      "tarata",
+      "araba",
+      "alamisa",
+      "juma",
+      "sibiri"
+    ],
+    "ERANAMES": [
+      "jezu krisiti \u0272\u025b",
+      "jezu krisiti mink\u025b"
+    ],
+    "ERAS": [
+      "J.-C. \u0272\u025b",
+      "ni J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "zanwuye",
+      "feburuye",
+      "marisi",
+      "awirili",
+      "m\u025b",
+      "zuw\u025bn",
+      "zuluye",
+      "uti",
+      "s\u025btanburu",
+      "\u0254kut\u0254buru",
+      "nowanburu",
+      "desanburu"
+    ],
+    "SHORTDAY": [
+      "kar",
+      "nt\u025b",
+      "tar",
+      "ara",
+      "ala",
+      "jum",
+      "sib"
+    ],
+    "SHORTMONTH": [
+      "zan",
+      "feb",
+      "mar",
+      "awi",
+      "m\u025b",
+      "zuw",
+      "zul",
+      "uti",
+      "s\u025bt",
+      "\u0254ku",
+      "now",
+      "des"
+    ],
+    "STANDALONEMONTH": [
+      "zanwuye",
+      "feburuye",
+      "marisi",
+      "awirili",
+      "m\u025b",
+      "zuw\u025bn",
+      "zuluye",
+      "uti",
+      "s\u025btanburu",
+      "\u0254kut\u0254buru",
+      "nowanburu",
+      "desanburu"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "CFA",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "bm",
+  "localeID": "bm",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bn-bd.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bn-bd.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bn-bd.js
new file mode 100644
index 0000000..a6009d7
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bn-bd.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "am",
+      "pm"
+    ],
+    "DAY": [
+      "\u09b0\u09ac\u09bf\u09ac\u09be\u09b0",
+      "\u09b8\u09cb\u09ae\u09ac\u09be\u09b0",
+      "\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0",
+      "\u09ac\u09c1\u09a7\u09ac\u09be\u09b0",
+      "\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0",
+      "\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0",
+      "\u09b6\u09a8\u09bf\u09ac\u09be\u09b0"
+    ],
+    "ERANAMES": [
+      "\u0996\u09cd\u09b0\u09bf\u09b8\u09cd\u099f\u09aa\u09c2\u09b0\u09cd\u09ac",
+      "\u0996\u09c3\u09b7\u09cd\u099f\u09be\u09ac\u09cd\u09a6"
+    ],
+    "ERAS": [
+      "\u0996\u09cd\u09b0\u09bf\u09b8\u09cd\u099f\u09aa\u09c2\u09b0\u09cd\u09ac",
+      "\u0996\u09c3\u09b7\u09cd\u099f\u09be\u09ac\u09cd\u09a6"
+    ],
+    "FIRSTDAYOFWEEK": 4,
+    "MONTH": [
+      "\u099c\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
+      "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
+      "\u09ae\u09be\u09b0\u09cd\u099a",
+      "\u098f\u09aa\u09cd\u09b0\u09bf\u09b2",
+      "\u09ae\u09c7",
+      "\u099c\u09c1\u09a8",
+      "\u099c\u09c1\u09b2\u09be\u0987",
+      "\u0986\u0997\u09b8\u09cd\u099f",
+      "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0",
+      "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0",
+      "\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0",
+      "\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0"
+    ],
+    "SHORTDAY": [
+      "\u09b0\u09ac\u09bf",
+      "\u09b8\u09cb\u09ae",
+      "\u09ae\u0999\u09cd\u0997\u09b2",
+      "\u09ac\u09c1\u09a7",
+      "\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf",
+      "\u09b6\u09c1\u0995\u09cd\u09b0",
+      "\u09b6\u09a8\u09bf"
+    ],
+    "SHORTMONTH": [
+      "\u099c\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
+      "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
+      "\u09ae\u09be\u09b0\u09cd\u099a",
+      "\u098f\u09aa\u09cd\u09b0\u09bf\u09b2",
+      "\u09ae\u09c7",
+      "\u099c\u09c1\u09a8",
+      "\u099c\u09c1\u09b2\u09be\u0987",
+      "\u0986\u0997\u09b8\u09cd\u099f",
+      "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0",
+      "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0",
+      "\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0",
+      "\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0"
+    ],
+    "STANDALONEMONTH": [
+      "\u099c\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
+      "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
+      "\u09ae\u09be\u09b0\u09cd\u099a",
+      "\u098f\u09aa\u09cd\u09b0\u09bf\u09b2",
+      "\u09ae\u09c7",
+      "\u099c\u09c1\u09a8",
+      "\u099c\u09c1\u09b2\u09be\u0987",
+      "\u0986\u0997\u09b8\u09cd\u099f",
+      "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0",
+      "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0",
+      "\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0",
+      "\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM, y",
+    "longDate": "d MMMM, y",
+    "medium": "d MMM, y h:mm:ss a",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/M/yy h:mm a",
+    "shortDate": "d/M/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u09f3",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a4"
+      }
+    ]
+  },
+  "id": "bn-bd",
+  "localeID": "bn_BD",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bn-in.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bn-in.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bn-in.js
new file mode 100644
index 0000000..021644d
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bn-in.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "am",
+      "pm"
+    ],
+    "DAY": [
+      "\u09b0\u09ac\u09bf\u09ac\u09be\u09b0",
+      "\u09b8\u09cb\u09ae\u09ac\u09be\u09b0",
+      "\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0",
+      "\u09ac\u09c1\u09a7\u09ac\u09be\u09b0",
+      "\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0",
+      "\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0",
+      "\u09b6\u09a8\u09bf\u09ac\u09be\u09b0"
+    ],
+    "ERANAMES": [
+      "\u0996\u09cd\u09b0\u09bf\u09b8\u09cd\u099f\u09aa\u09c2\u09b0\u09cd\u09ac",
+      "\u0996\u09c3\u09b7\u09cd\u099f\u09be\u09ac\u09cd\u09a6"
+    ],
+    "ERAS": [
+      "\u0996\u09cd\u09b0\u09bf\u09b8\u09cd\u099f\u09aa\u09c2\u09b0\u09cd\u09ac",
+      "\u0996\u09c3\u09b7\u09cd\u099f\u09be\u09ac\u09cd\u09a6"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u099c\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
+      "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
+      "\u09ae\u09be\u09b0\u09cd\u099a",
+      "\u098f\u09aa\u09cd\u09b0\u09bf\u09b2",
+      "\u09ae\u09c7",
+      "\u099c\u09c1\u09a8",
+      "\u099c\u09c1\u09b2\u09be\u0987",
+      "\u0986\u0997\u09b8\u09cd\u099f",
+      "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0",
+      "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0",
+      "\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0",
+      "\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0"
+    ],
+    "SHORTDAY": [
+      "\u09b0\u09ac\u09bf",
+      "\u09b8\u09cb\u09ae",
+      "\u09ae\u0999\u09cd\u0997\u09b2",
+      "\u09ac\u09c1\u09a7",
+      "\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf",
+      "\u09b6\u09c1\u0995\u09cd\u09b0",
+      "\u09b6\u09a8\u09bf"
+    ],
+    "SHORTMONTH": [
+      "\u099c\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
+      "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
+      "\u09ae\u09be\u09b0\u09cd\u099a",
+      "\u098f\u09aa\u09cd\u09b0\u09bf\u09b2",
+      "\u09ae\u09c7",
+      "\u099c\u09c1\u09a8",
+      "\u099c\u09c1\u09b2\u09be\u0987",
+      "\u0986\u0997\u09b8\u09cd\u099f",
+      "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0",
+      "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0",
+      "\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0",
+      "\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0"
+    ],
+    "STANDALONEMONTH": [
+      "\u099c\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
+      "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
+      "\u09ae\u09be\u09b0\u09cd\u099a",
+      "\u098f\u09aa\u09cd\u09b0\u09bf\u09b2",
+      "\u09ae\u09c7",
+      "\u099c\u09c1\u09a8",
+      "\u099c\u09c1\u09b2\u09be\u0987",
+      "\u0986\u0997\u09b8\u09cd\u099f",
+      "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0",
+      "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0",
+      "\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0",
+      "\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0"
+    ],
+    "WEEKENDRANGE": [
+      6,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM, y",
+    "longDate": "d MMMM, y",
+    "medium": "d MMM, y h:mm:ss a",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/M/yy h:mm a",
+    "shortDate": "d/M/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20b9",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a4"
+      }
+    ]
+  },
+  "id": "bn-in",
+  "localeID": "bn_IN",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bn.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bn.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bn.js
new file mode 100644
index 0000000..866471e
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bn.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "am",
+      "pm"
+    ],
+    "DAY": [
+      "\u09b0\u09ac\u09bf\u09ac\u09be\u09b0",
+      "\u09b8\u09cb\u09ae\u09ac\u09be\u09b0",
+      "\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0",
+      "\u09ac\u09c1\u09a7\u09ac\u09be\u09b0",
+      "\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0",
+      "\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0",
+      "\u09b6\u09a8\u09bf\u09ac\u09be\u09b0"
+    ],
+    "ERANAMES": [
+      "\u0996\u09cd\u09b0\u09bf\u09b8\u09cd\u099f\u09aa\u09c2\u09b0\u09cd\u09ac",
+      "\u0996\u09c3\u09b7\u09cd\u099f\u09be\u09ac\u09cd\u09a6"
+    ],
+    "ERAS": [
+      "\u0996\u09cd\u09b0\u09bf\u09b8\u09cd\u099f\u09aa\u09c2\u09b0\u09cd\u09ac",
+      "\u0996\u09c3\u09b7\u09cd\u099f\u09be\u09ac\u09cd\u09a6"
+    ],
+    "FIRSTDAYOFWEEK": 4,
+    "MONTH": [
+      "\u099c\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
+      "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
+      "\u09ae\u09be\u09b0\u09cd\u099a",
+      "\u098f\u09aa\u09cd\u09b0\u09bf\u09b2",
+      "\u09ae\u09c7",
+      "\u099c\u09c1\u09a8",
+      "\u099c\u09c1\u09b2\u09be\u0987",
+      "\u0986\u0997\u09b8\u09cd\u099f",
+      "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0",
+      "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0",
+      "\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0",
+      "\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0"
+    ],
+    "SHORTDAY": [
+      "\u09b0\u09ac\u09bf",
+      "\u09b8\u09cb\u09ae",
+      "\u09ae\u0999\u09cd\u0997\u09b2",
+      "\u09ac\u09c1\u09a7",
+      "\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf",
+      "\u09b6\u09c1\u0995\u09cd\u09b0",
+      "\u09b6\u09a8\u09bf"
+    ],
+    "SHORTMONTH": [
+      "\u099c\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
+      "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
+      "\u09ae\u09be\u09b0\u09cd\u099a",
+      "\u098f\u09aa\u09cd\u09b0\u09bf\u09b2",
+      "\u09ae\u09c7",
+      "\u099c\u09c1\u09a8",
+      "\u099c\u09c1\u09b2\u09be\u0987",
+      "\u0986\u0997\u09b8\u09cd\u099f",
+      "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0",
+      "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0",
+      "\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0",
+      "\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0"
+    ],
+    "STANDALONEMONTH": [
+      "\u099c\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
+      "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
+      "\u09ae\u09be\u09b0\u09cd\u099a",
+      "\u098f\u09aa\u09cd\u09b0\u09bf\u09b2",
+      "\u09ae\u09c7",
+      "\u099c\u09c1\u09a8",
+      "\u099c\u09c1\u09b2\u09be\u0987",
+      "\u0986\u0997\u09b8\u09cd\u099f",
+      "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0",
+      "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0",
+      "\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0",
+      "\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM, y",
+    "longDate": "d MMMM, y",
+    "medium": "d MMM, y h:mm:ss a",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/M/yy h:mm a",
+    "shortDate": "d/M/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u09f3",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a4"
+      }
+    ]
+  },
+  "id": "bn",
+  "localeID": "bn",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bo-cn.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bo-cn.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bo-cn.js
new file mode 100644
index 0000000..643db4d
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bo-cn.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0f66\u0f94\u0f0b\u0f51\u0fb2\u0f7c\u0f0b",
+      "\u0f55\u0fb1\u0f72\u0f0b\u0f51\u0fb2\u0f7c\u0f0b"
+    ],
+    "DAY": [
+      "\u0f42\u0f5f\u0f60\u0f0b\u0f49\u0f72\u0f0b\u0f58\u0f0b",
+      "\u0f42\u0f5f\u0f60\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f0b",
+      "\u0f42\u0f5f\u0f60\u0f0b\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b",
+      "\u0f42\u0f5f\u0f60\u0f0b\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b",
+      "\u0f42\u0f5f\u0f60\u0f0b\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74\u0f0b",
+      "\u0f42\u0f5f\u0f60\u0f0b\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b",
+      "\u0f42\u0f5f\u0f60\u0f0b\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b"
+    ],
+    "ERANAMES": [
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0b\u0f66\u0f94\u0f7c\u0f53\u0f0d",
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0d"
+    ],
+    "ERAS": [
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0b\u0f66\u0f94\u0f7c\u0f53\u0f0d",
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0d"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f66\u0f74\u0f58\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f63\u0f94\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54\u0f0b"
+    ],
+    "SHORTDAY": [
+      "\u0f49\u0f72\u0f0b\u0f58\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b",
+      "\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b",
+      "\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b",
+      "\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74\u0f0b",
+      "\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b",
+      "\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b"
+    ],
+    "SHORTMONTH": [
+      "\u0f5f\u0fb3\u0f0b\u0f21",
+      "\u0f5f\u0fb3\u0f0b\u0f22",
+      "\u0f5f\u0fb3\u0f0b\u0f23",
+      "\u0f5f\u0fb3\u0f0b\u0f24",
+      "\u0f5f\u0fb3\u0f0b\u0f25",
+      "\u0f5f\u0fb3\u0f0b\u0f26",
+      "\u0f5f\u0fb3\u0f0b\u0f27",
+      "\u0f5f\u0fb3\u0f0b\u0f28",
+      "\u0f5f\u0fb3\u0f0b\u0f29",
+      "\u0f5f\u0fb3\u0f0b\u0f21\u0f20",
+      "\u0f5f\u0fb3\u0f0b\u0f21\u0f21",
+      "\u0f5f\u0fb3\u0f0b\u0f21\u0f22"
+    ],
+    "STANDALONEMONTH": [
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f66\u0f74\u0f58\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f63\u0f94\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54\u0f0b"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "y MMMM d, EEEE",
+    "longDate": "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0by MMMM\u0f60\u0f72\u0f0b\u0f59\u0f7a\u0f66\u0f0bd\u0f51",
+    "medium": "y \u0f63\u0f7c\u0f0b\u0f60\u0f72\u0f0bMMM\u0f59\u0f7a\u0f66\u0f0bd HH:mm:ss",
+    "mediumDate": "y \u0f63\u0f7c\u0f0b\u0f60\u0f72\u0f0bMMM\u0f59\u0f7a\u0f66\u0f0bd",
+    "mediumTime": "HH:mm:ss",
+    "short": "y-MM-dd HH:mm",
+    "shortDate": "y-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u00a5",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "bo-cn",
+  "localeID": "bo_CN",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bo-in.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bo-in.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bo-in.js
new file mode 100644
index 0000000..4f15303
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bo-in.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0f66\u0f94\u0f0b\u0f51\u0fb2\u0f7c\u0f0b",
+      "\u0f55\u0fb1\u0f72\u0f0b\u0f51\u0fb2\u0f7c\u0f0b"
+    ],
+    "DAY": [
+      "\u0f42\u0f5f\u0f60\u0f0b\u0f49\u0f72\u0f0b\u0f58\u0f0b",
+      "\u0f42\u0f5f\u0f60\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f0b",
+      "\u0f42\u0f5f\u0f60\u0f0b\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b",
+      "\u0f42\u0f5f\u0f60\u0f0b\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b",
+      "\u0f42\u0f5f\u0f60\u0f0b\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74\u0f0b",
+      "\u0f42\u0f5f\u0f60\u0f0b\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b",
+      "\u0f42\u0f5f\u0f60\u0f0b\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b"
+    ],
+    "ERANAMES": [
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0b\u0f66\u0f94\u0f7c\u0f53\u0f0d",
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0d"
+    ],
+    "ERAS": [
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0b\u0f66\u0f94\u0f7c\u0f53\u0f0d",
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0d"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f66\u0f74\u0f58\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f63\u0f94\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54\u0f0b"
+    ],
+    "SHORTDAY": [
+      "\u0f49\u0f72\u0f0b\u0f58\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b",
+      "\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b",
+      "\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b",
+      "\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74\u0f0b",
+      "\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b",
+      "\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b"
+    ],
+    "SHORTMONTH": [
+      "\u0f5f\u0fb3\u0f0b\u0f21",
+      "\u0f5f\u0fb3\u0f0b\u0f22",
+      "\u0f5f\u0fb3\u0f0b\u0f23",
+      "\u0f5f\u0fb3\u0f0b\u0f24",
+      "\u0f5f\u0fb3\u0f0b\u0f25",
+      "\u0f5f\u0fb3\u0f0b\u0f26",
+      "\u0f5f\u0fb3\u0f0b\u0f27",
+      "\u0f5f\u0fb3\u0f0b\u0f28",
+      "\u0f5f\u0fb3\u0f0b\u0f29",
+      "\u0f5f\u0fb3\u0f0b\u0f21\u0f20",
+      "\u0f5f\u0fb3\u0f0b\u0f21\u0f21",
+      "\u0f5f\u0fb3\u0f0b\u0f21\u0f22"
+    ],
+    "STANDALONEMONTH": [
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f66\u0f74\u0f58\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f63\u0f94\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54\u0f0b"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "y MMMM d, EEEE",
+    "longDate": "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0by MMMM\u0f60\u0f72\u0f0b\u0f59\u0f7a\u0f66\u0f0bd\u0f51",
+    "medium": "y \u0f63\u0f7c\u0f0b\u0f60\u0f72\u0f0bMMM\u0f59\u0f7a\u0f66\u0f0bd HH:mm:ss",
+    "mediumDate": "y \u0f63\u0f7c\u0f0b\u0f60\u0f72\u0f0bMMM\u0f59\u0f7a\u0f66\u0f0bd",
+    "mediumTime": "HH:mm:ss",
+    "short": "y-MM-dd HH:mm",
+    "shortDate": "y-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20b9",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "bo-in",
+  "localeID": "bo_IN",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bo.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bo.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bo.js
new file mode 100644
index 0000000..75c2a86
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bo.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0f66\u0f94\u0f0b\u0f51\u0fb2\u0f7c\u0f0b",
+      "\u0f55\u0fb1\u0f72\u0f0b\u0f51\u0fb2\u0f7c\u0f0b"
+    ],
+    "DAY": [
+      "\u0f42\u0f5f\u0f60\u0f0b\u0f49\u0f72\u0f0b\u0f58\u0f0b",
+      "\u0f42\u0f5f\u0f60\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f0b",
+      "\u0f42\u0f5f\u0f60\u0f0b\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b",
+      "\u0f42\u0f5f\u0f60\u0f0b\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b",
+      "\u0f42\u0f5f\u0f60\u0f0b\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74\u0f0b",
+      "\u0f42\u0f5f\u0f60\u0f0b\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b",
+      "\u0f42\u0f5f\u0f60\u0f0b\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b"
+    ],
+    "ERANAMES": [
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0b\u0f66\u0f94\u0f7c\u0f53\u0f0d",
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0d"
+    ],
+    "ERAS": [
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0b\u0f66\u0f94\u0f7c\u0f53\u0f0d",
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0d"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f66\u0f74\u0f58\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f63\u0f94\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54\u0f0b"
+    ],
+    "SHORTDAY": [
+      "\u0f49\u0f72\u0f0b\u0f58\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b",
+      "\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b",
+      "\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b",
+      "\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74\u0f0b",
+      "\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b",
+      "\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b"
+    ],
+    "SHORTMONTH": [
+      "\u0f5f\u0fb3\u0f0b\u0f21",
+      "\u0f5f\u0fb3\u0f0b\u0f22",
+      "\u0f5f\u0fb3\u0f0b\u0f23",
+      "\u0f5f\u0fb3\u0f0b\u0f24",
+      "\u0f5f\u0fb3\u0f0b\u0f25",
+      "\u0f5f\u0fb3\u0f0b\u0f26",
+      "\u0f5f\u0fb3\u0f0b\u0f27",
+      "\u0f5f\u0fb3\u0f0b\u0f28",
+      "\u0f5f\u0fb3\u0f0b\u0f29",
+      "\u0f5f\u0fb3\u0f0b\u0f21\u0f20",
+      "\u0f5f\u0fb3\u0f0b\u0f21\u0f21",
+      "\u0f5f\u0fb3\u0f0b\u0f21\u0f22"
+    ],
+    "STANDALONEMONTH": [
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f66\u0f74\u0f58\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f63\u0f94\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54\u0f0b"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "y MMMM d, EEEE",
+    "longDate": "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0by MMMM\u0f60\u0f72\u0f0b\u0f59\u0f7a\u0f66\u0f0bd\u0f51",
+    "medium": "y \u0f63\u0f7c\u0f0b\u0f60\u0f72\u0f0bMMM\u0f59\u0f7a\u0f66\u0f0bd HH:mm:ss",
+    "mediumDate": "y \u0f63\u0f7c\u0f0b\u0f60\u0f72\u0f0bMMM\u0f59\u0f7a\u0f66\u0f0bd",
+    "mediumTime": "HH:mm:ss",
+    "short": "y-MM-dd HH:mm",
+    "shortDate": "y-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u00a5",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "bo",
+  "localeID": "bo",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_br-fr.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_br-fr.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_br-fr.js
new file mode 100644
index 0000000..2e1b346
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_br-fr.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "A.M.",
+      "G.M."
+    ],
+    "DAY": [
+      "Sul",
+      "Lun",
+      "Meurzh",
+      "Merc\u02bcher",
+      "Yaou",
+      "Gwener",
+      "Sadorn"
+    ],
+    "ERANAMES": [
+      "BCE",
+      "CE"
+    ],
+    "ERAS": [
+      "BCE",
+      "CE"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Genver",
+      "C\u02bchwevrer",
+      "Meurzh",
+      "Ebrel",
+      "Mae",
+      "Mezheven",
+      "Gouere",
+      "Eost",
+      "Gwengolo",
+      "Here",
+      "Du",
+      "Kerzu"
+    ],
+    "SHORTDAY": [
+      "Sul",
+      "Lun",
+      "Meu.",
+      "Mer.",
+      "Yaou",
+      "Gwe.",
+      "Sad."
+    ],
+    "SHORTMONTH": [
+      "Gen",
+      "C\u02bchwe",
+      "Meur",
+      "Ebr",
+      "Mae",
+      "Mezh",
+      "Goue",
+      "Eost",
+      "Gwen",
+      "Here",
+      "Du",
+      "Ker"
+    ],
+    "STANDALONEMONTH": [
+      "Genver",
+      "C\u02bchwevrer",
+      "Meurzh",
+      "Ebrel",
+      "Mae",
+      "Mezheven",
+      "Gouere",
+      "Eost",
+      "Gwengolo",
+      "Here",
+      "Du",
+      "Kerzu"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "y MMMM d, EEEE",
+    "longDate": "y MMMM d",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "y-MM-dd HH:mm",
+    "shortDate": "y-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "br-fr",
+  "localeID": "br_FR",
+  "pluralCat": function(n, opt_precision) {  if (n % 10 == 1 && n % 100 != 11 && n % 100 != 71 && n % 100 != 91) {    return PLURAL_CATEGORY.ONE;  }  if (n % 10 == 2 && n % 100 != 12 && n % 100 != 72 && n % 100 != 92) {    return PLURAL_CATEGORY.TWO;  }  if ((n % 10 >= 3 && n % 10 <= 4 || n % 10 == 9) && (n % 100 < 10 || n % 100 > 19) && (n % 100 < 70 || n % 100 > 79) && (n % 100 < 90 || n % 100 > 99)) {    return PLURAL_CATEGORY.FEW;  }  if (n != 0 && n % 1000000 == 0) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_br.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_br.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_br.js
new file mode 100644
index 0000000..9434aaf
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_br.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "A.M.",
+      "G.M."
+    ],
+    "DAY": [
+      "Sul",
+      "Lun",
+      "Meurzh",
+      "Merc\u02bcher",
+      "Yaou",
+      "Gwener",
+      "Sadorn"
+    ],
+    "ERANAMES": [
+      "BCE",
+      "CE"
+    ],
+    "ERAS": [
+      "BCE",
+      "CE"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Genver",
+      "C\u02bchwevrer",
+      "Meurzh",
+      "Ebrel",
+      "Mae",
+      "Mezheven",
+      "Gouere",
+      "Eost",
+      "Gwengolo",
+      "Here",
+      "Du",
+      "Kerzu"
+    ],
+    "SHORTDAY": [
+      "Sul",
+      "Lun",
+      "Meu.",
+      "Mer.",
+      "Yaou",
+      "Gwe.",
+      "Sad."
+    ],
+    "SHORTMONTH": [
+      "Gen",
+      "C\u02bchwe",
+      "Meur",
+      "Ebr",
+      "Mae",
+      "Mezh",
+      "Goue",
+      "Eost",
+      "Gwen",
+      "Here",
+      "Du",
+      "Ker"
+    ],
+    "STANDALONEMONTH": [
+      "Genver",
+      "C\u02bchwevrer",
+      "Meurzh",
+      "Ebrel",
+      "Mae",
+      "Mezheven",
+      "Gouere",
+      "Eost",
+      "Gwengolo",
+      "Here",
+      "Du",
+      "Kerzu"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "y MMMM d, EEEE",
+    "longDate": "y MMMM d",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "y-MM-dd HH:mm",
+    "shortDate": "y-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "br",
+  "localeID": "br",
+  "pluralCat": function(n, opt_precision) {  if (n % 10 == 1 && n % 100 != 11 && n % 100 != 71 && n % 100 != 91) {    return PLURAL_CATEGORY.ONE;  }  if (n % 10 == 2 && n % 100 != 12 && n % 100 != 72 && n % 100 != 92) {    return PLURAL_CATEGORY.TWO;  }  if ((n % 10 >= 3 && n % 10 <= 4 || n % 10 == 9) && (n % 100 < 10 || n % 100 > 19) && (n % 100 < 70 || n % 100 > 79) && (n % 100 < 90 || n % 100 > 99)) {    return PLURAL_CATEGORY.FEW;  }  if (n != 0 && n % 1000000 == 0) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_brx-in.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_brx-in.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_brx-in.js
new file mode 100644
index 0000000..a0417d1
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_brx-in.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u092b\u0941\u0902",
+      "\u092c\u0947\u0932\u093e\u0938\u0947"
+    ],
+    "DAY": [
+      "\u0930\u092c\u093f\u092c\u093e\u0930",
+      "\u0938\u092e\u092c\u093e\u0930",
+      "\u092e\u0902\u0917\u0932\u092c\u093e\u0930",
+      "\u092c\u0941\u0926\u092c\u093e\u0930",
+      "\u092c\u093f\u0938\u0925\u093f\u092c\u093e\u0930",
+      "\u0938\u0941\u0916\u0941\u0930\u092c\u093e\u0930",
+      "\u0938\u0941\u0928\u093f\u092c\u093e\u0930"
+    ],
+    "ERANAMES": [
+      "\u0908\u0938\u093e.\u092a\u0942\u0930\u094d\u0935",
+      "\u0938\u0928"
+    ],
+    "ERAS": [
+      "\u0908\u0938\u093e.\u092a\u0942\u0930\u094d\u0935",
+      "\u0938\u0928"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u091c\u093e\u0928\u0941\u0935\u093e\u0930\u0940",
+      "\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940",
+      "\u092e\u093e\u0930\u094d\u0938",
+      "\u090f\u092b\u094d\u0930\u093f\u0932",
+      "\u092e\u0947",
+      "\u091c\u0941\u0928",
+      "\u091c\u0941\u0932\u093e\u0907",
+      "\u0906\u0917\u0938\u094d\u0925",
+      "\u0938\u0947\u092c\u0925\u0947\u091c\u094d\u092c\u093c\u0930",
+      "\u0905\u0916\u0925\u092c\u0930",
+      "\u0928\u092c\u0947\u091c\u094d\u092c\u093c\u0930",
+      "\u0926\u093f\u0938\u0947\u091c\u094d\u092c\u093c\u0930"
+    ],
+    "SHORTDAY": [
+      "\u0930\u092c\u093f",
+      "\u0938\u092e",
+      "\u092e\u0902\u0917\u0932",
+      "\u092c\u0941\u0926",
+      "\u092c\u093f\u0938\u0925\u093f",
+      "\u0938\u0941\u0916\u0941\u0930",
+      "\u0938\u0941\u0928\u093f"
+    ],
+    "SHORTMONTH": [
+      "\u091c\u093e\u0928\u0941\u0935\u093e\u0930\u0940",
+      "\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940",
+      "\u092e\u093e\u0930\u094d\u0938",
+      "\u090f\u092b\u094d\u0930\u093f\u0932",
+      "\u092e\u0947",
+      "\u091c\u0941\u0928",
+      "\u091c\u0941\u0932\u093e\u0907",
+      "\u0906\u0917\u0938\u094d\u0925",
+      "\u0938\u0947\u092c\u0925\u0947\u091c\u094d\u092c\u093c\u0930",
+      "\u0905\u0916\u0925\u092c\u0930",
+      "\u0928\u092c\u0947\u091c\u094d\u092c\u093c\u0930",
+      "\u0926\u093f\u0938\u0947\u091c\u094d\u092c\u093c\u0930"
+    ],
+    "STANDALONEMONTH": [
+      "\u091c\u093e\u0928\u0941\u0935\u093e\u0930\u0940",
+      "\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940",
+      "\u092e\u093e\u0930\u094d\u0938",
+      "\u090f\u092b\u094d\u0930\u093f\u0932",
+      "\u092e\u0947",
+      "\u091c\u0941\u0928",
+      "\u091c\u0941\u0932\u093e\u0907",
+      "\u0906\u0917\u0938\u094d\u0925",
+      "\u0938\u0947\u092c\u0925\u0947\u091c\u094d\u092c\u093c\u0930",
+      "\u0905\u0916\u0925\u092c\u0930",
+      "\u0928\u092c\u0947\u091c\u094d\u092c\u093c\u0930",
+      "\u0926\u093f\u0938\u0947\u091c\u094d\u092c\u093c\u0930"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, MMMM d, y",
+    "longDate": "MMMM d, y",
+    "medium": "MMM d, y h:mm:ss a",
+    "mediumDate": "MMM d, y",
+    "mediumTime": "h:mm:ss a",
+    "short": "M/d/yy h:mm a",
+    "shortDate": "M/d/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20b9",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "brx-in",
+  "localeID": "brx_IN",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_brx.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_brx.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_brx.js
new file mode 100644
index 0000000..b909ab2
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_brx.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u092b\u0941\u0902",
+      "\u092c\u0947\u0932\u093e\u0938\u0947"
+    ],
+    "DAY": [
+      "\u0930\u092c\u093f\u092c\u093e\u0930",
+      "\u0938\u092e\u092c\u093e\u0930",
+      "\u092e\u0902\u0917\u0932\u092c\u093e\u0930",
+      "\u092c\u0941\u0926\u092c\u093e\u0930",
+      "\u092c\u093f\u0938\u0925\u093f\u092c\u093e\u0930",
+      "\u0938\u0941\u0916\u0941\u0930\u092c\u093e\u0930",
+      "\u0938\u0941\u0928\u093f\u092c\u093e\u0930"
+    ],
+    "ERANAMES": [
+      "\u0908\u0938\u093e.\u092a\u0942\u0930\u094d\u0935",
+      "\u0938\u0928"
+    ],
+    "ERAS": [
+      "\u0908\u0938\u093e.\u092a\u0942\u0930\u094d\u0935",
+      "\u0938\u0928"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u091c\u093e\u0928\u0941\u0935\u093e\u0930\u0940",
+      "\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940",
+      "\u092e\u093e\u0930\u094d\u0938",
+      "\u090f\u092b\u094d\u0930\u093f\u0932",
+      "\u092e\u0947",
+      "\u091c\u0941\u0928",
+      "\u091c\u0941\u0932\u093e\u0907",
+      "\u0906\u0917\u0938\u094d\u0925",
+      "\u0938\u0947\u092c\u0925\u0947\u091c\u094d\u092c\u093c\u0930",
+      "\u0905\u0916\u0925\u092c\u0930",
+      "\u0928\u092c\u0947\u091c\u094d\u092c\u093c\u0930",
+      "\u0926\u093f\u0938\u0947\u091c\u094d\u092c\u093c\u0930"
+    ],
+    "SHORTDAY": [
+      "\u0930\u092c\u093f",
+      "\u0938\u092e",
+      "\u092e\u0902\u0917\u0932",
+      "\u092c\u0941\u0926",
+      "\u092c\u093f\u0938\u0925\u093f",
+      "\u0938\u0941\u0916\u0941\u0930",
+      "\u0938\u0941\u0928\u093f"
+    ],
+    "SHORTMONTH": [
+      "\u091c\u093e\u0928\u0941\u0935\u093e\u0930\u0940",
+      "\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940",
+      "\u092e\u093e\u0930\u094d\u0938",
+      "\u090f\u092b\u094d\u0930\u093f\u0932",
+      "\u092e\u0947",
+      "\u091c\u0941\u0928",
+      "\u091c\u0941\u0932\u093e\u0907",
+      "\u0906\u0917\u0938\u094d\u0925",
+      "\u0938\u0947\u092c\u0925\u0947\u091c\u094d\u092c\u093c\u0930",
+      "\u0905\u0916\u0925\u092c\u0930",
+      "\u0928\u092c\u0947\u091c\u094d\u092c\u093c\u0930",
+      "\u0926\u093f\u0938\u0947\u091c\u094d\u092c\u093c\u0930"
+    ],
+    "STANDALONEMONTH": [
+      "\u091c\u093e\u0928\u0941\u0935\u093e\u0930\u0940",
+      "\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940",
+      "\u092e\u093e\u0930\u094d\u0938",
+      "\u090f\u092b\u094d\u0930\u093f\u0932",
+      "\u092e\u0947",
+      "\u091c\u0941\u0928",
+      "\u091c\u0941\u0932\u093e\u0907",
+      "\u0906\u0917\u0938\u094d\u0925",
+      "\u0938\u0947\u092c\u0925\u0947\u091c\u094d\u092c\u093c\u0930",
+      "\u0905\u0916\u0925\u092c\u0930",
+      "\u0928\u092c\u0947\u091c\u094d\u092c\u093c\u0930",
+      "\u0926\u093f\u0938\u0947\u091c\u094d\u092c\u093c\u0930"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, MMMM d, y",
+    "longDate": "MMMM d, y",
+    "medium": "MMM d, y h:mm:ss a",
+    "mediumDate": "MMM d, y",
+    "mediumTime": "h:mm:ss a",
+    "short": "M/d/yy h:mm a",
+    "shortDate": "M/d/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20b9",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "brx",
+  "localeID": "brx",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);


[28/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-translate.min.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-translate.min.js b/rocketmq-console/src/main/resources/static/vendor/angular/angular-translate.min.js
new file mode 100644
index 0000000..01202f2
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-translate.min.js
@@ -0,0 +1,6 @@
+/*!
+ * angular-translate - v2.13.1 - 2016-12-06
+ * 
+ * Copyright (c) 2016 The angular-translate team, Pascal Precht; Licensed MIT
+ */
+!function(a,b){"function"==typeof define&&define.amd?define([],function(){return b()}):"object"==typeof exports?module.exports=b():b()}(this,function(){function a(a){"use strict";var b=a.storageKey(),c=a.storage(),d=function(){var d=a.preferredLanguage();angular.isString(d)?a.use(d):c.put(b,a.use())};d.displayName="fallbackFromIncorrectStorageValue",c?c.get(b)?a.use(c.get(b)).catch(d):d():angular.isString(a.preferredLanguage())&&a.use(a.preferredLanguage())}function b(){"use strict";var a,b,c,d=null,e=!1,f=!1;c={sanitize:function(a,b){return"text"===b&&(a=h(a)),a},escape:function(a,b){return"text"===b&&(a=g(a)),a},sanitizeParameters:function(a,b){return"params"===b&&(a=j(a,h)),a},escapeParameters:function(a,b){return"params"===b&&(a=j(a,g)),a},sce:function(a,b,c){return"text"===b?a=i(a):"params"===b&&"filter"!==c&&(a=j(a,g)),a},sceParameters:function(a,b){return"params"===b&&(a=j(a,i)),a}},c.escaped=c.escapeParameters,this.addStrategy=function(a,b){return c[a]=b,this},this.removeStr
 ategy=function(a){return delete c[a],this},this.useStrategy=function(a){return e=!0,d=a,this},this.$get=["$injector","$log",function(g,h){var i={},j=function(a,b,d,e){return angular.forEach(e,function(e){if(angular.isFunction(e))a=e(a,b,d);else if(angular.isFunction(c[e]))a=c[e](a,b,d);else{if(!angular.isString(c[e]))throw new Error("pascalprecht.translate.$translateSanitization: Unknown sanitization strategy: '"+e+"'");if(!i[c[e]])try{i[c[e]]=g.get(c[e])}catch(a){throw i[c[e]]=function(){},new Error("pascalprecht.translate.$translateSanitization: Unknown sanitization strategy: '"+e+"'")}a=i[c[e]](a,b,d)}}),a},k=function(){e||f||(h.warn("pascalprecht.translate.$translateSanitization: No sanitization strategy has been configured. This can have serious security implications. See http://angular-translate.github.io/docs/#/guide/19_security for details."),f=!0)};return g.has("$sanitize")&&(a=g.get("$sanitize")),g.has("$sce")&&(b=g.get("$sce")),{useStrategy:function(a){return function(b){
 a.useStrategy(b)}}(this),sanitize:function(a,b,c,e){if(d||k(),c||null===c||(c=d),!c)return a;e||(e="service");var f=angular.isArray(c)?c:[c];return j(a,b,e,f)}}}];var g=function(a){var b=angular.element("<div></div>");return b.text(a),b.html()},h=function(b){if(!a)throw new Error("pascalprecht.translate.$translateSanitization: Error cannot find $sanitize service. Either include the ngSanitize module (https://docs.angularjs.org/api/ngSanitize) or use a sanitization strategy which does not depend on $sanitize, such as 'escape'.");return a(b)},i=function(a){if(!b)throw new Error("pascalprecht.translate.$translateSanitization: Error cannot find $sce service.");return b.trustAsHtml(a)},j=function(a,b,c){if(angular.isDate(a))return a;if(angular.isObject(a)){var d=angular.isArray(a)?[]:{};if(c){if(c.indexOf(a)>-1)throw new Error("pascalprecht.translate.$translateSanitization: Error cannot interpolate parameter due recursive object")}else c=[];return c.push(a),angular.forEach(a,function(a,e
 ){angular.isFunction(a)||(d[e]=j(a,b,c))}),c.splice(-1,1),d}return angular.isNumber(a)?a:b(a)}}function c(a,b,c,d){"use strict";var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u={},v=[],w=a,x=[],y="translate-cloak",z=!1,A=!1,B=".",C=!1,D=!1,E=0,F=!0,G="default",H={default:function(a){return(a||"").split("-").join("_")},java:function(a){var b=(a||"").split("-").join("_"),c=b.split("_");return c.length>1?c[0].toLowerCase()+"_"+c[1].toUpperCase():b},bcp47:function(a){var b=(a||"").split("_").join("-"),c=b.split("-");return c.length>1?c[0].toLowerCase()+"-"+c[1].toUpperCase():b},"iso639-1":function(a){var b=(a||"").split("_").join("-"),c=b.split("-");return c[0].toLowerCase()}},I="2.13.1",J=function(){if(angular.isFunction(d.getLocale))return d.getLocale();var a,c,e=b.$get().navigator,f=["language","browserLanguage","systemLanguage","userLanguage"];if(angular.isArray(e.languages))for(a=0;a<e.languages.length;a++)if(c=e.languages[a],c&&c.length)return c;for(a=0;a<f.length;a++)if(c=e[f[a]],c&&c.lengt
 h)return c;return null};J.displayName="angular-translate/service: getFirstBrowserLanguage";var K=function(){var a=J()||"";return H[G]&&(a=H[G](a)),a};K.displayName="angular-translate/service: getLocale";var L=function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},M=function(){return this.toString().replace(/^\s+|\s+$/g,"")},N=function(a){if(a){for(var b=[],c=angular.lowercase(a),d=0,e=v.length;d<e;d++)b.push(angular.lowercase(v[d]));if(L(b,c)>-1)return a;if(f){var g;for(var h in f)if(f.hasOwnProperty(h)){var i=!1,j=Object.prototype.hasOwnProperty.call(f,h)&&angular.lowercase(h)===angular.lowercase(a);if("*"===h.slice(-1)&&(i=h.slice(0,-1)===a.slice(0,h.length-1)),(j||i)&&(g=f[h],L(b,angular.lowercase(g))>-1))return g}}var k=a.split("_");return k.length>1&&L(b,angular.lowercase(k[0]))>-1?k[0]:void 0}},O=function(a,b){if(!a&&!b)return u;if(a&&!b){if(angular.isString(a))return u[a]}else angular.isObject(u[a])||(u[a]={}),angular.extend(u[a],P(b));return this};this.t
 ranslations=O,this.cloakClassName=function(a){return a?(y=a,this):y},this.nestedObjectDelimeter=function(a){return a?(B=a,this):B};var P=function(a,b,c,d){var e,f,g,h;b||(b=[]),c||(c={});for(e in a)Object.prototype.hasOwnProperty.call(a,e)&&(h=a[e],angular.isObject(h)?P(h,b.concat(e),c,e):(f=b.length?""+b.join(B)+B+e:e,b.length&&e===d&&(g=""+b.join(B),c[g]="@:"+f),c[f]=h));return c};P.displayName="flatObject",this.addInterpolation=function(a){return x.push(a),this},this.useMessageFormatInterpolation=function(){return this.useInterpolation("$translateMessageFormatInterpolation")},this.useInterpolation=function(a){return n=a,this},this.useSanitizeValueStrategy=function(a){return c.useStrategy(a),this},this.preferredLanguage=function(a){return a?(Q(a),this):e};var Q=function(a){return a&&(e=a),e};this.translationNotFoundIndicator=function(a){return this.translationNotFoundIndicatorLeft(a),this.translationNotFoundIndicatorRight(a),this},this.translationNotFoundIndicatorLeft=function(a){
 return a?(q=a,this):q},this.translationNotFoundIndicatorRight=function(a){return a?(r=a,this):r},this.fallbackLanguage=function(a){return R(a),this};var R=function(a){return a?(angular.isString(a)?(h=!0,g=[a]):angular.isArray(a)&&(h=!1,g=a),angular.isString(e)&&L(g,e)<0&&g.push(e),this):h?g[0]:g};this.use=function(a){if(a){if(!u[a]&&!o)throw new Error("$translateProvider couldn't find translationTable for langKey: '"+a+"'");return i=a,this}return i},this.resolveClientLocale=function(){return K()};var S=function(a){return a?(w=a,this):l?l+w:w};this.storageKey=S,this.useUrlLoader=function(a,b){return this.useLoader("$translateUrlLoader",angular.extend({url:a},b))},this.useStaticFilesLoader=function(a){return this.useLoader("$translateStaticFilesLoader",a)},this.useLoader=function(a,b){return o=a,p=b||{},this},this.useLocalStorage=function(){return this.useStorage("$translateLocalStorage")},this.useCookieStorage=function(){return this.useStorage("$translateCookieStorage")},this.useStor
 age=function(a){return k=a,this},this.storagePrefix=function(a){return a?(l=a,this):a},this.useMissingTranslationHandlerLog=function(){return this.useMissingTranslationHandler("$translateMissingTranslationHandlerLog")},this.useMissingTranslationHandler=function(a){return m=a,this},this.usePostCompiling=function(a){return z=!!a,this},this.forceAsyncReload=function(a){return A=!!a,this},this.uniformLanguageTag=function(a){return a?angular.isString(a)&&(a={standard:a}):a={},G=a.standard,this},this.determinePreferredLanguage=function(a){var b=a&&angular.isFunction(a)?a():K();return e=v.length?N(b)||b:b,this},this.registerAvailableLanguageKeys=function(a,b){return a?(v=a,b&&(f=b),this):v},this.useLoaderCache=function(a){return a===!1?s=void 0:a===!0?s=!0:"undefined"==typeof a?s="$translationCache":a&&(s=a),this},this.directivePriority=function(a){return void 0===a?E:(E=a,this)},this.statefulFilter=function(a){return void 0===a?F:(F=a,this)},this.postProcess=function(a){return t=a?a:void 
 0,this},this.keepContent=function(a){return D=!!a,this},this.$get=["$log","$injector","$rootScope","$q",function(a,b,c,d){var f,l,G,H=b.get(n||"$translateDefaultInterpolation"),J=!1,T={},U={},V=function(a,b,c,h,j){!i&&e&&(i=e);var m=j&&j!==i?N(j)||j:i;if(j&&ka(j),angular.isArray(a)){var n=function(a){for(var e={},f=[],g=function(a){var f=d.defer(),g=function(b){e[a]=b,f.resolve([a,b])};return V(a,b,c,h,j).then(g,g),f.promise},i=0,k=a.length;i<k;i++)f.push(g(a[i]));return d.all(f).then(function(){return e})};return n(a)}var o=d.defer();a&&(a=M.apply(a));var p=function(){var a=e?U[e]:U[m];if(l=0,k&&!a){var b=f.get(w);if(a=U[b],g&&g.length){var c=L(g,b);l=0===c?1:0,L(g,e)<0&&g.push(e)}}return a}();if(p){var q=function(){j||(m=i),ga(a,b,c,h,m).then(o.resolve,o.reject)};q.displayName="promiseResolved",p.finally(q)}else ga(a,b,c,h,m).then(o.resolve,o.reject);return o.promise},W=function(a){return q&&(a=[q,a].join(" ")),r&&(a=[a,r].join(" ")),a},X=function(a){i=a,k&&f.put(V.storageKey(),i)
 ,c.$emit("$translateChangeSuccess",{language:a}),H.setLocale(i);var b=function(a,b){T[b].setLocale(i)};b.displayName="eachInterpolatorLocaleSetter",angular.forEach(T,b),c.$emit("$translateChangeEnd",{language:a})},Y=function(a){if(!a)throw"No language key specified for loading.";var e=d.defer();c.$emit("$translateLoadingStart",{language:a}),J=!0;var f=s;"string"==typeof f&&(f=b.get(f));var g=angular.extend({},p,{key:a,$http:angular.extend({},{cache:f},p.$http)}),h=function(b){var d={};c.$emit("$translateLoadingSuccess",{language:a}),angular.isArray(b)?angular.forEach(b,function(a){angular.extend(d,P(a))}):angular.extend(d,P(b)),J=!1,e.resolve({key:a,table:d}),c.$emit("$translateLoadingEnd",{language:a})};h.displayName="onLoaderSuccess";var i=function(a){c.$emit("$translateLoadingError",{language:a}),e.reject(a),c.$emit("$translateLoadingEnd",{language:a})};return i.displayName="onLoaderError",b.get(o)(g).then(h,i),e.promise};if(k&&(f=b.get(k),!f.get||!f.put))throw new Error("Couldn'
 t use storage '"+k+"', missing get() or put() method!");if(x.length){var Z=function(a){var c=b.get(a);c.setLocale(e||i),T[c.getInterpolationIdentifier()]=c};Z.displayName="interpolationFactoryAdder",angular.forEach(x,Z)}var $=function(a){var b=d.defer();if(Object.prototype.hasOwnProperty.call(u,a))b.resolve(u[a]);else if(U[a]){var c=function(a){O(a.key,a.table),b.resolve(a.table)};c.displayName="translationTableResolver",U[a].then(c,b.reject)}else b.reject();return b.promise},_=function(a,b,c,e){var f=d.defer(),g=function(d){if(Object.prototype.hasOwnProperty.call(d,b)){e.setLocale(a);var g=d[b];if("@:"===g.substr(0,2))_(a,g.substr(2),c,e).then(f.resolve,f.reject);else{var h=e.interpolate(d[b],c,"service");h=ja(b,d[b],h,c,a),f.resolve(h)}e.setLocale(i)}else f.reject()};return g.displayName="fallbackTranslationResolver",$(a).then(g,f.reject),f.promise},aa=function(a,b,c,d,e){var f,g=u[a];if(g&&Object.prototype.hasOwnProperty.call(g,b)){if(d.setLocale(a),f=d.interpolate(g[b],c,"filter
 ",e),f=ja(b,g[b],f,c,a,e),!angular.isString(f)&&angular.isFunction(f.$$unwrapTrustedValue)){var h=f.$$unwrapTrustedValue();if("@:"===h.substr(0,2))return aa(a,h.substr(2),c,d,e)}else if("@:"===f.substr(0,2))return aa(a,f.substr(2),c,d,e);d.setLocale(i)}return f},ba=function(a,c,d,e){return m?b.get(m)(a,i,c,d,e):a},ca=function(a,b,c,e,f){var h=d.defer();if(a<g.length){var i=g[a];_(i,b,c,e).then(function(a){h.resolve(a)},function(){return ca(a+1,b,c,e,f).then(h.resolve,h.reject)})}else if(f)h.resolve(f);else{var j=ba(b,c,f);m&&j?h.resolve(j):h.reject(W(b))}return h.promise},da=function(a,b,c,d,e){var f;if(a<g.length){var h=g[a];f=aa(h,b,c,d,e),f||""===f||(f=da(a+1,b,c,d))}return f},ea=function(a,b,c,d){return ca(G>0?G:l,a,b,c,d)},fa=function(a,b,c,d){return da(G>0?G:l,a,b,c,d)},ga=function(a,b,c,e,f){var h=d.defer(),i=f?u[f]:u,j=c?T[c]:H;if(i&&Object.prototype.hasOwnProperty.call(i,a)){var k=i[a];if("@:"===k.substr(0,2))V(k.substr(2),b,c,e,f).then(h.resolve,h.reject);else{var l=j.inte
 rpolate(k,b,"service");l=ja(a,k,l,b,f),h.resolve(l)}}else{var n;m&&!J&&(n=ba(a,b,e)),f&&g&&g.length?ea(a,b,j,e).then(function(a){h.resolve(a)},function(a){h.reject(W(a))}):m&&!J&&n?e?h.resolve(e):h.resolve(n):e?h.resolve(e):h.reject(W(a))}return h.promise},ha=function(a,b,c,d,e){var f,h=d?u[d]:u,i=H;if(T&&Object.prototype.hasOwnProperty.call(T,c)&&(i=T[c]),h&&Object.prototype.hasOwnProperty.call(h,a)){var j=h[a];"@:"===j.substr(0,2)?f=ha(j.substr(2),b,c,d,e):(f=i.interpolate(j,b,"filter",e),f=ja(a,j,f,b,d,e))}else{var k;m&&!J&&(k=ba(a,b,e)),d&&g&&g.length?(l=0,f=fa(a,b,i,e)):f=m&&!J&&k?k:W(a)}return f},ia=function(a){j===a&&(j=void 0),U[a]=void 0},ja=function(a,c,d,e,f,g){var h=t;return h&&("string"==typeof h&&(h=b.get(h)),h)?h(a,c,d,e,f,g):d},ka=function(a){u[a]||!o||U[a]||(U[a]=Y(a).then(function(a){return O(a.key,a.table),a}))};V.preferredLanguage=function(a){return a&&Q(a),e},V.cloakClassName=function(){return y},V.nestedObjectDelimeter=function(){return B},V.fallbackLanguage=fu
 nction(a){if(void 0!==a&&null!==a){if(R(a),o&&g&&g.length)for(var b=0,c=g.length;b<c;b++)U[g[b]]||(U[g[b]]=Y(g[b]));V.use(V.use())}return h?g[0]:g},V.useFallbackLanguage=function(a){if(void 0!==a&&null!==a)if(a){var b=L(g,a);b>-1&&(G=b)}else G=0},V.proposedLanguage=function(){return j},V.storage=function(){return f},V.negotiateLocale=N,V.use=function(a){if(!a)return i;var b=d.defer();c.$emit("$translateChangeStart",{language:a});var e=N(a);return v.length>0&&!e?d.reject(a):(e&&(a=e),j=a,!A&&u[a]||!o||U[a]?U[a]?U[a].then(function(a){return j===a.key&&X(a.key),b.resolve(a.key),a},function(a){return!i&&g&&g.length>0&&g[0]!==a?V.use(g[0]).then(b.resolve,b.reject):b.reject(a)}):(b.resolve(a),X(a)):(U[a]=Y(a).then(function(c){return O(c.key,c.table),b.resolve(c.key),j===a&&X(c.key),c},function(a){return c.$emit("$translateChangeError",{language:a}),b.reject(a),c.$emit("$translateChangeEnd",{language:a}),d.reject(a)}),U[a].finally(function(){ia(a)})),b.promise)},V.resolveClientLocale=funct
 ion(){return K()},V.storageKey=function(){return S()},V.isPostCompilingEnabled=function(){return z},V.isForceAsyncReloadEnabled=function(){return A},V.isKeepContent=function(){return D},V.refresh=function(a){function b(){f.resolve(),c.$emit("$translateRefreshEnd",{language:a})}function e(){f.reject(),c.$emit("$translateRefreshEnd",{language:a})}if(!o)throw new Error("Couldn't refresh translation table, no loader registered!");var f=d.defer();if(c.$emit("$translateRefreshStart",{language:a}),a)if(u[a]){var h=function(c){return O(c.key,c.table),a===i&&X(i),b(),c};h.displayName="refreshPostProcessor",Y(a).then(h,e)}else e();else{var j=[],k={};if(g&&g.length)for(var l=0,m=g.length;l<m;l++)j.push(Y(g[l])),k[g[l]]=!0;i&&!k[i]&&j.push(Y(i));var n=function(a){u={},angular.forEach(a,function(a){O(a.key,a.table)}),i&&X(i),b()};n.displayName="refreshPostProcessor",d.all(j).then(n,e)}return f.promise},V.instant=function(a,b,c,d,f){var h=d&&d!==i?N(d)||d:i;if(null===a||angular.isUndefined(a))ret
 urn a;if(d&&ka(d),angular.isArray(a)){for(var j={},k=0,l=a.length;k<l;k++)j[a[k]]=V.instant(a[k],b,c,d,f);return j}if(angular.isString(a)&&a.length<1)return a;a&&(a=M.apply(a));var n,o=[];e&&o.push(e),h&&o.push(h),g&&g.length&&(o=o.concat(g));for(var p=0,s=o.length;p<s;p++){var t=o[p];if(u[t]&&"undefined"!=typeof u[t][a]&&(n=ha(a,b,c,h,f)),"undefined"!=typeof n)break}if(!n&&""!==n)if(q||r)n=W(a);else{n=H.interpolate(a,b,"filter",f);var v;m&&!J&&(v=ba(a,b,f)),m&&!J&&v&&(n=v)}return n},V.versionInfo=function(){return I},V.loaderCache=function(){return s},V.directivePriority=function(){return E},V.statefulFilter=function(){return F},V.isReady=function(){return C};var la=d.defer();la.promise.then(function(){C=!0}),V.onReady=function(a){var b=d.defer();return angular.isFunction(a)&&b.promise.then(a),C?b.resolve():la.promise.then(b.resolve),b.promise},V.getAvailableLanguageKeys=function(){return v.length>0?v:null},V.getTranslationTable=function(a){return a=a||V.use(),a&&u[a]?angular.copy(
 u[a]):null};var ma=c.$on("$translateReady",function(){la.resolve(),ma(),ma=null}),na=c.$on("$translateChangeEnd",function(){la.resolve(),na(),na=null});if(o){if(angular.equals(u,{})&&V.use()&&V.use(V.use()),g&&g.length)for(var oa=function(a){return O(a.key,a.table),c.$emit("$translateChangeEnd",{language:a.key}),a},pa=0,qa=g.length;pa<qa;pa++){var ra=g[pa];!A&&u[ra]||(U[ra]=Y(ra).then(oa))}}else c.$emit("$translateReady",{language:V.use()});return V}]}function d(a,b){"use strict";var c,d={},e="default";return d.setLocale=function(a){c=a},d.getInterpolationIdentifier=function(){return e},d.useSanitizeValueStrategy=function(a){return b.useStrategy(a),this},d.interpolate=function(c,d,e,f){d=d||{},d=b.sanitize(d,"params",f,e);var g;return angular.isNumber(c)?g=""+c:angular.isString(c)?(g=a(c)(d),g=b.sanitize(g,"text",f,e)):g="",g},d}function e(a,b,c,d,e){"use strict";var g=function(){return this.toString().replace(/^\s+|\s+$/g,"")};return{restrict:"AE",scope:!0,priority:a.directivePrior
 ity(),compile:function(h,i){var j=i.translateValues?i.translateValues:void 0,k=i.translateInterpolation?i.translateInterpolation:void 0,l=h[0].outerHTML.match(/translate-value-+/i),m="^(.*)("+b.startSymbol()+".*"+b.endSymbol()+")(.*)",n="^(.*)"+b.startSymbol()+"(.*)"+b.endSymbol()+"(.*)";return function(h,o,p){h.interpolateParams={},h.preText="",h.postText="",h.translateNamespace=f(h);var q={},r=function(a,b,c){if(b.translateValues&&angular.extend(a,d(b.translateValues)(h.$parent)),l)for(var e in c)if(Object.prototype.hasOwnProperty.call(b,e)&&"translateValue"===e.substr(0,14)&&"translateValues"!==e){var f=angular.lowercase(e.substr(14,1))+e.substr(15);a[f]=c[e]}},s=function(a){if(angular.isFunction(s._unwatchOld)&&(s._unwatchOld(),s._unwatchOld=void 0),angular.equals(a,"")||!angular.isDefined(a)){var c=g.apply(o.text()),d=c.match(m);if(angular.isArray(d)){h.preText=d[1],h.postText=d[3],q.translate=b(d[2])(h.$parent);var e=c.match(n);angular.isArray(e)&&e[2]&&e[2].length&&(s._unwatc
 hOld=h.$watch(e[2],function(a){q.translate=a,y()}))}else q.translate=c?c:void 0}else q.translate=a;y()},t=function(a){p.$observe(a,function(b){q[a]=b,y()})};r(h.interpolateParams,p,i);var u=!0;p.$observe("translate",function(a){"undefined"==typeof a?s(""):""===a&&u||(q.translate=a,y()),u=!1});for(var v in p)p.hasOwnProperty(v)&&"translateAttr"===v.substr(0,13)&&v.length>13&&t(v);if(p.$observe("translateDefault",function(a){h.defaultText=a,y()}),j&&p.$observe("translateValues",function(a){a&&h.$parent.$watch(function(){angular.extend(h.interpolateParams,d(a)(h.$parent))})}),l){var w=function(a){p.$observe(a,function(b){var c=angular.lowercase(a.substr(14,1))+a.substr(15);h.interpolateParams[c]=b})};for(var x in p)Object.prototype.hasOwnProperty.call(p,x)&&"translateValue"===x.substr(0,14)&&"translateValues"!==x&&w(x)}var y=function(){for(var a in q)q.hasOwnProperty(a)&&void 0!==q[a]&&z(a,q[a],h,h.interpolateParams,h.defaultText,h.translateNamespace)},z=function(b,c,d,e,f,g){c?(g&&"."
 ===c.charAt(0)&&(c=g+c),a(c,e,k,f,d.translateLanguage).then(function(a){A(a,d,!0,b)},function(a){A(a,d,!1,b)})):A(c,d,!1,b)},A=function(b,d,e,f){if(e||"undefined"!=typeof d.defaultText&&(b=d.defaultText),"translate"===f){(e||!e&&!a.isKeepContent()&&"undefined"==typeof p.translateKeepContent)&&o.empty().append(d.preText+b+d.postText);var g=a.isPostCompilingEnabled(),h="undefined"!=typeof i.translateCompile,j=h&&"false"!==i.translateCompile;(g&&!h||j)&&c(o.contents())(d)}else{var k=p.$attr[f];"data-"===k.substr(0,5)&&(k=k.substr(5)),k=k.substr(15),o.attr(k,b)}};(j||l||p.translateDefault)&&h.$watch("interpolateParams",y,!0),h.$on("translateLanguageChanged",y);var B=e.$on("$translateChangeSuccess",y);o.text().length?s(p.translate?p.translate:""):p.translate&&s(p.translate),y(),h.$on("$destroy",B)}}}}function f(a){"use strict";return a.translateNamespace?a.translateNamespace:a.$parent?f(a.$parent):void 0}function g(a,b){"use strict";return{restrict:"A",priority:a.directivePriority(),link
 :function(c,d,e){var f,g,i={},j=function(){angular.forEach(f,function(b,f){b&&(i[f]=!0,c.translateNamespace&&"."===b.charAt(0)&&(b=c.translateNamespace+b),a(b,g,e.translateInterpolation,void 0,c.translateLanguage).then(function(a){d.attr(f,a)},function(a){d.attr(f,a)}))}),angular.forEach(i,function(a,b){f[b]||(d.removeAttr(b),delete i[b])})};h(c,e.translateAttr,function(a){f=a},j),h(c,e.translateValues,function(a){g=a},j),e.translateValues&&c.$watch(e.translateValues,j,!0),c.$on("translateLanguageChanged",j);var k=b.$on("$translateChangeSuccess",j);j(),c.$on("$destroy",k)}}}function h(a,b,c,d){"use strict";b&&("::"===b.substr(0,2)?b=b.substr(2):a.$watch(b,function(a){c(a),d()},!0),c(a.$eval(b)))}function i(a,b){"use strict";return{compile:function(c){var d=function(){c.addClass(a.cloakClassName())},e=function(){c.removeClass(a.cloakClassName())};return a.onReady(function(){e()}),d(),function(c,f,g){g.translateCloak&&g.translateCloak.length&&(g.$observe("translateCloak",function(b){a
 (b).then(e,d)}),b.$on("$translateChangeSuccess",function(){a(g.translateCloak).then(e,d)}))}}}}function j(){"use strict";return{restrict:"A",scope:!0,compile:function(){return{pre:function(a,b,c){a.translateNamespace=f(a),a.translateNamespace&&"."===c.translateNamespace.charAt(0)?a.translateNamespace+=c.translateNamespace:a.translateNamespace=c.translateNamespace}}}}}function f(a){"use strict";return a.translateNamespace?a.translateNamespace:a.$parent?f(a.$parent):void 0}function k(){"use strict";return{restrict:"A",scope:!0,compile:function(){return function(a,b,c){c.$observe("translateLanguage",function(b){a.translateLanguage=b}),a.$watch("translateLanguage",function(){a.$broadcast("translateLanguageChanged")})}}}}function l(a,b){"use strict";var c=function(c,d,e,f){return angular.isObject(d)||(d=a(d)(this)),b.instant(c,d,e,f)};return b.statefulFilter()&&(c.$stateful=!0),c}function m(a){"use strict";return a("translations")}return a.$inject=["$translate"],c.$inject=["$STORAGE_KEY"
 ,"$windowProvider","$translateSanitizationProvider","pascalprechtTranslateOverrider"],d.$inject=["$interpolate","$translateSanitization"],e.$inject=["$translate","$interpolate","$compile","$parse","$rootScope"],g.$inject=["$translate","$rootScope"],i.$inject=["$translate","$rootScope"],l.$inject=["$parse","$translate"],m.$inject=["$cacheFactory"],angular.module("pascalprecht.translate",["ng"]).run(a),a.displayName="runTranslate",angular.module("pascalprecht.translate").provider("$translateSanitization",b),angular.module("pascalprecht.translate").constant("pascalprechtTranslateOverrider",{}).provider("$translate",c),c.displayName="displayName",angular.module("pascalprecht.translate").factory("$translateDefaultInterpolation",d),d.displayName="$translateDefaultInterpolation",angular.module("pascalprecht.translate").constant("$STORAGE_KEY","NG_TRANSLATE_LANG_KEY"),angular.module("pascalprecht.translate").directive("translate",e),e.displayName="translateDirective",angular.module("pascalp
 recht.translate").directive("translateAttr",g),g.displayName="translateAttrDirective",angular.module("pascalprecht.translate").directive("translateCloak",i),i.displayName="translateCloakDirective",angular.module("pascalprecht.translate").directive("translateNamespace",j),j.displayName="translateNamespaceDirective",angular.module("pascalprecht.translate").directive("translateLanguage",k),k.displayName="translateLanguageDirective",angular.module("pascalprecht.translate").filter("translate",l),l.displayName="translateFilterFactory",angular.module("pascalprecht.translate").factory("$translationCache",m),m.displayName="$translationCache","pascalprecht.translate"});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-ui-router.min.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-ui-router.min.js b/rocketmq-console/src/main/resources/static/vendor/angular/angular-ui-router.min.js
new file mode 100644
index 0000000..f1b0e35
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-ui-router.min.js
@@ -0,0 +1,8 @@
+/**
+ * State-based routing for AngularJS
+ * @version v0.2.18
+ * @link http://angular-ui.github.com/
+ * @license MIT License, http://www.opensource.org/licenses/MIT
+ */
+"undefined"!=typeof module&&"undefined"!=typeof exports&&module.exports===exports&&(module.exports="ui.router"),function(a,b,c){"use strict";function d(a,b){return R(new(R(function(){},{prototype:a})),b)}function e(a){return Q(arguments,function(b){b!==a&&Q(b,function(b,c){a.hasOwnProperty(c)||(a[c]=b)})}),a}function f(a,b){var c=[];for(var d in a.path){if(a.path[d]!==b.path[d])break;c.push(a.path[d])}return c}function g(a){if(Object.keys)return Object.keys(a);var b=[];return Q(a,function(a,c){b.push(c)}),b}function h(a,b){if(Array.prototype.indexOf)return a.indexOf(b,Number(arguments[2])||0);var c=a.length>>>0,d=Number(arguments[2])||0;for(d=0>d?Math.ceil(d):Math.floor(d),0>d&&(d+=c);c>d;d++)if(d in a&&a[d]===b)return d;return-1}function i(a,b,c,d){var e,i=f(c,d),j={},k=[];for(var l in i)if(i[l]&&i[l].params&&(e=g(i[l].params),e.length))for(var m in e)h(k,e[m])>=0||(k.push(e[m]),j[e[m]]=a[e[m]]);return R({},j,b)}function j(a,b,c){if(!c){c=[];for(var d in a)c.push(d)}for(var e=0;e<c
 .length;e++){var f=c[e];if(a[f]!=b[f])return!1}return!0}function k(a,b){var c={};return Q(a,function(a){c[a]=b[a]}),c}function l(a){var b={},c=Array.prototype.concat.apply(Array.prototype,Array.prototype.slice.call(arguments,1));return Q(c,function(c){c in a&&(b[c]=a[c])}),b}function m(a){var b={},c=Array.prototype.concat.apply(Array.prototype,Array.prototype.slice.call(arguments,1));for(var d in a)-1==h(c,d)&&(b[d]=a[d]);return b}function n(a,b){var c=P(a),d=c?[]:{};return Q(a,function(a,e){b(a,e)&&(d[c?d.length:e]=a)}),d}function o(a,b){var c=P(a)?[]:{};return Q(a,function(a,d){c[d]=b(a,d)}),c}function p(a,b){var d=1,f=2,i={},j=[],k=i,l=R(a.when(i),{$$promises:i,$$values:i});this.study=function(i){function n(a,c){if(s[c]!==f){if(r.push(c),s[c]===d)throw r.splice(0,h(r,c)),new Error("Cyclic dependency: "+r.join(" -> "));if(s[c]=d,N(a))q.push(c,[function(){return b.get(a)}],j);else{var e=b.annotate(a);Q(e,function(a){a!==c&&i.hasOwnProperty(a)&&n(i[a],a)}),q.push(c,a,e)}r.pop(),s[c]
 =f}}function o(a){return O(a)&&a.then&&a.$$promises}if(!O(i))throw new Error("'invocables' must be an object");var p=g(i||{}),q=[],r=[],s={};return Q(i,n),i=r=s=null,function(d,f,g){function h(){--u||(v||e(t,f.$$values),r.$$values=t,r.$$promises=r.$$promises||!0,delete r.$$inheritedValues,n.resolve(t))}function i(a){r.$$failure=a,n.reject(a)}function j(c,e,f){function j(a){l.reject(a),i(a)}function k(){if(!L(r.$$failure))try{l.resolve(b.invoke(e,g,t)),l.promise.then(function(a){t[c]=a,h()},j)}catch(a){j(a)}}var l=a.defer(),m=0;Q(f,function(a){s.hasOwnProperty(a)&&!d.hasOwnProperty(a)&&(m++,s[a].then(function(b){t[a]=b,--m||k()},j))}),m||k(),s[c]=l.promise}if(o(d)&&g===c&&(g=f,f=d,d=null),d){if(!O(d))throw new Error("'locals' must be an object")}else d=k;if(f){if(!o(f))throw new Error("'parent' must be a promise returned by $resolve.resolve()")}else f=l;var n=a.defer(),r=n.promise,s=r.$$promises={},t=R({},d),u=1+q.length/3,v=!1;if(L(f.$$failure))return i(f.$$failure),r;f.$$inheritedV
 alues&&e(t,m(f.$$inheritedValues,p)),R(s,f.$$promises),f.$$values?(v=e(t,m(f.$$values,p)),r.$$inheritedValues=m(f.$$values,p),h()):(f.$$inheritedValues&&(r.$$inheritedValues=m(f.$$inheritedValues,p)),f.then(h,i));for(var w=0,x=q.length;x>w;w+=3)d.hasOwnProperty(q[w])?h():j(q[w],q[w+1],q[w+2]);return r}},this.resolve=function(a,b,c,d){return this.study(a)(b,c,d)}}function q(a,b,c){this.fromConfig=function(a,b,c){return L(a.template)?this.fromString(a.template,b):L(a.templateUrl)?this.fromUrl(a.templateUrl,b):L(a.templateProvider)?this.fromProvider(a.templateProvider,b,c):null},this.fromString=function(a,b){return M(a)?a(b):a},this.fromUrl=function(c,d){return M(c)&&(c=c(d)),null==c?null:a.get(c,{cache:b,headers:{Accept:"text/html"}}).then(function(a){return a.data})},this.fromProvider=function(a,b,d){return c.invoke(a,null,d||{params:b})}}function r(a,b,e){function f(b,c,d,e){if(q.push(b),o[b])return o[b];if(!/^\w+([-.]+\w+)*(?:\[\])?$/.test(b))throw new Error("Invalid parameter name
  '"+b+"' in pattern '"+a+"'");if(p[b])throw new Error("Duplicate parameter name '"+b+"' in pattern '"+a+"'");return p[b]=new U.Param(b,c,d,e),p[b]}function g(a,b,c,d){var e=["",""],f=a.replace(/[\\\[\]\^$*+?.()|{}]/g,"\\$&");if(!b)return f;switch(c){case!1:e=["(",")"+(d?"?":"")];break;case!0:f=f.replace(/\/$/,""),e=["(?:/(",")|/)?"];break;default:e=["("+c+"|",")?"]}return f+e[0]+b+e[1]}function h(e,f){var g,h,i,j,k;return g=e[2]||e[3],k=b.params[g],i=a.substring(m,e.index),h=f?e[4]:e[4]||("*"==e[1]?".*":null),h&&(j=U.type(h)||d(U.type("string"),{pattern:new RegExp(h,b.caseInsensitive?"i":c)})),{id:g,regexp:h,segment:i,type:j,cfg:k}}b=R({params:{}},O(b)?b:{});var i,j=/([:*])([\w\[\]]+)|\{([\w\[\]]+)(?:\:\s*((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g,k=/([:]?)([\w\[\].-]+)|\{([\w\[\].-]+)(?:\:\s*((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g,l="^",m=0,n=this.segments=[],o=e?e.params:{},p=this.params=e?e.params.$$new():new U.ParamSet,q=[];this.source=a;for(var r,s,t;(i=j.exec(a))&
 &(r=h(i,!1),!(r.segment.indexOf("?")>=0));)s=f(r.id,r.type,r.cfg,"path"),l+=g(r.segment,s.type.pattern.source,s.squash,s.isOptional),n.push(r.segment),m=j.lastIndex;t=a.substring(m);var u=t.indexOf("?");if(u>=0){var v=this.sourceSearch=t.substring(u);if(t=t.substring(0,u),this.sourcePath=a.substring(0,m+u),v.length>0)for(m=0;i=k.exec(v);)r=h(i,!0),s=f(r.id,r.type,r.cfg,"search"),m=j.lastIndex}else this.sourcePath=a,this.sourceSearch="";l+=g(t)+(b.strict===!1?"/?":"")+"$",n.push(t),this.regexp=new RegExp(l,b.caseInsensitive?"i":c),this.prefix=n[0],this.$$paramNames=q}function s(a){R(this,a)}function t(){function a(a){return null!=a?a.toString().replace(/~/g,"~~").replace(/\//g,"~2F"):a}function e(a){return null!=a?a.toString().replace(/~2F/g,"/").replace(/~~/g,"~"):a}function f(){return{strict:p,caseInsensitive:m}}function i(a){return M(a)||P(a)&&M(a[a.length-1])}function j(){for(;w.length;){var a=w.shift();if(a.pattern)throw new Error("You cannot override a type's .pattern at runtim
 e.");b.extend(u[a.name],l.invoke(a.def))}}function k(a){R(this,a||{})}U=this;var l,m=!1,p=!0,q=!1,u={},v=!0,w=[],x={string:{encode:a,decode:e,is:function(a){return null==a||!L(a)||"string"==typeof a},pattern:/[^\/]*/},"int":{encode:a,decode:function(a){return parseInt(a,10)},is:function(a){return L(a)&&this.decode(a.toString())===a},pattern:/\d+/},bool:{encode:function(a){return a?1:0},decode:function(a){return 0!==parseInt(a,10)},is:function(a){return a===!0||a===!1},pattern:/0|1/},date:{encode:function(a){return this.is(a)?[a.getFullYear(),("0"+(a.getMonth()+1)).slice(-2),("0"+a.getDate()).slice(-2)].join("-"):c},decode:function(a){if(this.is(a))return a;var b=this.capture.exec(a);return b?new Date(b[1],b[2]-1,b[3]):c},is:function(a){return a instanceof Date&&!isNaN(a.valueOf())},equals:function(a,b){return this.is(a)&&this.is(b)&&a.toISOString()===b.toISOString()},pattern:/[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/,capture:/([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0
 -9]|3[0-1])/},json:{encode:b.toJson,decode:b.fromJson,is:b.isObject,equals:b.equals,pattern:/[^\/]*/},any:{encode:b.identity,decode:b.identity,equals:b.equals,pattern:/.*/}};t.$$getDefaultValue=function(a){if(!i(a.value))return a.value;if(!l)throw new Error("Injectable functions cannot be called at configuration time");return l.invoke(a.value)},this.caseInsensitive=function(a){return L(a)&&(m=a),m},this.strictMode=function(a){return L(a)&&(p=a),p},this.defaultSquashPolicy=function(a){if(!L(a))return q;if(a!==!0&&a!==!1&&!N(a))throw new Error("Invalid squash policy: "+a+". Valid policies: false, true, arbitrary-string");return q=a,a},this.compile=function(a,b){return new r(a,R(f(),b))},this.isMatcher=function(a){if(!O(a))return!1;var b=!0;return Q(r.prototype,function(c,d){M(c)&&(b=b&&L(a[d])&&M(a[d]))}),b},this.type=function(a,b,c){if(!L(b))return u[a];if(u.hasOwnProperty(a))throw new Error("A type named '"+a+"' has already been defined.");return u[a]=new s(R({name:a},b)),c&&(w.push
 ({name:a,def:c}),v||j()),this},Q(x,function(a,b){u[b]=new s(R({name:b},a))}),u=d(u,{}),this.$get=["$injector",function(a){return l=a,v=!1,j(),Q(x,function(a,b){u[b]||(u[b]=new s(a))}),this}],this.Param=function(a,d,e,f){function j(a){var b=O(a)?g(a):[],c=-1===h(b,"value")&&-1===h(b,"type")&&-1===h(b,"squash")&&-1===h(b,"array");return c&&(a={value:a}),a.$$fn=i(a.value)?a.value:function(){return a.value},a}function k(c,d,e){if(c.type&&d)throw new Error("Param '"+a+"' has two type configurations.");return d?d:c.type?b.isString(c.type)?u[c.type]:c.type instanceof s?c.type:new s(c.type):"config"===e?u.any:u.string}function m(){var b={array:"search"===f?"auto":!1},c=a.match(/\[\]$/)?{array:!0}:{};return R(b,c,e).array}function p(a,b){var c=a.squash;if(!b||c===!1)return!1;if(!L(c)||null==c)return q;if(c===!0||N(c))return c;throw new Error("Invalid squash policy: '"+c+"'. Valid policies: false, true, or arbitrary string")}function r(a,b,d,e){var f,g,i=[{from:"",to:d||b?c:""},{from:null,to:
 d||b?c:""}];return f=P(a.replace)?a.replace:[],N(e)&&f.push({from:e,to:c}),g=o(f,function(a){return a.from}),n(i,function(a){return-1===h(g,a.from)}).concat(f)}function t(){if(!l)throw new Error("Injectable functions cannot be called at configuration time");var a=l.invoke(e.$$fn);if(null!==a&&a!==c&&!x.type.is(a))throw new Error("Default value ("+a+") for parameter '"+x.id+"' is not an instance of Type ("+x.type.name+")");return a}function v(a){function b(a){return function(b){return b.from===a}}function c(a){var c=o(n(x.replace,b(a)),function(a){return a.to});return c.length?c[0]:a}return a=c(a),L(a)?x.type.$normalize(a):t()}function w(){return"{Param:"+a+" "+d+" squash: '"+A+"' optional: "+z+"}"}var x=this;e=j(e),d=k(e,d,f);var y=m();d=y?d.$asArray(y,"search"===f):d,"string"!==d.name||y||"path"!==f||e.value!==c||(e.value="");var z=e.value!==c,A=p(e,z),B=r(e,y,z,A);R(this,{id:a,type:d,location:f,array:y,squash:A,replace:B,isOptional:z,value:v,dynamic:c,config:e,toString:w})},k.prot
 otype={$$new:function(){return d(this,R(new k,{$$parent:this}))},$$keys:function(){for(var a=[],b=[],c=this,d=g(k.prototype);c;)b.push(c),c=c.$$parent;return b.reverse(),Q(b,function(b){Q(g(b),function(b){-1===h(a,b)&&-1===h(d,b)&&a.push(b)})}),a},$$values:function(a){var b={},c=this;return Q(c.$$keys(),function(d){b[d]=c[d].value(a&&a[d])}),b},$$equals:function(a,b){var c=!0,d=this;return Q(d.$$keys(),function(e){var f=a&&a[e],g=b&&b[e];d[e].type.equals(f,g)||(c=!1)}),c},$$validates:function(a){var d,e,f,g,h,i=this.$$keys();for(d=0;d<i.length&&(e=this[i[d]],f=a[i[d]],f!==c&&null!==f||!e.isOptional);d++){if(g=e.type.$normalize(f),!e.type.is(g))return!1;if(h=e.type.encode(g),b.isString(h)&&!e.type.pattern.exec(h))return!1}return!0},$$parent:c},this.ParamSet=k}function u(a,d){function e(a){var b=/^\^((?:\\[^a-zA-Z0-9]|[^\\\[\]\^$*+?.()|{}]+)*)/.exec(a.source);return null!=b?b[1].replace(/\\(.)/g,"$1"):""}function f(a,b){return a.replace(/\$(\$|\d{1,2})/,function(a,c){return b["$"===c?
 0:Number(c)]})}function g(a,b,c){if(!c)return!1;var d=a.invoke(b,b,{$match:c});return L(d)?d:!0}function h(d,e,f,g,h){function m(a,b,c){return"/"===q?a:b?q.slice(0,-1)+a:c?q.slice(1)+a:a}function n(a){function b(a){var b=a(f,d);return b?(N(b)&&d.replace().url(b),!0):!1}if(!a||!a.defaultPrevented){p&&d.url()===p;p=c;var e,g=j.length;for(e=0;g>e;e++)if(b(j[e]))return;k&&b(k)}}function o(){return i=i||e.$on("$locationChangeSuccess",n)}var p,q=g.baseHref(),r=d.url();return l||o(),{sync:function(){n()},listen:function(){return o()},update:function(a){return a?void(r=d.url()):void(d.url()!==r&&(d.url(r),d.replace()))},push:function(a,b,e){var f=a.format(b||{});null!==f&&b&&b["#"]&&(f+="#"+b["#"]),d.url(f),p=e&&e.$$avoidResync?d.url():c,e&&e.replace&&d.replace()},href:function(c,e,f){if(!c.validates(e))return null;var g=a.html5Mode();b.isObject(g)&&(g=g.enabled),g=g&&h.history;var i=c.format(e);if(f=f||{},g||null===i||(i="#"+a.hashPrefix()+i),null!==i&&e&&e["#"]&&(i+="#"+e["#"]),i=m(i,g,f.
 absolute),!f.absolute||!i)return i;var j=!g&&i?"/":"",k=d.port();return k=80===k||443===k?"":":"+k,[d.protocol(),"://",d.host(),k,j,i].join("")}}}var i,j=[],k=null,l=!1;this.rule=function(a){if(!M(a))throw new Error("'rule' must be a function");return j.push(a),this},this.otherwise=function(a){if(N(a)){var b=a;a=function(){return b}}else if(!M(a))throw new Error("'rule' must be a function");return k=a,this},this.when=function(a,b){var c,h=N(b);if(N(a)&&(a=d.compile(a)),!h&&!M(b)&&!P(b))throw new Error("invalid 'handler' in when()");var i={matcher:function(a,b){return h&&(c=d.compile(b),b=["$match",function(a){return c.format(a)}]),R(function(c,d){return g(c,b,a.exec(d.path(),d.search()))},{prefix:N(a.prefix)?a.prefix:""})},regex:function(a,b){if(a.global||a.sticky)throw new Error("when() RegExp must not be global or sticky");return h&&(c=b,b=["$match",function(a){return f(c,a)}]),R(function(c,d){return g(c,b,a.exec(d.path()))},{prefix:e(a)})}},j={matcher:d.isMatcher(a),regex:a insta
 nceof RegExp};for(var k in j)if(j[k])return this.rule(i[k](a,b));throw new Error("invalid 'what' in when()")},this.deferIntercept=function(a){a===c&&(a=!0),l=a},this.$get=h,h.$inject=["$location","$rootScope","$injector","$browser","$sniffer"]}function v(a,e){function f(a){return 0===a.indexOf(".")||0===a.indexOf("^")}function m(a,b){if(!a)return c;var d=N(a),e=d?a:a.name,g=f(e);if(g){if(!b)throw new Error("No reference point given for path '"+e+"'");b=m(b);for(var h=e.split("."),i=0,j=h.length,k=b;j>i;i++)if(""!==h[i]||0!==i){if("^"!==h[i])break;if(!k.parent)throw new Error("Path '"+e+"' not valid for state '"+b.name+"'");k=k.parent}else k=b;h=h.slice(i).join("."),e=k.name+(k.name&&h?".":"")+h}var l=z[e];return!l||!d&&(d||l!==a&&l.self!==a)?c:l}function n(a,b){A[a]||(A[a]=[]),A[a].push(b)}function p(a){for(var b=A[a]||[];b.length;)q(b.shift())}function q(b){b=d(b,{self:b,resolve:b.resolve||{},toString:function(){return this.name}});var c=b.name;if(!N(c)||c.indexOf("@")>=0)throw new
  Error("State must have a valid name");if(z.hasOwnProperty(c))throw new Error("State '"+c+"' is already defined");var e=-1!==c.indexOf(".")?c.substring(0,c.lastIndexOf(".")):N(b.parent)?b.parent:O(b.parent)&&N(b.parent.name)?b.parent.name:"";if(e&&!z[e])return n(e,b.self);for(var f in C)M(C[f])&&(b[f]=C[f](b,C.$delegates[f]));return z[c]=b,!b[B]&&b.url&&a.when(b.url,["$match","$stateParams",function(a,c){y.$current.navigable==b&&j(a,c)||y.transitionTo(b,a,{inherit:!0,location:!1})}]),p(c),b}function r(a){return a.indexOf("*")>-1}function s(a){for(var b=a.split("."),c=y.$current.name.split("."),d=0,e=b.length;e>d;d++)"*"===b[d]&&(c[d]="*");return"**"===b[0]&&(c=c.slice(h(c,b[1])),c.unshift("**")),"**"===b[b.length-1]&&(c.splice(h(c,b[b.length-2])+1,Number.MAX_VALUE),c.push("**")),b.length!=c.length?!1:c.join("")===b.join("")}function t(a,b){return N(a)&&!L(b)?C[a]:M(b)&&N(a)?(C[a]&&!C.$delegates[a]&&(C.$delegates[a]=C[a]),C[a]=b,this):this}function u(a,b){return O(a)?b=a:b.name=a,q(b
 ),this}function v(a,e,f,h,l,n,p,q,t){function u(b,c,d,f){var g=a.$broadcast("$stateNotFound",b,c,d);if(g.defaultPrevented)return p.update(),D;if(!g.retry)return null;if(f.$retry)return p.update(),E;var h=y.transition=e.when(g.retry);return h.then(function(){return h!==y.transition?A:(b.options.$retry=!0,y.transitionTo(b.to,b.toParams,b.options))},function(){return D}),p.update(),h}function v(a,c,d,g,i,j){function m(){var c=[];return Q(a.views,function(d,e){var g=d.resolve&&d.resolve!==a.resolve?d.resolve:{};g.$template=[function(){return f.load(e,{view:d,locals:i.globals,params:n,notify:j.notify})||""}],c.push(l.resolve(g,i.globals,i.resolve,a).then(function(c){if(M(d.controllerProvider)||P(d.controllerProvider)){var f=b.extend({},g,i.globals);c.$$controller=h.invoke(d.controllerProvider,null,f)}else c.$$controller=d.controller;c.$$state=a,c.$$controllerAs=d.controllerAs,i[e]=c}))}),e.all(c).then(function(){return i.globals})}var n=d?c:k(a.params.$$keys(),c),o={$stateParams:n};i.res
 olve=l.resolve(a.resolve,o,i.resolve,a);var p=[i.resolve.then(function(a){i.globals=a})];return g&&p.push(g),e.all(p).then(m).then(function(a){return i})}var A=e.reject(new Error("transition superseded")),C=e.reject(new Error("transition prevented")),D=e.reject(new Error("transition aborted")),E=e.reject(new Error("transition failed"));return x.locals={resolve:null,globals:{$stateParams:{}}},y={params:{},current:x.self,$current:x,transition:null},y.reload=function(a){return y.transitionTo(y.current,n,{reload:a||!0,inherit:!1,notify:!0})},y.go=function(a,b,c){return y.transitionTo(a,b,R({inherit:!0,relative:y.$current},c))},y.transitionTo=function(b,c,f){c=c||{},f=R({location:!0,inherit:!1,relative:null,notify:!0,reload:!1,$retry:!1},f||{});var g,j=y.$current,l=y.params,o=j.path,q=m(b,f.relative),r=c["#"];if(!L(q)){var s={to:b,toParams:c,options:f},t=u(s,j.self,l,f);if(t)return t;if(b=s.to,c=s.toParams,f=s.options,q=m(b,f.relative),!L(q)){if(!f.relative)throw new Error("No such state
  '"+b+"'");throw new Error("Could not resolve '"+b+"' from state '"+f.relative+"'")}}if(q[B])throw new Error("Cannot transition to abstract state '"+b+"'");if(f.inherit&&(c=i(n,c||{},y.$current,q)),!q.params.$$validates(c))return E;c=q.params.$$values(c),b=q;var z=b.path,D=0,F=z[D],G=x.locals,H=[];if(f.reload){if(N(f.reload)||O(f.reload)){if(O(f.reload)&&!f.reload.name)throw new Error("Invalid reload state object");var I=f.reload===!0?o[0]:m(f.reload);if(f.reload&&!I)throw new Error("No such reload state '"+(N(f.reload)?f.reload:f.reload.name)+"'");for(;F&&F===o[D]&&F!==I;)G=H[D]=F.locals,D++,F=z[D]}}else for(;F&&F===o[D]&&F.ownParams.$$equals(c,l);)G=H[D]=F.locals,D++,F=z[D];if(w(b,c,j,l,G,f))return r&&(c["#"]=r),y.params=c,S(y.params,n),S(k(b.params.$$keys(),n),b.locals.globals.$stateParams),f.location&&b.navigable&&b.navigable.url&&(p.push(b.navigable.url,c,{$$avoidResync:!0,replace:"replace"===f.location}),p.update(!0)),y.transition=null,e.when(y.current);if(c=k(b.params.$$keys(
 ),c||{}),r&&(c["#"]=r),f.notify&&a.$broadcast("$stateChangeStart",b.self,c,j.self,l,f).defaultPrevented)return a.$broadcast("$stateChangeCancel",b.self,c,j.self,l),null==y.transition&&p.update(),C;for(var J=e.when(G),K=D;K<z.length;K++,F=z[K])G=H[K]=d(G),J=v(F,c,F===b,J,G,f);var M=y.transition=J.then(function(){var d,e,g;if(y.transition!==M)return A;for(d=o.length-1;d>=D;d--)g=o[d],g.self.onExit&&h.invoke(g.self.onExit,g.self,g.locals.globals),g.locals=null;for(d=D;d<z.length;d++)e=z[d],e.locals=H[d],e.self.onEnter&&h.invoke(e.self.onEnter,e.self,e.locals.globals);return y.transition!==M?A:(y.$current=b,y.current=b.self,y.params=c,S(y.params,n),y.transition=null,f.location&&b.navigable&&p.push(b.navigable.url,b.navigable.locals.globals.$stateParams,{$$avoidResync:!0,replace:"replace"===f.location}),f.notify&&a.$broadcast("$stateChangeSuccess",b.self,c,j.self,l),p.update(!0),y.current)},function(d){return y.transition!==M?A:(y.transition=null,g=a.$broadcast("$stateChangeError",b.self
 ,c,j.self,l,d),g.defaultPrevented||p.update(),e.reject(d))});return M},y.is=function(a,b,d){d=R({relative:y.$current},d||{});var e=m(a,d.relative);return L(e)?y.$current!==e?!1:b?j(e.params.$$values(b),n):!0:c},y.includes=function(a,b,d){if(d=R({relative:y.$current},d||{}),N(a)&&r(a)){if(!s(a))return!1;a=y.$current.name}var e=m(a,d.relative);return L(e)?L(y.$current.includes[e.name])?b?j(e.params.$$values(b),n,g(b)):!0:!1:c},y.href=function(a,b,d){d=R({lossy:!0,inherit:!0,absolute:!1,relative:y.$current},d||{});var e=m(a,d.relative);if(!L(e))return null;d.inherit&&(b=i(n,b||{},y.$current,e));var f=e&&d.lossy?e.navigable:e;return f&&f.url!==c&&null!==f.url?p.href(f.url,k(e.params.$$keys().concat("#"),b||{}),{absolute:d.absolute}):null},y.get=function(a,b){if(0===arguments.length)return o(g(z),function(a){return z[a].self});var c=m(a,b||y.$current);return c&&c.self?c.self:null},y}function w(a,b,c,d,e,f){function g(a,b,c){function d(b){return"search"!=a.params[b].location}var e=a.param
 s.$$keys().filter(d),f=l.apply({},[a.params].concat(e)),g=new U.ParamSet(f);return g.$$equals(b,c)}return!f.reload&&a===c&&(e===c.locals||a.self.reloadOnSearch===!1&&g(c,d,b))?!0:void 0}var x,y,z={},A={},B="abstract",C={parent:function(a){if(L(a.parent)&&a.parent)return m(a.parent);var b=/^(.+)\.[^.]+$/.exec(a.name);return b?m(b[1]):x},data:function(a){return a.parent&&a.parent.data&&(a.data=a.self.data=d(a.parent.data,a.data)),a.data},url:function(a){var b=a.url,c={params:a.params||{}};if(N(b))return"^"==b.charAt(0)?e.compile(b.substring(1),c):(a.parent.navigable||x).url.concat(b,c);if(!b||e.isMatcher(b))return b;throw new Error("Invalid url '"+b+"' in state '"+a+"'")},navigable:function(a){return a.url?a:a.parent?a.parent.navigable:null},ownParams:function(a){var b=a.url&&a.url.params||new U.ParamSet;return Q(a.params||{},function(a,c){b[c]||(b[c]=new U.Param(c,null,a,"config"))}),b},params:function(a){var b=l(a.ownParams,a.ownParams.$$keys());return a.parent&&a.parent.params?R(a.
 parent.params.$$new(),b):new U.ParamSet},views:function(a){var b={};return Q(L(a.views)?a.views:{"":a},function(c,d){d.indexOf("@")<0&&(d+="@"+a.parent.name),b[d]=c}),b},path:function(a){return a.parent?a.parent.path.concat(a):[]},includes:function(a){var b=a.parent?R({},a.parent.includes):{};return b[a.name]=!0,b},$delegates:{}};x=q({name:"",url:"^",views:null,"abstract":!0}),x.navigable=null,this.decorator=t,this.state=u,this.$get=v,v.$inject=["$rootScope","$q","$view","$injector","$resolve","$stateParams","$urlRouter","$location","$urlMatcherFactory"]}function w(){function a(a,b){return{load:function(a,c){var d,e={template:null,controller:null,view:null,locals:null,notify:!0,async:!0,params:{}};return c=R(e,c),c.view&&(d=b.fromConfig(c.view,c.params,c.locals)),d}}}this.$get=a,a.$inject=["$rootScope","$templateFactory"]}function x(){var a=!1;this.useAnchorScroll=function(){a=!0},this.$get=["$anchorScroll","$timeout",function(b,c){return a?b:function(a){return c(function(){a[0].scr
 ollIntoView()},0,!1)}}]}function y(a,c,d,e){function f(){return c.has?function(a){return c.has(a)?c.get(a):null}:function(a){try{return c.get(a)}catch(b){return null}}}function g(a,c){function d(a){return 1===V&&W>=4?!!j.enabled(a):1===V&&W>=2?!!j.enabled():!!i}var e={enter:function(a,b,c){b.after(a),c()},leave:function(a,b){a.remove(),b()}};if(a.noanimation)return e;if(j)return{enter:function(a,c,f){d(a)?b.version.minor>2?j.enter(a,null,c).then(f):j.enter(a,null,c,f):e.enter(a,c,f)},leave:function(a,c){d(a)?b.version.minor>2?j.leave(a).then(c):j.leave(a,c):e.leave(a,c)}};if(i){var f=i&&i(c,a);return{enter:function(a,b,c){f.enter(a,null,b),c()},leave:function(a,b){f.leave(a),b()}}}return e}var h=f(),i=h("$animator"),j=h("$animate"),k={restrict:"ECA",terminal:!0,priority:400,transclude:"element",compile:function(c,f,h){return function(c,f,i){function j(){function a(){b&&b.remove(),c&&c.$destroy()}var b=l,c=n;c&&(c._willBeDestroyed=!0),m?(r.leave(m,function(){a(),l=null}),l=m):(a(),l=
 null),m=null,n=null}function k(g){var k,l=A(c,i,f,e),s=l&&a.$current&&a.$current.locals[l];if((g||s!==o)&&!c._willBeDestroyed){k=c.$new(),o=a.$current.locals[l],k.$emit("$viewContentLoading",l);var t=h(k,function(a){r.enter(a,f,function(){n&&n.$emit("$viewContentAnimationEnded"),(b.isDefined(q)&&!q||c.$eval(q))&&d(a)}),j()});m=t,n=k,n.$emit("$viewContentLoaded",l),n.$eval(p)}}var l,m,n,o,p=i.onload||"",q=i.autoscroll,r=g(i,c);c.$on("$stateChangeSuccess",function(){k(!1)}),k(!0)}}};return k}function z(a,b,c,d){return{restrict:"ECA",priority:-400,compile:function(e){var f=e.html();return function(e,g,h){var i=c.$current,j=A(e,h,g,d),k=i&&i.locals[j];if(k){g.data("$uiView",{name:j,state:k.$$state}),g.html(k.$template?k.$template:f);var l=a(g.contents());if(k.$$controller){k.$scope=e,k.$element=g;var m=b(k.$$controller,k);k.$$controllerAs&&(e[k.$$controllerAs]=m),g.data("$ngControllerController",m),g.children().data("$ngControllerController",m)}l(e)}}}}}function A(a,b,c,d){var e=d(b.uiV
 iew||b.name||"")(a),f=c.inheritedData("$uiView");return e.indexOf("@")>=0?e:e+"@"+(f?f.state.name:"")}function B(a,b){var c,d=a.match(/^\s*({[^}]*})\s*$/);if(d&&(a=b+"("+d[1]+")"),c=a.replace(/\n/g," ").match(/^([^(]+?)\s*(\((.*)\))?$/),!c||4!==c.length)throw new Error("Invalid state ref '"+a+"'");return{state:c[1],paramExpr:c[3]||null}}function C(a){var b=a.parent().inheritedData("$uiView");return b&&b.state&&b.state.name?b.state:void 0}function D(a){var b="[object SVGAnimatedString]"===Object.prototype.toString.call(a.prop("href")),c="FORM"===a[0].nodeName;return{attr:c?"action":b?"xlink:href":"href",isAnchor:"A"===a.prop("tagName").toUpperCase(),clickable:!c}}function E(a,b,c,d,e){return function(f){var g=f.which||f.button,h=e();if(!(g>1||f.ctrlKey||f.metaKey||f.shiftKey||a.attr("target"))){var i=c(function(){b.go(h.state,h.params,h.options)});f.preventDefault();var j=d.isAnchor&&!h.href?1:0;f.preventDefault=function(){j--<=0&&c.cancel(i)}}}}function F(a,b){return{relative:C(a)||
 b.$current,inherit:!0}}function G(a,c){return{restrict:"A",require:["?^uiSrefActive","?^uiSrefActiveEq"],link:function(d,e,f,g){var h=B(f.uiSref,a.current.name),i={state:h.state,href:null,params:null},j=D(e),k=g[1]||g[0];i.options=R(F(e,a),f.uiSrefOpts?d.$eval(f.uiSrefOpts):{});var l=function(c){c&&(i.params=b.copy(c)),i.href=a.href(h.state,i.params,i.options),k&&k.$$addStateInfo(h.state,i.params),null!==i.href&&f.$set(j.attr,i.href)};h.paramExpr&&(d.$watch(h.paramExpr,function(a){a!==i.params&&l(a)},!0),i.params=b.copy(d.$eval(h.paramExpr))),l(),j.clickable&&e.bind("click",E(e,a,c,j,function(){return i}))}}}function H(a,b){return{restrict:"A",require:["?^uiSrefActive","?^uiSrefActiveEq"],link:function(c,d,e,f){function g(b){l.state=b[0],l.params=b[1],l.options=b[2],l.href=a.href(l.state,l.params,l.options),i&&i.$$addStateInfo(l.state,l.params),l.href&&e.$set(h.attr,l.href)}var h=D(d),i=f[1]||f[0],j=[e.uiState,e.uiStateParams||null,e.uiStateOpts||null],k="["+j.map(function(a){return
  a||"null"}).join(", ")+"]",l={state:null,params:null,options:null,href:null};c.$watch(k,g,!0),g(c.$eval(k)),h.clickable&&d.bind("click",E(d,a,b,h,function(){return l}))}}}function I(a,b,c){return{restrict:"A",controller:["$scope","$element","$attrs","$timeout",function(b,d,e,f){function g(b,c,e){var f=a.get(b,C(d)),g=h(b,c);p.push({state:f||{name:b},params:c,hash:g}),q[g]=e}function h(a,c){if(!N(a))throw new Error("state should be a string");return O(c)?a+T(c):(c=b.$eval(c),O(c)?a+T(c):a)}function i(){for(var a=0;a<p.length;a++)l(p[a].state,p[a].params)?j(d,q[p[a].hash]):k(d,q[p[a].hash]),m(p[a].state,p[a].params)?j(d,n):k(d,n)}function j(a,b){f(function(){a.addClass(b)})}function k(a,b){a.removeClass(b)}function l(b,c){return a.includes(b.name,c)}function m(b,c){return a.is(b.name,c)}var n,o,p=[],q={};n=c(e.uiSrefActiveEq||"",!1)(b);try{o=b.$eval(e.uiSrefActive)}catch(r){}o=o||c(e.uiSrefActive||"",!1)(b),O(o)&&Q(o,function(c,d){if(N(c)){var e=B(c,a.current.name);g(e.state,b.$eval(
 e.paramExpr),d)}}),this.$$addStateInfo=function(a,b){O(o)&&p.length>0||(g(a,b,o),i())},b.$on("$stateChangeSuccess",i),i()}]}}function J(a){var b=function(b,c){return a.is(b,c)};return b.$stateful=!0,b}function K(a){var b=function(b,c,d){return a.includes(b,c,d)};return b.$stateful=!0,b}var L=b.isDefined,M=b.isFunction,N=b.isString,O=b.isObject,P=b.isArray,Q=b.forEach,R=b.extend,S=b.copy,T=b.toJson;b.module("ui.router.util",["ng"]),b.module("ui.router.router",["ui.router.util"]),b.module("ui.router.state",["ui.router.router","ui.router.util"]),b.module("ui.router",["ui.router.state"]),b.module("ui.router.compat",["ui.router"]),p.$inject=["$q","$injector"],b.module("ui.router.util").service("$resolve",p),q.$inject=["$http","$templateCache","$injector"],b.module("ui.router.util").service("$templateFactory",q);var U;r.prototype.concat=function(a,b){var c={caseInsensitive:U.caseInsensitive(),strict:U.strictMode(),squash:U.defaultSquashPolicy()};return new r(this.sourcePath+a+this.sourceS
 earch,R(c,b),this)},r.prototype.toString=function(){return this.source},r.prototype.exec=function(a,b){function c(a){function b(a){return a.split("").reverse().join("")}function c(a){return a.replace(/\\-/g,"-")}var d=b(a).split(/-(?!\\)/),e=o(d,b);return o(e,c).reverse()}var d=this.regexp.exec(a);if(!d)return null;b=b||{};var e,f,g,h=this.parameters(),i=h.length,j=this.segments.length-1,k={};if(j!==d.length-1)throw new Error("Unbalanced capture group in route '"+this.source+"'");var l,m;for(e=0;j>e;e++){for(g=h[e],l=this.params[g],m=d[e+1],f=0;f<l.replace.length;f++)l.replace[f].from===m&&(m=l.replace[f].to);m&&l.array===!0&&(m=c(m)),L(m)&&(m=l.type.decode(m)),k[g]=l.value(m)}for(;i>e;e++){for(g=h[e],k[g]=this.params[g].value(b[g]),l=this.params[g],m=b[g],f=0;f<l.replace.length;f++)l.replace[f].from===m&&(m=l.replace[f].to);L(m)&&(m=l.type.decode(m)),k[g]=l.value(m)}return k},r.prototype.parameters=function(a){return L(a)?this.params[a]||null:this.$$paramNames},r.prototype.validate
 s=function(a){return this.params.$$validates(a)},r.prototype.format=function(a){function b(a){return encodeURIComponent(a).replace(/-/g,function(a){return"%5C%"+a.charCodeAt(0).toString(16).toUpperCase()})}a=a||{};var c=this.segments,d=this.parameters(),e=this.params;if(!this.validates(a))return null;var f,g=!1,h=c.length-1,i=d.length,j=c[0];for(f=0;i>f;f++){var k=h>f,l=d[f],m=e[l],n=m.value(a[l]),p=m.isOptional&&m.type.equals(m.value(),n),q=p?m.squash:!1,r=m.type.encode(n);if(k){var s=c[f+1],t=f+1===h;if(q===!1)null!=r&&(j+=P(r)?o(r,b).join("-"):encodeURIComponent(r)),j+=s;else if(q===!0){var u=j.match(/\/$/)?/\/?(.*)/:/(.*)/;j+=s.match(u)[1]}else N(q)&&(j+=q+s);t&&m.squash===!0&&"/"===j.slice(-1)&&(j=j.slice(0,-1))}else{if(null==r||p&&q!==!1)continue;if(P(r)||(r=[r]),0===r.length)continue;r=o(r,encodeURIComponent).join("&"+l+"="),j+=(g?"&":"?")+(l+"="+r),g=!0}}return j},s.prototype.is=function(a,b){return!0},s.prototype.encode=function(a,b){return a},s.prototype.decode=function(a,
 b){return a},s.prototype.equals=function(a,b){return a==b},s.prototype.$subPattern=function(){var a=this.pattern.toString();return a.substr(1,a.length-2)},s.prototype.pattern=/.*/,s.prototype.toString=function(){return"{Type:"+this.name+"}"},s.prototype.$normalize=function(a){return this.is(a)?a:this.decode(a)},s.prototype.$asArray=function(a,b){function d(a,b){function d(a,b){return function(){return a[b].apply(a,arguments)}}function e(a){return P(a)?a:L(a)?[a]:[]}function f(a){switch(a.length){case 0:return c;case 1:return"auto"===b?a[0]:a;default:return a}}function g(a){return!a}function h(a,b){return function(c){if(P(c)&&0===c.length)return c;c=e(c);var d=o(c,a);return b===!0?0===n(d,g).length:f(d)}}function i(a){return function(b,c){var d=e(b),f=e(c);if(d.length!==f.length)return!1;for(var g=0;g<d.length;g++)if(!a(d[g],f[g]))return!1;return!0}}this.encode=h(d(a,"encode")),this.decode=h(d(a,"decode")),this.is=h(d(a,"is"),!0),this.equals=i(d(a,"equals")),this.pattern=a.pattern,th
 is.$normalize=h(d(a,"$normalize")),this.name=a.name,this.$arrayMode=b}if(!a)return this;if("auto"===a&&!b)throw new Error("'auto' array mode is for query parameters only");return new d(this,a)},b.module("ui.router.util").provider("$urlMatcherFactory",t),b.module("ui.router.util").run(["$urlMatcherFactory",function(a){}]),u.$inject=["$locationProvider","$urlMatcherFactoryProvider"],b.module("ui.router.router").provider("$urlRouter",u),v.$inject=["$urlRouterProvider","$urlMatcherFactoryProvider"],b.module("ui.router.state").factory("$stateParams",function(){return{}}).provider("$state",v),w.$inject=[],b.module("ui.router.state").provider("$view",w),b.module("ui.router.state").provider("$uiViewScroll",x);var V=b.version.major,W=b.version.minor;y.$inject=["$state","$injector","$uiViewScroll","$interpolate"],z.$inject=["$compile","$controller","$state","$interpolate"],b.module("ui.router.state").directive("uiView",y),b.module("ui.router.state").directive("uiView",z),G.$inject=["$state","
 $timeout"],H.$inject=["$state","$timeout"],I.$inject=["$state","$stateParams","$interpolate"],b.module("ui.router.state").directive("uiSref",G).directive("uiSrefActive",I).directive("uiSrefActiveEq",I).directive("uiState",H),
+J.$inject=["$state"],K.$inject=["$state"],b.module("ui.router.state").filter("isState",J).filter("includedByState",K)}(window,window.angular);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-websocket.min.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-websocket.min.js b/rocketmq-console/src/main/resources/static/vendor/angular/angular-websocket.min.js
new file mode 100644
index 0000000..6e6c630
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-websocket.min.js
@@ -0,0 +1,2 @@
+!function(e,t){if("function"==typeof define&&define.amd)define(["module","exports","angular","ws"],t);else if("undefined"!=typeof exports)t(module,exports,require("angular"),require("ws"));else{var o={exports:{}};t(o,o.exports,e.angular,e.ws),e.angularWebsocket=o.exports}}(this,function(e, t, o, n){"use strict";function s(e){return e&&e.__esModule?e:{"default":e}}function r(e, t, o, n){function s(t, o, n){n||!k(o)||C(o)||(n=o,o=void 0),this.protocols=o,this.url=t||"Missing URL",this.ssl=/(wss)/i.test(this.url),this.scope=n&&n.scope||e,this.rootScopeFailover=n&&n.rootScopeFailover&&!0,this.useApplyAsync=n&&n.useApplyAsync||!1,this.initialTimeout=n&&n.initialTimeout||500,this.maxTimeout=n&&n.maxTimeout||3e5,this.reconnectIfNotNormalClose=n&&n.reconnectIfNotNormalClose||!1,this.binaryType=n&&n.binaryType||"blob",this._reconnectAttempts=0,this.sendQueue=[],this.onOpenCallbacks=[],this.onMessageCallbacks=[],this.onErrorCallbacks=[],this.onCloseCallbacks=[],f(this._readyStateConstants),t?
 this._connect():this._setInternalState(0)}return s.prototype._readyStateConstants={CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3,RECONNECT_ABORTED:4},s.prototype._normalCloseCode=1e3,s.prototype._reconnectableStatusCodes=[4e3],s.prototype.safeDigest=function(e){e&&!this.scope.$$phase&&this.scope.$digest()},s.prototype.bindToScope=function(t){var o=this;return t&&(this.scope=t,this.rootScopeFailover&&this.scope.$on("$destroy",function(){o.scope=e})),o},s.prototype._connect=function(e){!e&&this.socket&&this.socket.readyState===this._readyStateConstants.OPEN||(this.socket=n.create(this.url,this.protocols),this.socket.onmessage=c["default"].bind(this,this._onMessageHandler),this.socket.onopen=c["default"].bind(this,this._onOpenHandler),this.socket.onerror=c["default"].bind(this,this._onErrorHandler),this.socket.onclose=c["default"].bind(this,this._onCloseHandler),this.socket.binaryType=this.binaryType)},s.prototype.fireQueue=function(){for(;this.sendQueue.length&&this.socket.readyState===this.
 _readyStateConstants.OPEN;){var e=this.sendQueue.shift();this.socket.send(d(e.message)||"blob"!=this.binaryType?e.message:JSON.stringify(e.message)),e.deferred.resolve()}},s.prototype.notifyOpenCallbacks=function(e){for(var t=0;t<this.onOpenCallbacks.length;t++)this.onOpenCallbacks[t].call(this,e)},s.prototype.notifyCloseCallbacks=function(e){for(var t=0;t<this.onCloseCallbacks.length;t++)this.onCloseCallbacks[t].call(this,e)},s.prototype.notifyErrorCallbacks=function(e){for(var t=0;t<this.onErrorCallbacks.length;t++)this.onErrorCallbacks[t].call(this,e)},s.prototype.onOpen=function(e){return this.onOpenCallbacks.push(e),this},s.prototype.onClose=function(e){return this.onCloseCallbacks.push(e),this},s.prototype.onError=function(e){return this.onErrorCallbacks.push(e),this},s.prototype.onMessage=function(e,t){if(!y(e))throw new Error("Callback must be a function");if(t&&b(t.filter)&&!d(t.filter)&&!(t.filter instanceof RegExp))throw new Error("Pattern must be a string or regular expr
 ession");return this.onMessageCallbacks.push({fn:e,pattern:t?t.filter:void 0,autoApply:t?t.autoApply:!0}),this},s.prototype._onOpenHandler=function(e){this._reconnectAttempts=0,this.notifyOpenCallbacks(e),this.fireQueue()},s.prototype._onCloseHandler=function(e){var t=this;t.useApplyAsync?t.scope.$applyAsync(function(){t.notifyCloseCallbacks(e)}):(t.notifyCloseCallbacks(e),t.safeDigest(!0)),(this.reconnectIfNotNormalClose&&e.code!==this._normalCloseCode||this._reconnectableStatusCodes.indexOf(e.code)>-1)&&this.reconnect()},s.prototype._onErrorHandler=function(e){var t=this;t.useApplyAsync?t.scope.$applyAsync(function(){t.notifyErrorCallbacks(e)}):(t.notifyErrorCallbacks(e),t.safeDigest(!0))},s.prototype._onMessageHandler=function(e){function t(e,t,o){o=m.call(arguments,2),s.useApplyAsync?s.scope.$applyAsync(function(){e.apply(s,o)}):(e.apply(s,o),s.safeDigest(t))}for(var o,n,s=this,r=0;r<s.onMessageCallbacks.length;r++)n=s.onMessageCallbacks[r],o=n.pattern,o?d(o)&&e.data===o?t(n.fn,
 n.autoApply,e):o instanceof RegExp&&o.exec(e.data)&&t(n.fn,n.autoApply,e):t(n.fn,n.autoApply,e)},s.prototype.close=function(e){return!e&&this.socket.bufferedAmount||this.socket.close(),this},s.prototype.send=function(e){function o(e){e.cancel=s;var t=e.then;return e.then=function(){var e=t.apply(this,arguments);return o(e)},e}function s(t){return i.sendQueue.splice(i.sendQueue.indexOf(e),1),r.reject(t),i}var r=t.defer(),i=this,a=o(r.promise);return i.readyState===i._readyStateConstants.RECONNECT_ABORTED?r.reject("Socket connection has been closed"):(i.sendQueue.push({message:e,deferred:r}),i.fireQueue()),n.isMocked&&n.isMocked()&&n.isConnected(this.url)&&this._onMessageHandler(n.mockSend()),a},s.prototype.reconnect=function(){this.close();var e=this._getBackoffDelay(++this._reconnectAttempts),t=e/1e3;return console.log("Reconnecting in "+t+" seconds"),o(c["default"].bind(this,this._connect),e),this},s.prototype._getBackoffDelay=function(e){var t=Math.random()+1,o=this.initialTimeout
 ,n=2,s=e,r=this.maxTimeout;return Math.floor(Math.min(t*o*Math.pow(n,s),r))},s.prototype._setInternalState=function(e){if(Math.floor(e)!==e||0>e||e>4)throw new Error("state must be an integer between 0 and 4, got: "+e);h||(this.readyState=e||this.socket.readyState),this._internalConnectionState=e,g(this.sendQueue,function(e){e.deferred.reject("Message cancelled due to closed socket connection")})},h&&h(s.prototype,"readyState",{get:function(){return this._internalConnectionState||this.socket.readyState},set:function(){throw new Error("The readyState property is read-only")}}),function(e,t,o){return new s(e,t,o)}}function i(e){this.create=function(e,t){var o=/wss?:\/\//.exec(e);if(!o)throw new Error("Invalid url provided");return t?new a(e,t):new a(e)},this.createWebSocketBackend=function(t,o){return e.warn("Deprecated: Please use .create(url, protocols)"),this.create(t,o)}}Object.defineProperty(t,"__esModule",{value:!0});var a,c=s(o),l="function"==typeof Symbol&&"symbol"==typeof Sym
 bol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e};if("object"===("undefined"==typeof t?"undefined":l(t))&&"function"==typeof require)try{a=n.Client||n.client||n}catch(u){}a=a||window.WebSocket||window.MozWebSocket;var p=c["default"].noop,f=Object.freeze?Object.freeze:p,h=Object.defineProperty,d=c["default"].isString,y=c["default"].isFunction,b=c["default"].isDefined,k=c["default"].isObject,C=c["default"].isArray,g=c["default"].forEach,m=Array.prototype.slice;Array.prototype.indexOf||(Array.prototype.indexOf=function(e){var t=this.length>>>0,o=Number(arguments[1])||0;for(o=0>o?Math.ceil(o):Math.floor(o),0>o&&(o+=t);t>o;o++)if(o in this&&this[o]===e)return o;return-1}),c["default"].module("ngWebSocket",[]).factory("$websocket",["$rootScope","$q","$timeout","$websocketBackend",r]).factory("WebSocket",["$rootScope","$q","$timeout","WebsocketBackend",r]).service("$websocketBackend",["$log",i]).service("Web
 SocketBackend",["$log",i]),c["default"].module("angular-websocket",["ngWebSocket"]),t["default"]=c["default"].module("ngWebSocket"),e.exports=t["default"]});
+//# sourceMappingURL=angular-websocket.min.js.map


[13/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-ic.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-ic.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-ic.js
new file mode 100644
index 0000000..0b665f0
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-ic.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a. m.",
+      "p. m."
+    ],
+    "DAY": [
+      "domingo",
+      "lunes",
+      "martes",
+      "mi\u00e9rcoles",
+      "jueves",
+      "viernes",
+      "s\u00e1bado"
+    ],
+    "ERANAMES": [
+      "antes de Cristo",
+      "despu\u00e9s de Cristo"
+    ],
+    "ERAS": [
+      "a. C.",
+      "d. C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "enero",
+      "febrero",
+      "marzo",
+      "abril",
+      "mayo",
+      "junio",
+      "julio",
+      "agosto",
+      "septiembre",
+      "octubre",
+      "noviembre",
+      "diciembre"
+    ],
+    "SHORTDAY": [
+      "dom.",
+      "lun.",
+      "mar.",
+      "mi\u00e9.",
+      "jue.",
+      "vie.",
+      "s\u00e1b."
+    ],
+    "SHORTMONTH": [
+      "ene.",
+      "feb.",
+      "mar.",
+      "abr.",
+      "may.",
+      "jun.",
+      "jul.",
+      "ago.",
+      "sept.",
+      "oct.",
+      "nov.",
+      "dic."
+    ],
+    "STANDALONEMONTH": [
+      "Enero",
+      "Febrero",
+      "Marzo",
+      "Abril",
+      "Mayo",
+      "Junio",
+      "Julio",
+      "Agosto",
+      "Septiembre",
+      "Octubre",
+      "Noviembre",
+      "Diciembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d 'de' MMMM 'de' y",
+    "longDate": "d 'de' MMMM 'de' y",
+    "medium": "d MMM y H:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "H:mm:ss",
+    "short": "d/M/yy H:mm",
+    "shortDate": "d/M/yy",
+    "shortTime": "H:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "es-ic",
+  "localeID": "es_IC",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-mx.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-mx.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-mx.js
new file mode 100644
index 0000000..508c949
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-mx.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a.m.",
+      "p.m."
+    ],
+    "DAY": [
+      "domingo",
+      "lunes",
+      "martes",
+      "mi\u00e9rcoles",
+      "jueves",
+      "viernes",
+      "s\u00e1bado"
+    ],
+    "ERANAMES": [
+      "antes de Cristo",
+      "despu\u00e9s de Cristo"
+    ],
+    "ERAS": [
+      "a. C.",
+      "d. C."
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "enero",
+      "febrero",
+      "marzo",
+      "abril",
+      "mayo",
+      "junio",
+      "julio",
+      "agosto",
+      "septiembre",
+      "octubre",
+      "noviembre",
+      "diciembre"
+    ],
+    "SHORTDAY": [
+      "dom.",
+      "lun.",
+      "mar.",
+      "mi\u00e9.",
+      "jue.",
+      "vie.",
+      "s\u00e1b."
+    ],
+    "SHORTMONTH": [
+      "ene",
+      "feb",
+      "mar",
+      "abr",
+      "may",
+      "jun",
+      "jul",
+      "ago",
+      "sep",
+      "oct",
+      "nov",
+      "dic"
+    ],
+    "STANDALONEMONTH": [
+      "Enero",
+      "Febrero",
+      "Marzo",
+      "Abril",
+      "Mayo",
+      "Junio",
+      "Julio",
+      "Agosto",
+      "Septiembre",
+      "Octubre",
+      "Noviembre",
+      "Diciembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d 'de' MMMM 'de' y",
+    "longDate": "d 'de' MMMM 'de' y",
+    "medium": "dd/MM/y h:mm:ss a",
+    "mediumDate": "dd/MM/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/yy h:mm a",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "es-mx",
+  "localeID": "es_MX",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-ni.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-ni.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-ni.js
new file mode 100644
index 0000000..2e05e6c
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-ni.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a. m.",
+      "p. m."
+    ],
+    "DAY": [
+      "domingo",
+      "lunes",
+      "martes",
+      "mi\u00e9rcoles",
+      "jueves",
+      "viernes",
+      "s\u00e1bado"
+    ],
+    "ERANAMES": [
+      "antes de Cristo",
+      "despu\u00e9s de Cristo"
+    ],
+    "ERAS": [
+      "a. C.",
+      "d. C."
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "enero",
+      "febrero",
+      "marzo",
+      "abril",
+      "mayo",
+      "junio",
+      "julio",
+      "agosto",
+      "septiembre",
+      "octubre",
+      "noviembre",
+      "diciembre"
+    ],
+    "SHORTDAY": [
+      "dom.",
+      "lun.",
+      "mar.",
+      "mi\u00e9.",
+      "jue.",
+      "vie.",
+      "s\u00e1b."
+    ],
+    "SHORTMONTH": [
+      "ene.",
+      "feb.",
+      "mar.",
+      "abr.",
+      "may.",
+      "jun.",
+      "jul.",
+      "ago.",
+      "sept.",
+      "oct.",
+      "nov.",
+      "dic."
+    ],
+    "STANDALONEMONTH": [
+      "Enero",
+      "Febrero",
+      "Marzo",
+      "Abril",
+      "Mayo",
+      "Junio",
+      "Julio",
+      "Agosto",
+      "Septiembre",
+      "Octubre",
+      "Noviembre",
+      "Diciembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d 'de' MMMM 'de' y",
+    "longDate": "d 'de' MMMM 'de' y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/M/yy h:mm a",
+    "shortDate": "d/M/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "C$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "es-ni",
+  "localeID": "es_NI",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-pa.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-pa.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-pa.js
new file mode 100644
index 0000000..d633bdd
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-pa.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a. m.",
+      "p. m."
+    ],
+    "DAY": [
+      "domingo",
+      "lunes",
+      "martes",
+      "mi\u00e9rcoles",
+      "jueves",
+      "viernes",
+      "s\u00e1bado"
+    ],
+    "ERANAMES": [
+      "antes de Cristo",
+      "despu\u00e9s de Cristo"
+    ],
+    "ERAS": [
+      "a. C.",
+      "d. C."
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "enero",
+      "febrero",
+      "marzo",
+      "abril",
+      "mayo",
+      "junio",
+      "julio",
+      "agosto",
+      "septiembre",
+      "octubre",
+      "noviembre",
+      "diciembre"
+    ],
+    "SHORTDAY": [
+      "dom.",
+      "lun.",
+      "mar.",
+      "mi\u00e9.",
+      "jue.",
+      "vie.",
+      "s\u00e1b."
+    ],
+    "SHORTMONTH": [
+      "ene.",
+      "feb.",
+      "mar.",
+      "abr.",
+      "may.",
+      "jun.",
+      "jul.",
+      "ago.",
+      "sept.",
+      "oct.",
+      "nov.",
+      "dic."
+    ],
+    "STANDALONEMONTH": [
+      "Enero",
+      "Febrero",
+      "Marzo",
+      "Abril",
+      "Mayo",
+      "Junio",
+      "Julio",
+      "Agosto",
+      "Septiembre",
+      "Octubre",
+      "Noviembre",
+      "Diciembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d 'de' MMMM 'de' y",
+    "longDate": "d 'de' MMMM 'de' y",
+    "medium": "MM/dd/y h:mm:ss a",
+    "mediumDate": "MM/dd/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "MM/dd/yy h:mm a",
+    "shortDate": "MM/dd/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "B/.",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "es-pa",
+  "localeID": "es_PA",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-pe.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-pe.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-pe.js
new file mode 100644
index 0000000..bf10aba
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-pe.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a. m.",
+      "p. m."
+    ],
+    "DAY": [
+      "domingo",
+      "lunes",
+      "martes",
+      "mi\u00e9rcoles",
+      "jueves",
+      "viernes",
+      "s\u00e1bado"
+    ],
+    "ERANAMES": [
+      "antes de Cristo",
+      "despu\u00e9s de Cristo"
+    ],
+    "ERAS": [
+      "a. C.",
+      "d. C."
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "enero",
+      "febrero",
+      "marzo",
+      "abril",
+      "mayo",
+      "junio",
+      "julio",
+      "agosto",
+      "setiembre",
+      "octubre",
+      "noviembre",
+      "diciembre"
+    ],
+    "SHORTDAY": [
+      "dom.",
+      "lun.",
+      "mar.",
+      "mi\u00e9.",
+      "jue.",
+      "vie.",
+      "s\u00e1b."
+    ],
+    "SHORTMONTH": [
+      "ene.",
+      "feb.",
+      "mar.",
+      "abr.",
+      "may.",
+      "jun.",
+      "jul.",
+      "ago.",
+      "set.",
+      "oct.",
+      "nov.",
+      "dic."
+    ],
+    "STANDALONEMONTH": [
+      "Enero",
+      "Febrero",
+      "Marzo",
+      "Abril",
+      "Mayo",
+      "Junio",
+      "Julio",
+      "Agosto",
+      "Setiembre",
+      "Octubre",
+      "Noviembre",
+      "Diciembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d 'de' MMMM 'de' y",
+    "longDate": "d 'de' MMMM 'de' y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/MM/yy h:mm a",
+    "shortDate": "d/MM/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "S/.",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "es-pe",
+  "localeID": "es_PE",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-ph.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-ph.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-ph.js
new file mode 100644
index 0000000..23ad6dc
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-ph.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a. m.",
+      "p. m."
+    ],
+    "DAY": [
+      "domingo",
+      "lunes",
+      "martes",
+      "mi\u00e9rcoles",
+      "jueves",
+      "viernes",
+      "s\u00e1bado"
+    ],
+    "ERANAMES": [
+      "antes de Cristo",
+      "despu\u00e9s de Cristo"
+    ],
+    "ERAS": [
+      "a. C.",
+      "d. C."
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "enero",
+      "febrero",
+      "marzo",
+      "abril",
+      "mayo",
+      "junio",
+      "julio",
+      "agosto",
+      "septiembre",
+      "octubre",
+      "noviembre",
+      "diciembre"
+    ],
+    "SHORTDAY": [
+      "dom.",
+      "lun.",
+      "mar.",
+      "mi\u00e9.",
+      "jue.",
+      "vie.",
+      "s\u00e1b."
+    ],
+    "SHORTMONTH": [
+      "ene.",
+      "feb.",
+      "mar.",
+      "abr.",
+      "may.",
+      "jun.",
+      "jul.",
+      "ago.",
+      "sept.",
+      "oct.",
+      "nov.",
+      "dic."
+    ],
+    "STANDALONEMONTH": [
+      "Enero",
+      "Febrero",
+      "Marzo",
+      "Abril",
+      "Mayo",
+      "Junio",
+      "Julio",
+      "Agosto",
+      "Septiembre",
+      "Octubre",
+      "Noviembre",
+      "Diciembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d 'de' MMMM 'de' y",
+    "longDate": "d 'de' MMMM 'de' y",
+    "medium": "d MMM y H:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "H:mm:ss",
+    "short": "d/M/yy H:mm",
+    "shortDate": "d/M/yy",
+    "shortTime": "H:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20b1",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "es-ph",
+  "localeID": "es_PH",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-pr.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-pr.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-pr.js
new file mode 100644
index 0000000..bb4f7b8
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-pr.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a. m.",
+      "p. m."
+    ],
+    "DAY": [
+      "domingo",
+      "lunes",
+      "martes",
+      "mi\u00e9rcoles",
+      "jueves",
+      "viernes",
+      "s\u00e1bado"
+    ],
+    "ERANAMES": [
+      "antes de Cristo",
+      "despu\u00e9s de Cristo"
+    ],
+    "ERAS": [
+      "a. C.",
+      "d. C."
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "enero",
+      "febrero",
+      "marzo",
+      "abril",
+      "mayo",
+      "junio",
+      "julio",
+      "agosto",
+      "septiembre",
+      "octubre",
+      "noviembre",
+      "diciembre"
+    ],
+    "SHORTDAY": [
+      "dom.",
+      "lun.",
+      "mar.",
+      "mi\u00e9.",
+      "jue.",
+      "vie.",
+      "s\u00e1b."
+    ],
+    "SHORTMONTH": [
+      "ene.",
+      "feb.",
+      "mar.",
+      "abr.",
+      "may.",
+      "jun.",
+      "jul.",
+      "ago.",
+      "sept.",
+      "oct.",
+      "nov.",
+      "dic."
+    ],
+    "STANDALONEMONTH": [
+      "Enero",
+      "Febrero",
+      "Marzo",
+      "Abril",
+      "Mayo",
+      "Junio",
+      "Julio",
+      "Agosto",
+      "Septiembre",
+      "Octubre",
+      "Noviembre",
+      "Diciembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d 'de' MMMM 'de' y",
+    "longDate": "d 'de' MMMM 'de' y",
+    "medium": "MM/dd/y h:mm:ss a",
+    "mediumDate": "MM/dd/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "MM/dd/yy h:mm a",
+    "shortDate": "MM/dd/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "es-pr",
+  "localeID": "es_PR",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-py.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-py.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-py.js
new file mode 100644
index 0000000..4f93e84
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-py.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a. m.",
+      "p. m."
+    ],
+    "DAY": [
+      "domingo",
+      "lunes",
+      "martes",
+      "mi\u00e9rcoles",
+      "jueves",
+      "viernes",
+      "s\u00e1bado"
+    ],
+    "ERANAMES": [
+      "antes de Cristo",
+      "despu\u00e9s de Cristo"
+    ],
+    "ERAS": [
+      "a. C.",
+      "d. C."
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "enero",
+      "febrero",
+      "marzo",
+      "abril",
+      "mayo",
+      "junio",
+      "julio",
+      "agosto",
+      "septiembre",
+      "octubre",
+      "noviembre",
+      "diciembre"
+    ],
+    "SHORTDAY": [
+      "dom.",
+      "lun.",
+      "mar.",
+      "mi\u00e9.",
+      "jue.",
+      "vie.",
+      "s\u00e1b."
+    ],
+    "SHORTMONTH": [
+      "ene.",
+      "feb.",
+      "mar.",
+      "abr.",
+      "may.",
+      "jun.",
+      "jul.",
+      "ago.",
+      "sept.",
+      "oct.",
+      "nov.",
+      "dic."
+    ],
+    "STANDALONEMONTH": [
+      "Enero",
+      "Febrero",
+      "Marzo",
+      "Abril",
+      "Mayo",
+      "Junio",
+      "Julio",
+      "Agosto",
+      "Septiembre",
+      "Octubre",
+      "Noviembre",
+      "Diciembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d 'de' MMMM 'de' y",
+    "longDate": "d 'de' MMMM 'de' y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/M/yy h:mm a",
+    "shortDate": "d/M/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Gs",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4\u00a0-",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "es-py",
+  "localeID": "es_PY",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-sv.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-sv.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-sv.js
new file mode 100644
index 0000000..c914056
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-sv.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a. m.",
+      "p. m."
+    ],
+    "DAY": [
+      "domingo",
+      "lunes",
+      "martes",
+      "mi\u00e9rcoles",
+      "jueves",
+      "viernes",
+      "s\u00e1bado"
+    ],
+    "ERANAMES": [
+      "antes de Cristo",
+      "despu\u00e9s de Cristo"
+    ],
+    "ERAS": [
+      "a. C.",
+      "d. C."
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "enero",
+      "febrero",
+      "marzo",
+      "abril",
+      "mayo",
+      "junio",
+      "julio",
+      "agosto",
+      "septiembre",
+      "octubre",
+      "noviembre",
+      "diciembre"
+    ],
+    "SHORTDAY": [
+      "dom.",
+      "lun.",
+      "mar.",
+      "mi\u00e9.",
+      "jue.",
+      "vie.",
+      "s\u00e1b."
+    ],
+    "SHORTMONTH": [
+      "ene.",
+      "feb.",
+      "mar.",
+      "abr.",
+      "may.",
+      "jun.",
+      "jul.",
+      "ago.",
+      "sept.",
+      "oct.",
+      "nov.",
+      "dic."
+    ],
+    "STANDALONEMONTH": [
+      "Enero",
+      "Febrero",
+      "Marzo",
+      "Abril",
+      "Mayo",
+      "Junio",
+      "Julio",
+      "Agosto",
+      "Septiembre",
+      "Octubre",
+      "Noviembre",
+      "Diciembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d 'de' MMMM 'de' y",
+    "longDate": "d 'de' MMMM 'de' y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/M/yy h:mm a",
+    "shortDate": "d/M/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "es-sv",
+  "localeID": "es_SV",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-us.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-us.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-us.js
new file mode 100644
index 0000000..8af9e0a
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-us.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "domingo",
+      "lunes",
+      "martes",
+      "mi\u00e9rcoles",
+      "jueves",
+      "viernes",
+      "s\u00e1bado"
+    ],
+    "ERANAMES": [
+      "antes de Cristo",
+      "despu\u00e9s de Cristo"
+    ],
+    "ERAS": [
+      "a. C.",
+      "d. C."
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "enero",
+      "febrero",
+      "marzo",
+      "abril",
+      "mayo",
+      "junio",
+      "julio",
+      "agosto",
+      "septiembre",
+      "octubre",
+      "noviembre",
+      "diciembre"
+    ],
+    "SHORTDAY": [
+      "dom.",
+      "lun.",
+      "mar.",
+      "mi\u00e9.",
+      "jue.",
+      "vie.",
+      "s\u00e1b."
+    ],
+    "SHORTMONTH": [
+      "ene.",
+      "feb.",
+      "mar.",
+      "abr.",
+      "may.",
+      "jun.",
+      "jul.",
+      "ago.",
+      "sept.",
+      "oct.",
+      "nov.",
+      "dic."
+    ],
+    "STANDALONEMONTH": [
+      "Enero",
+      "Febrero",
+      "Marzo",
+      "Abril",
+      "Mayo",
+      "Junio",
+      "Julio",
+      "Agosto",
+      "Septiembre",
+      "Octubre",
+      "Noviembre",
+      "Diciembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d 'de' MMMM 'de' y",
+    "longDate": "d 'de' MMMM 'de' y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/M/yy h:mm a",
+    "shortDate": "d/M/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "es-us",
+  "localeID": "es_US",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-uy.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-uy.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-uy.js
new file mode 100644
index 0000000..0aea1b7
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-uy.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a. m.",
+      "p. m."
+    ],
+    "DAY": [
+      "domingo",
+      "lunes",
+      "martes",
+      "mi\u00e9rcoles",
+      "jueves",
+      "viernes",
+      "s\u00e1bado"
+    ],
+    "ERANAMES": [
+      "antes de Cristo",
+      "despu\u00e9s de Cristo"
+    ],
+    "ERAS": [
+      "a. C.",
+      "d. C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "enero",
+      "febrero",
+      "marzo",
+      "abril",
+      "mayo",
+      "junio",
+      "julio",
+      "agosto",
+      "setiembre",
+      "octubre",
+      "noviembre",
+      "diciembre"
+    ],
+    "SHORTDAY": [
+      "dom.",
+      "lun.",
+      "mar.",
+      "mi\u00e9.",
+      "jue.",
+      "vie.",
+      "s\u00e1b."
+    ],
+    "SHORTMONTH": [
+      "ene.",
+      "feb.",
+      "mar.",
+      "abr.",
+      "may.",
+      "jun.",
+      "jul.",
+      "ago.",
+      "set.",
+      "oct.",
+      "nov.",
+      "dic."
+    ],
+    "STANDALONEMONTH": [
+      "Enero",
+      "Febrero",
+      "Marzo",
+      "Abril",
+      "Mayo",
+      "Junio",
+      "Julio",
+      "Agosto",
+      "Setiembre",
+      "Octubre",
+      "Noviembre",
+      "Diciembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d 'de' MMMM 'de' y",
+    "longDate": "d 'de' MMMM 'de' y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/M/yy h:mm a",
+    "shortDate": "d/M/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "es-uy",
+  "localeID": "es_UY",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-ve.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-ve.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-ve.js
new file mode 100644
index 0000000..f53ce5f
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es-ve.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a. m.",
+      "p. m."
+    ],
+    "DAY": [
+      "domingo",
+      "lunes",
+      "martes",
+      "mi\u00e9rcoles",
+      "jueves",
+      "viernes",
+      "s\u00e1bado"
+    ],
+    "ERANAMES": [
+      "antes de Cristo",
+      "despu\u00e9s de Cristo"
+    ],
+    "ERAS": [
+      "a. C.",
+      "d. C."
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "enero",
+      "febrero",
+      "marzo",
+      "abril",
+      "mayo",
+      "junio",
+      "julio",
+      "agosto",
+      "septiembre",
+      "octubre",
+      "noviembre",
+      "diciembre"
+    ],
+    "SHORTDAY": [
+      "dom.",
+      "lun.",
+      "mar.",
+      "mi\u00e9.",
+      "jue.",
+      "vie.",
+      "s\u00e1b."
+    ],
+    "SHORTMONTH": [
+      "ene.",
+      "feb.",
+      "mar.",
+      "abr.",
+      "may.",
+      "jun.",
+      "jul.",
+      "ago.",
+      "sept.",
+      "oct.",
+      "nov.",
+      "dic."
+    ],
+    "STANDALONEMONTH": [
+      "Enero",
+      "Febrero",
+      "Marzo",
+      "Abril",
+      "Mayo",
+      "Junio",
+      "Julio",
+      "Agosto",
+      "Septiembre",
+      "Octubre",
+      "Noviembre",
+      "Diciembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d 'de' MMMM 'de' y",
+    "longDate": "d 'de' MMMM 'de' y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/M/yy h:mm a",
+    "shortDate": "d/M/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Bs",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4-",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "es-ve",
+  "localeID": "es_VE",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es.js
new file mode 100644
index 0000000..07c4d2a
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_es.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a. m.",
+      "p. m."
+    ],
+    "DAY": [
+      "domingo",
+      "lunes",
+      "martes",
+      "mi\u00e9rcoles",
+      "jueves",
+      "viernes",
+      "s\u00e1bado"
+    ],
+    "ERANAMES": [
+      "antes de Cristo",
+      "despu\u00e9s de Cristo"
+    ],
+    "ERAS": [
+      "a. C.",
+      "d. C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "enero",
+      "febrero",
+      "marzo",
+      "abril",
+      "mayo",
+      "junio",
+      "julio",
+      "agosto",
+      "septiembre",
+      "octubre",
+      "noviembre",
+      "diciembre"
+    ],
+    "SHORTDAY": [
+      "dom.",
+      "lun.",
+      "mar.",
+      "mi\u00e9.",
+      "jue.",
+      "vie.",
+      "s\u00e1b."
+    ],
+    "SHORTMONTH": [
+      "ene.",
+      "feb.",
+      "mar.",
+      "abr.",
+      "may.",
+      "jun.",
+      "jul.",
+      "ago.",
+      "sept.",
+      "oct.",
+      "nov.",
+      "dic."
+    ],
+    "STANDALONEMONTH": [
+      "Enero",
+      "Febrero",
+      "Marzo",
+      "Abril",
+      "Mayo",
+      "Junio",
+      "Julio",
+      "Agosto",
+      "Septiembre",
+      "Octubre",
+      "Noviembre",
+      "Diciembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d 'de' MMMM 'de' y",
+    "longDate": "d 'de' MMMM 'de' y",
+    "medium": "d MMM y H:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "H:mm:ss",
+    "short": "d/M/yy H:mm",
+    "shortDate": "d/M/yy",
+    "shortTime": "H:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "es",
+  "localeID": "es",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_et-ee.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_et-ee.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_et-ee.js
new file mode 100644
index 0000000..d891b9d
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_et-ee.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "p\u00fchap\u00e4ev",
+      "esmasp\u00e4ev",
+      "teisip\u00e4ev",
+      "kolmap\u00e4ev",
+      "neljap\u00e4ev",
+      "reede",
+      "laup\u00e4ev"
+    ],
+    "ERANAMES": [
+      "enne meie aega",
+      "meie aja j\u00e4rgi"
+    ],
+    "ERAS": [
+      "e.m.a.",
+      "m.a.j."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "jaanuar",
+      "veebruar",
+      "m\u00e4rts",
+      "aprill",
+      "mai",
+      "juuni",
+      "juuli",
+      "august",
+      "september",
+      "oktoober",
+      "november",
+      "detsember"
+    ],
+    "SHORTDAY": [
+      "P",
+      "E",
+      "T",
+      "K",
+      "N",
+      "R",
+      "L"
+    ],
+    "SHORTMONTH": [
+      "jaan",
+      "veebr",
+      "m\u00e4rts",
+      "apr",
+      "mai",
+      "juuni",
+      "juuli",
+      "aug",
+      "sept",
+      "okt",
+      "nov",
+      "dets"
+    ],
+    "STANDALONEMONTH": [
+      "jaanuar",
+      "veebruar",
+      "m\u00e4rts",
+      "aprill",
+      "mai",
+      "juuni",
+      "juuli",
+      "august",
+      "september",
+      "oktoober",
+      "november",
+      "detsember"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "d. MMM y H:mm.ss",
+    "mediumDate": "d. MMM y",
+    "mediumTime": "H:mm.ss",
+    "short": "dd.MM.yy H:mm",
+    "shortDate": "dd.MM.yy",
+    "shortTime": "H:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "et-ee",
+  "localeID": "et_EE",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_et.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_et.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_et.js
new file mode 100644
index 0000000..3c545d8
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_et.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "p\u00fchap\u00e4ev",
+      "esmasp\u00e4ev",
+      "teisip\u00e4ev",
+      "kolmap\u00e4ev",
+      "neljap\u00e4ev",
+      "reede",
+      "laup\u00e4ev"
+    ],
+    "ERANAMES": [
+      "enne meie aega",
+      "meie aja j\u00e4rgi"
+    ],
+    "ERAS": [
+      "e.m.a.",
+      "m.a.j."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "jaanuar",
+      "veebruar",
+      "m\u00e4rts",
+      "aprill",
+      "mai",
+      "juuni",
+      "juuli",
+      "august",
+      "september",
+      "oktoober",
+      "november",
+      "detsember"
+    ],
+    "SHORTDAY": [
+      "P",
+      "E",
+      "T",
+      "K",
+      "N",
+      "R",
+      "L"
+    ],
+    "SHORTMONTH": [
+      "jaan",
+      "veebr",
+      "m\u00e4rts",
+      "apr",
+      "mai",
+      "juuni",
+      "juuli",
+      "aug",
+      "sept",
+      "okt",
+      "nov",
+      "dets"
+    ],
+    "STANDALONEMONTH": [
+      "jaanuar",
+      "veebruar",
+      "m\u00e4rts",
+      "aprill",
+      "mai",
+      "juuni",
+      "juuli",
+      "august",
+      "september",
+      "oktoober",
+      "november",
+      "detsember"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "d. MMM y H:mm.ss",
+    "mediumDate": "d. MMM y",
+    "mediumTime": "H:mm.ss",
+    "short": "dd.MM.yy H:mm",
+    "shortDate": "dd.MM.yy",
+    "shortTime": "H:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "et",
+  "localeID": "et",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_eu-es.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_eu-es.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_eu-es.js
new file mode 100644
index 0000000..1f27109
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_eu-es.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "igandea",
+      "astelehena",
+      "asteartea",
+      "asteazkena",
+      "osteguna",
+      "ostirala",
+      "larunbata"
+    ],
+    "ERANAMES": [
+      "K.a.",
+      "K.o."
+    ],
+    "ERAS": [
+      "K.a.",
+      "K.o."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "urtarrilak",
+      "otsailak",
+      "martxoak",
+      "apirilak",
+      "maiatzak",
+      "ekainak",
+      "uztailak",
+      "abuztuak",
+      "irailak",
+      "urriak",
+      "azaroak",
+      "abenduak"
+    ],
+    "SHORTDAY": [
+      "ig.",
+      "al.",
+      "ar.",
+      "az.",
+      "og.",
+      "or.",
+      "lr."
+    ],
+    "SHORTMONTH": [
+      "urt.",
+      "ots.",
+      "mar.",
+      "api.",
+      "mai.",
+      "eka.",
+      "uzt.",
+      "abu.",
+      "ira.",
+      "urr.",
+      "aza.",
+      "abe."
+    ],
+    "STANDALONEMONTH": [
+      "Urtarrila",
+      "Otsaila",
+      "Martxoa",
+      "Apirila",
+      "Maiatza",
+      "Ekaina",
+      "Uztaila",
+      "Abuztua",
+      "Iraila",
+      "Urria",
+      "Azaroa",
+      "Abendua"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "y('e')'ko' MMMM d, EEEE",
+    "longDate": "y('e')'ko' MMMM d",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "y/MM/dd HH:mm",
+    "shortDate": "y/MM/dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "eu-es",
+  "localeID": "eu_ES",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_eu.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_eu.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_eu.js
new file mode 100644
index 0000000..c1ea375
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_eu.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "igandea",
+      "astelehena",
+      "asteartea",
+      "asteazkena",
+      "osteguna",
+      "ostirala",
+      "larunbata"
+    ],
+    "ERANAMES": [
+      "K.a.",
+      "K.o."
+    ],
+    "ERAS": [
+      "K.a.",
+      "K.o."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "urtarrilak",
+      "otsailak",
+      "martxoak",
+      "apirilak",
+      "maiatzak",
+      "ekainak",
+      "uztailak",
+      "abuztuak",
+      "irailak",
+      "urriak",
+      "azaroak",
+      "abenduak"
+    ],
+    "SHORTDAY": [
+      "ig.",
+      "al.",
+      "ar.",
+      "az.",
+      "og.",
+      "or.",
+      "lr."
+    ],
+    "SHORTMONTH": [
+      "urt.",
+      "ots.",
+      "mar.",
+      "api.",
+      "mai.",
+      "eka.",
+      "uzt.",
+      "abu.",
+      "ira.",
+      "urr.",
+      "aza.",
+      "abe."
+    ],
+    "STANDALONEMONTH": [
+      "Urtarrila",
+      "Otsaila",
+      "Martxoa",
+      "Apirila",
+      "Maiatza",
+      "Ekaina",
+      "Uztaila",
+      "Abuztua",
+      "Iraila",
+      "Urria",
+      "Azaroa",
+      "Abendua"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "y('e')'ko' MMMM d, EEEE",
+    "longDate": "y('e')'ko' MMMM d",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "y/MM/dd HH:mm",
+    "shortDate": "y/MM/dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "eu",
+  "localeID": "eu",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ewo-cm.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ewo-cm.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ewo-cm.js
new file mode 100644
index 0000000..70c6fef
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ewo-cm.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "k\u00edk\u00edr\u00edg",
+      "ng\u0259g\u00f3g\u0259le"
+    ],
+    "DAY": [
+      "s\u0254\u0301nd\u0254",
+      "m\u0254\u0301ndi",
+      "s\u0254\u0301nd\u0254 m\u0259l\u00fa m\u0259\u0301b\u025b\u030c",
+      "s\u0254\u0301nd\u0254 m\u0259l\u00fa m\u0259\u0301l\u025b\u0301",
+      "s\u0254\u0301nd\u0254 m\u0259l\u00fa m\u0259\u0301nyi",
+      "f\u00falad\u00e9",
+      "s\u00e9rad\u00e9"
+    ],
+    "ERANAMES": [
+      "os\u00fas\u00faa Y\u00e9sus kiri",
+      "\u00e1mvus Y\u00e9sus Kir\u00eds"
+    ],
+    "ERAS": [
+      "oyk",
+      "ayk"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "ng\u0254n os\u00fa",
+      "ng\u0254n b\u025b\u030c",
+      "ng\u0254n l\u00e1la",
+      "ng\u0254n nyina",
+      "ng\u0254n t\u00e1na",
+      "ng\u0254n sam\u0259na",
+      "ng\u0254n zamgb\u00e1la",
+      "ng\u0254n mwom",
+      "ng\u0254n ebul\u00fa",
+      "ng\u0254n aw\u00f3m",
+      "ng\u0254n aw\u00f3m ai dzi\u00e1",
+      "ng\u0254n aw\u00f3m ai b\u025b\u030c"
+    ],
+    "SHORTDAY": [
+      "s\u0254\u0301n",
+      "m\u0254\u0301n",
+      "smb",
+      "sml",
+      "smn",
+      "f\u00fal",
+      "s\u00e9r"
+    ],
+    "SHORTMONTH": [
+      "ngo",
+      "ngb",
+      "ngl",
+      "ngn",
+      "ngt",
+      "ngs",
+      "ngz",
+      "ngm",
+      "nge",
+      "nga",
+      "ngad",
+      "ngab"
+    ],
+    "STANDALONEMONTH": [
+      "ng\u0254n os\u00fa",
+      "ng\u0254n b\u025b\u030c",
+      "ng\u0254n l\u00e1la",
+      "ng\u0254n nyina",
+      "ng\u0254n t\u00e1na",
+      "ng\u0254n sam\u0259na",
+      "ng\u0254n zamgb\u00e1la",
+      "ng\u0254n mwom",
+      "ng\u0254n ebul\u00fa",
+      "ng\u0254n aw\u00f3m",
+      "ng\u0254n aw\u00f3m ai dzi\u00e1",
+      "ng\u0254n aw\u00f3m ai b\u025b\u030c"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "ewo-cm",
+  "localeID": "ewo_CM",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ewo.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ewo.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ewo.js
new file mode 100644
index 0000000..f036bd8
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ewo.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "k\u00edk\u00edr\u00edg",
+      "ng\u0259g\u00f3g\u0259le"
+    ],
+    "DAY": [
+      "s\u0254\u0301nd\u0254",
+      "m\u0254\u0301ndi",
+      "s\u0254\u0301nd\u0254 m\u0259l\u00fa m\u0259\u0301b\u025b\u030c",
+      "s\u0254\u0301nd\u0254 m\u0259l\u00fa m\u0259\u0301l\u025b\u0301",
+      "s\u0254\u0301nd\u0254 m\u0259l\u00fa m\u0259\u0301nyi",
+      "f\u00falad\u00e9",
+      "s\u00e9rad\u00e9"
+    ],
+    "ERANAMES": [
+      "os\u00fas\u00faa Y\u00e9sus kiri",
+      "\u00e1mvus Y\u00e9sus Kir\u00eds"
+    ],
+    "ERAS": [
+      "oyk",
+      "ayk"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "ng\u0254n os\u00fa",
+      "ng\u0254n b\u025b\u030c",
+      "ng\u0254n l\u00e1la",
+      "ng\u0254n nyina",
+      "ng\u0254n t\u00e1na",
+      "ng\u0254n sam\u0259na",
+      "ng\u0254n zamgb\u00e1la",
+      "ng\u0254n mwom",
+      "ng\u0254n ebul\u00fa",
+      "ng\u0254n aw\u00f3m",
+      "ng\u0254n aw\u00f3m ai dzi\u00e1",
+      "ng\u0254n aw\u00f3m ai b\u025b\u030c"
+    ],
+    "SHORTDAY": [
+      "s\u0254\u0301n",
+      "m\u0254\u0301n",
+      "smb",
+      "sml",
+      "smn",
+      "f\u00fal",
+      "s\u00e9r"
+    ],
+    "SHORTMONTH": [
+      "ngo",
+      "ngb",
+      "ngl",
+      "ngn",
+      "ngt",
+      "ngs",
+      "ngz",
+      "ngm",
+      "nge",
+      "nga",
+      "ngad",
+      "ngab"
+    ],
+    "STANDALONEMONTH": [
+      "ng\u0254n os\u00fa",
+      "ng\u0254n b\u025b\u030c",
+      "ng\u0254n l\u00e1la",
+      "ng\u0254n nyina",
+      "ng\u0254n t\u00e1na",
+      "ng\u0254n sam\u0259na",
+      "ng\u0254n zamgb\u00e1la",
+      "ng\u0254n mwom",
+      "ng\u0254n ebul\u00fa",
+      "ng\u0254n aw\u00f3m",
+      "ng\u0254n aw\u00f3m ai dzi\u00e1",
+      "ng\u0254n aw\u00f3m ai b\u025b\u030c"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "ewo",
+  "localeID": "ewo",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fa-af.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fa-af.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fa-af.js
new file mode 100644
index 0000000..a231b3c
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fa-af.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0642\u0628\u0644\u200c\u0627\u0632\u0638\u0647\u0631",
+      "\u0628\u0639\u062f\u0627\u0632\u0638\u0647\u0631"
+    ],
+    "DAY": [
+      "\u06cc\u06a9\u0634\u0646\u0628\u0647",
+      "\u062f\u0648\u0634\u0646\u0628\u0647",
+      "\u0633\u0647\u200c\u0634\u0646\u0628\u0647",
+      "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647",
+      "\u067e\u0646\u062c\u0634\u0646\u0628\u0647",
+      "\u062c\u0645\u0639\u0647",
+      "\u0634\u0646\u0628\u0647"
+    ],
+    "ERANAMES": [
+      "\u0642\u0628\u0644 \u0627\u0632 \u0645\u06cc\u0644\u0627\u062f",
+      "\u0645\u06cc\u0644\u0627\u062f\u06cc"
+    ],
+    "ERAS": [
+      "\u0642.\u0645.",
+      "\u0645."
+    ],
+    "FIRSTDAYOFWEEK": 5,
+    "MONTH": [
+      "\u062c\u0646\u0648\u0631\u06cc",
+      "\u0641\u0628\u0631\u0648\u0631\u06cc",
+      "\u0645\u0627\u0631\u0686",
+      "\u0627\u067e\u0631\u06cc\u0644",
+      "\u0645\u06cc",
+      "\u062c\u0648\u0646",
+      "\u062c\u0648\u0644\u0627\u06cc",
+      "\u0627\u06af\u0633\u062a",
+      "\u0633\u067e\u062a\u0645\u0628\u0631",
+      "\u0627\u06a9\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0645\u0628\u0631",
+      "\u062f\u0633\u0645\u0628\u0631"
+    ],
+    "SHORTDAY": [
+      "\u06cc\u06a9\u0634\u0646\u0628\u0647",
+      "\u062f\u0648\u0634\u0646\u0628\u0647",
+      "\u0633\u0647\u200c\u0634\u0646\u0628\u0647",
+      "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647",
+      "\u067e\u0646\u062c\u0634\u0646\u0628\u0647",
+      "\u062c\u0645\u0639\u0647",
+      "\u0634\u0646\u0628\u0647"
+    ],
+    "SHORTMONTH": [
+      "\u062c\u0646\u0648",
+      "\u0641\u0648\u0631\u06cc\u0647\u0654",
+      "\u0645\u0627\u0631\u0633",
+      "\u0622\u0648\u0631\u06cc\u0644",
+      "\u0645\u0640\u06cc",
+      "\u0698\u0648\u0626\u0646",
+      "\u062c\u0648\u0644",
+      "\u0627\u0648\u062a",
+      "\u0633\u067e\u062a\u0627\u0645\u0628\u0631",
+      "\u0627\u06a9\u062a\u0628\u0631",
+      "\u0646\u0648\u0627\u0645\u0628\u0631",
+      "\u062f\u0633\u0645"
+    ],
+    "STANDALONEMONTH": [
+      "\u0698\u0627\u0646\u0648\u06cc\u0647",
+      "\u0641\u0648\u0631\u06cc\u0647",
+      "\u0645\u0627\u0631\u0633",
+      "\u0622\u0648\u0631\u06cc\u0644",
+      "\u0645\u0647",
+      "\u0698\u0648\u0626\u0646",
+      "\u0698\u0648\u0626\u06cc\u0647",
+      "\u0627\u0648\u062a",
+      "\u0633\u067e\u062a\u0627\u0645\u0628\u0631",
+      "\u0627\u06a9\u062a\u0628\u0631",
+      "\u0646\u0648\u0627\u0645\u0628\u0631",
+      "\u062f\u0633\u0627\u0645\u0628\u0631"
+    ],
+    "WEEKENDRANGE": [
+      3,
+      4
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y H:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "H:mm:ss",
+    "short": "y/M/d H:mm",
+    "shortDate": "y/M/d",
+    "shortTime": "H:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Af.",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u200e\u00a4",
+        "negSuf": "",
+        "posPre": "\u200e\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "fa-af",
+  "localeID": "fa_AF",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fa-ir.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fa-ir.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fa-ir.js
new file mode 100644
index 0000000..01d13ad
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fa-ir.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0642\u0628\u0644\u200c\u0627\u0632\u0638\u0647\u0631",
+      "\u0628\u0639\u062f\u0627\u0632\u0638\u0647\u0631"
+    ],
+    "DAY": [
+      "\u06cc\u06a9\u0634\u0646\u0628\u0647",
+      "\u062f\u0648\u0634\u0646\u0628\u0647",
+      "\u0633\u0647\u200c\u0634\u0646\u0628\u0647",
+      "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647",
+      "\u067e\u0646\u062c\u0634\u0646\u0628\u0647",
+      "\u062c\u0645\u0639\u0647",
+      "\u0634\u0646\u0628\u0647"
+    ],
+    "ERANAMES": [
+      "\u0642\u0628\u0644 \u0627\u0632 \u0645\u06cc\u0644\u0627\u062f",
+      "\u0645\u06cc\u0644\u0627\u062f\u06cc"
+    ],
+    "ERAS": [
+      "\u0642.\u0645.",
+      "\u0645."
+    ],
+    "FIRSTDAYOFWEEK": 5,
+    "MONTH": [
+      "\u0698\u0627\u0646\u0648\u06cc\u0647\u0654",
+      "\u0641\u0648\u0631\u06cc\u0647\u0654",
+      "\u0645\u0627\u0631\u0633",
+      "\u0622\u0648\u0631\u06cc\u0644",
+      "\u0645\u0647\u0654",
+      "\u0698\u0648\u0626\u0646",
+      "\u0698\u0648\u0626\u06cc\u0647\u0654",
+      "\u0627\u0648\u062a",
+      "\u0633\u067e\u062a\u0627\u0645\u0628\u0631",
+      "\u0627\u06a9\u062a\u0628\u0631",
+      "\u0646\u0648\u0627\u0645\u0628\u0631",
+      "\u062f\u0633\u0627\u0645\u0628\u0631"
+    ],
+    "SHORTDAY": [
+      "\u06cc\u06a9\u0634\u0646\u0628\u0647",
+      "\u062f\u0648\u0634\u0646\u0628\u0647",
+      "\u0633\u0647\u200c\u0634\u0646\u0628\u0647",
+      "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647",
+      "\u067e\u0646\u062c\u0634\u0646\u0628\u0647",
+      "\u062c\u0645\u0639\u0647",
+      "\u0634\u0646\u0628\u0647"
+    ],
+    "SHORTMONTH": [
+      "\u0698\u0627\u0646\u0648\u06cc\u0647\u0654",
+      "\u0641\u0648\u0631\u06cc\u0647\u0654",
+      "\u0645\u0627\u0631\u0633",
+      "\u0622\u0648\u0631\u06cc\u0644",
+      "\u0645\u0647\u0654",
+      "\u0698\u0648\u0626\u0646",
+      "\u0698\u0648\u0626\u06cc\u0647\u0654",
+      "\u0627\u0648\u062a",
+      "\u0633\u067e\u062a\u0627\u0645\u0628\u0631",
+      "\u0627\u06a9\u062a\u0628\u0631",
+      "\u0646\u0648\u0627\u0645\u0628\u0631",
+      "\u062f\u0633\u0627\u0645\u0628\u0631"
+    ],
+    "STANDALONEMONTH": [
+      "\u0698\u0627\u0646\u0648\u06cc\u0647",
+      "\u0641\u0648\u0631\u06cc\u0647",
+      "\u0645\u0627\u0631\u0633",
+      "\u0622\u0648\u0631\u06cc\u0644",
+      "\u0645\u0647",
+      "\u0698\u0648\u0626\u0646",
+      "\u0698\u0648\u0626\u06cc\u0647",
+      "\u0627\u0648\u062a",
+      "\u0633\u067e\u062a\u0627\u0645\u0628\u0631",
+      "\u0627\u06a9\u062a\u0628\u0631",
+      "\u0646\u0648\u0627\u0645\u0628\u0631",
+      "\u062f\u0633\u0627\u0645\u0628\u0631"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      4
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y H:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "H:mm:ss",
+    "short": "y/M/d H:mm",
+    "shortDate": "y/M/d",
+    "shortTime": "H:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Rial",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u200e\u00a4",
+        "negSuf": "",
+        "posPre": "\u200e\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "fa-ir",
+  "localeID": "fa_IR",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fa.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fa.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fa.js
new file mode 100644
index 0000000..bc27623
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fa.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0642\u0628\u0644\u200c\u0627\u0632\u0638\u0647\u0631",
+      "\u0628\u0639\u062f\u0627\u0632\u0638\u0647\u0631"
+    ],
+    "DAY": [
+      "\u06cc\u06a9\u0634\u0646\u0628\u0647",
+      "\u062f\u0648\u0634\u0646\u0628\u0647",
+      "\u0633\u0647\u200c\u0634\u0646\u0628\u0647",
+      "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647",
+      "\u067e\u0646\u062c\u0634\u0646\u0628\u0647",
+      "\u062c\u0645\u0639\u0647",
+      "\u0634\u0646\u0628\u0647"
+    ],
+    "ERANAMES": [
+      "\u0642\u0628\u0644 \u0627\u0632 \u0645\u06cc\u0644\u0627\u062f",
+      "\u0645\u06cc\u0644\u0627\u062f\u06cc"
+    ],
+    "ERAS": [
+      "\u0642.\u0645.",
+      "\u0645."
+    ],
+    "FIRSTDAYOFWEEK": 5,
+    "MONTH": [
+      "\u0698\u0627\u0646\u0648\u06cc\u0647\u0654",
+      "\u0641\u0648\u0631\u06cc\u0647\u0654",
+      "\u0645\u0627\u0631\u0633",
+      "\u0622\u0648\u0631\u06cc\u0644",
+      "\u0645\u0647\u0654",
+      "\u0698\u0648\u0626\u0646",
+      "\u0698\u0648\u0626\u06cc\u0647\u0654",
+      "\u0627\u0648\u062a",
+      "\u0633\u067e\u062a\u0627\u0645\u0628\u0631",
+      "\u0627\u06a9\u062a\u0628\u0631",
+      "\u0646\u0648\u0627\u0645\u0628\u0631",
+      "\u062f\u0633\u0627\u0645\u0628\u0631"
+    ],
+    "SHORTDAY": [
+      "\u06cc\u06a9\u0634\u0646\u0628\u0647",
+      "\u062f\u0648\u0634\u0646\u0628\u0647",
+      "\u0633\u0647\u200c\u0634\u0646\u0628\u0647",
+      "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647",
+      "\u067e\u0646\u062c\u0634\u0646\u0628\u0647",
+      "\u062c\u0645\u0639\u0647",
+      "\u0634\u0646\u0628\u0647"
+    ],
+    "SHORTMONTH": [
+      "\u0698\u0627\u0646\u0648\u06cc\u0647\u0654",
+      "\u0641\u0648\u0631\u06cc\u0647\u0654",
+      "\u0645\u0627\u0631\u0633",
+      "\u0622\u0648\u0631\u06cc\u0644",
+      "\u0645\u0647\u0654",
+      "\u0698\u0648\u0626\u0646",
+      "\u0698\u0648\u0626\u06cc\u0647\u0654",
+      "\u0627\u0648\u062a",
+      "\u0633\u067e\u062a\u0627\u0645\u0628\u0631",
+      "\u0627\u06a9\u062a\u0628\u0631",
+      "\u0646\u0648\u0627\u0645\u0628\u0631",
+      "\u062f\u0633\u0627\u0645\u0628\u0631"
+    ],
+    "STANDALONEMONTH": [
+      "\u0698\u0627\u0646\u0648\u06cc\u0647",
+      "\u0641\u0648\u0631\u06cc\u0647",
+      "\u0645\u0627\u0631\u0633",
+      "\u0622\u0648\u0631\u06cc\u0644",
+      "\u0645\u0647",
+      "\u0698\u0648\u0626\u0646",
+      "\u0698\u0648\u0626\u06cc\u0647",
+      "\u0627\u0648\u062a",
+      "\u0633\u067e\u062a\u0627\u0645\u0628\u0631",
+      "\u0627\u06a9\u062a\u0628\u0631",
+      "\u0646\u0648\u0627\u0645\u0628\u0631",
+      "\u062f\u0633\u0627\u0645\u0628\u0631"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      4
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y H:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "H:mm:ss",
+    "short": "y/M/d H:mm",
+    "shortDate": "y/M/d",
+    "shortTime": "H:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Rial",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u200e\u00a4",
+        "negSuf": "",
+        "posPre": "\u200e\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "fa",
+  "localeID": "fa",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ff-cm.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ff-cm.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ff-cm.js
new file mode 100644
index 0000000..fc81b6e
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ff-cm.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "subaka",
+      "kikii\u0257e"
+    ],
+    "DAY": [
+      "dewo",
+      "aa\u0253nde",
+      "mawbaare",
+      "njeslaare",
+      "naasaande",
+      "mawnde",
+      "hoore-biir"
+    ],
+    "ERANAMES": [
+      "Hade Iisa",
+      "Caggal Iisa"
+    ],
+    "ERAS": [
+      "H-I",
+      "C-I"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "siilo",
+      "colte",
+      "mbooy",
+      "see\u0257to",
+      "duujal",
+      "korse",
+      "morso",
+      "juko",
+      "siilto",
+      "yarkomaa",
+      "jolal",
+      "bowte"
+    ],
+    "SHORTDAY": [
+      "dew",
+      "aa\u0253",
+      "maw",
+      "nje",
+      "naa",
+      "mwd",
+      "hbi"
+    ],
+    "SHORTMONTH": [
+      "sii",
+      "col",
+      "mbo",
+      "see",
+      "duu",
+      "kor",
+      "mor",
+      "juk",
+      "slt",
+      "yar",
+      "jol",
+      "bow"
+    ],
+    "STANDALONEMONTH": [
+      "siilo",
+      "colte",
+      "mbooy",
+      "see\u0257to",
+      "duujal",
+      "korse",
+      "morso",
+      "juko",
+      "siilto",
+      "yarkomaa",
+      "jolal",
+      "bowte"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "ff-cm",
+  "localeID": "ff_CM",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ff-gn.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ff-gn.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ff-gn.js
new file mode 100644
index 0000000..f88c63e
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ff-gn.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "subaka",
+      "kikii\u0257e"
+    ],
+    "DAY": [
+      "dewo",
+      "aa\u0253nde",
+      "mawbaare",
+      "njeslaare",
+      "naasaande",
+      "mawnde",
+      "hoore-biir"
+    ],
+    "ERANAMES": [
+      "Hade Iisa",
+      "Caggal Iisa"
+    ],
+    "ERAS": [
+      "H-I",
+      "C-I"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "siilo",
+      "colte",
+      "mbooy",
+      "see\u0257to",
+      "duujal",
+      "korse",
+      "morso",
+      "juko",
+      "siilto",
+      "yarkomaa",
+      "jolal",
+      "bowte"
+    ],
+    "SHORTDAY": [
+      "dew",
+      "aa\u0253",
+      "maw",
+      "nje",
+      "naa",
+      "mwd",
+      "hbi"
+    ],
+    "SHORTMONTH": [
+      "sii",
+      "col",
+      "mbo",
+      "see",
+      "duu",
+      "kor",
+      "mor",
+      "juk",
+      "slt",
+      "yar",
+      "jol",
+      "bow"
+    ],
+    "STANDALONEMONTH": [
+      "siilo",
+      "colte",
+      "mbooy",
+      "see\u0257to",
+      "duujal",
+      "korse",
+      "morso",
+      "juko",
+      "siilto",
+      "yarkomaa",
+      "jolal",
+      "bowte"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FG",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "ff-gn",
+  "localeID": "ff_GN",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ff-mr.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ff-mr.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ff-mr.js
new file mode 100644
index 0000000..841316e
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ff-mr.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "subaka",
+      "kikii\u0257e"
+    ],
+    "DAY": [
+      "dewo",
+      "aa\u0253nde",
+      "mawbaare",
+      "njeslaare",
+      "naasaande",
+      "mawnde",
+      "hoore-biir"
+    ],
+    "ERANAMES": [
+      "Hade Iisa",
+      "Caggal Iisa"
+    ],
+    "ERAS": [
+      "H-I",
+      "C-I"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "siilo",
+      "colte",
+      "mbooy",
+      "see\u0257to",
+      "duujal",
+      "korse",
+      "morso",
+      "juko",
+      "siilto",
+      "yarkomaa",
+      "jolal",
+      "bowte"
+    ],
+    "SHORTDAY": [
+      "dew",
+      "aa\u0253",
+      "maw",
+      "nje",
+      "naa",
+      "mwd",
+      "hbi"
+    ],
+    "SHORTMONTH": [
+      "sii",
+      "col",
+      "mbo",
+      "see",
+      "duu",
+      "kor",
+      "mor",
+      "juk",
+      "slt",
+      "yar",
+      "jol",
+      "bow"
+    ],
+    "STANDALONEMONTH": [
+      "siilo",
+      "colte",
+      "mbooy",
+      "see\u0257to",
+      "duujal",
+      "korse",
+      "morso",
+      "juko",
+      "siilto",
+      "yarkomaa",
+      "jolal",
+      "bowte"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "MRO",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "ff-mr",
+  "localeID": "ff_MR",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ff-sn.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ff-sn.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ff-sn.js
new file mode 100644
index 0000000..de6849e
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ff-sn.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "subaka",
+      "kikii\u0257e"
+    ],
+    "DAY": [
+      "dewo",
+      "aa\u0253nde",
+      "mawbaare",
+      "njeslaare",
+      "naasaande",
+      "mawnde",
+      "hoore-biir"
+    ],
+    "ERANAMES": [
+      "Hade Iisa",
+      "Caggal Iisa"
+    ],
+    "ERAS": [
+      "H-I",
+      "C-I"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "siilo",
+      "colte",
+      "mbooy",
+      "see\u0257to",
+      "duujal",
+      "korse",
+      "morso",
+      "juko",
+      "siilto",
+      "yarkomaa",
+      "jolal",
+      "bowte"
+    ],
+    "SHORTDAY": [
+      "dew",
+      "aa\u0253",
+      "maw",
+      "nje",
+      "naa",
+      "mwd",
+      "hbi"
+    ],
+    "SHORTMONTH": [
+      "sii",
+      "col",
+      "mbo",
+      "see",
+      "duu",
+      "kor",
+      "mor",
+      "juk",
+      "slt",
+      "yar",
+      "jol",
+      "bow"
+    ],
+    "STANDALONEMONTH": [
+      "siilo",
+      "colte",
+      "mbooy",
+      "see\u0257to",
+      "duujal",
+      "korse",
+      "morso",
+      "juko",
+      "siilto",
+      "yarkomaa",
+      "jolal",
+      "bowte"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "CFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "ff-sn",
+  "localeID": "ff_SN",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);



[46/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/src/i18n/en.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/src/i18n/en.js b/rocketmq-console/src/main/resources/static/src/i18n/en.js
new file mode 100644
index 0000000..651456f
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/src/i18n/en.js
@@ -0,0 +1,80 @@
+var en = {
+    "TITLE": "RocketMq-Console-Ng",
+    "CLOSE": "Close",
+    "NO": "NO.",
+    "ADDRESS": "Address",
+    "VERSION": "Version",
+    "PRO_MSG_TPS": "Produce Massage TPS",
+    "CUS_MSG_TPS": "Consumer Massage TPS",
+    "YESTERDAY_PRO_COUNT": "Yesterday Produce Count",
+    "YESTERDAY_CUS_COUNT": "Yesterday Consume Count",
+    "TODAY_PRO_COUNT": "Today Produce Count",
+    "TODAY_CUS_COUNT": "Today Consume Count",
+    "INSTANCE": "Instance",
+    "SPLIT": "Broker",
+    "CLUSTER": "Cluster",
+    "CLUSTER_DETAIL": "Cluster Detail",
+    "TOPIC": "Topic",
+    "SUBSCRIPTION_GROUP":"SubscriptionGroup",
+    "PRODUCER_GROUP":"ProducerGroup",
+    "CONSUMER":"Consumer",
+    "PRODUCER":"Producer",
+    "MESSAGE":"Message",
+    "COMMIT": "Commit",
+    "OPERATION": "Operation",
+    "ADD": "Add",
+    "UPDATE": "Update",
+    "STATUS": "Status",
+    "ROUTER": "Router",
+    "MANAGE": "Manage",
+    "CONFIG": "Config",
+    "SEND_MSG": "Send Massage",
+    "RESET_CUS_OFFSET": "Reset Consumer Offset",
+    "DELETE": "Delete",
+    "CHANGE_LANG": "ChangeLanguage",
+    "BROKER": "Broker",
+    "NORMAL": "NORMAL",
+    "RETRY": "RETRY",
+    "DLQ": "DLQ",
+    "QUANTITY":"Quantity",
+    "TYPE":"Type",
+    "MODE":"Mode",
+    "DELAY":"Delay",
+    "DASHBOARD":"Dashboard",
+    "CONSUME_DETAIL":"CONSUME DETAIL",
+    "CLIENT":"CLIENT",
+    "LAST_CONSUME_TIME":"LastConsumeTime",
+    "TIME":"Time",
+    "RESET":"RESET",
+    "DATE":"Date",
+    "NO_DATA":"NO DATA",
+    "SEARCH":"Search",
+    "BEGIN":"Begin",
+    "END":"End",
+    "TOPIC_CHANGE":"Topic Change",
+    "SEND":"Send",
+    "SUBSCRIPTION_CHANGE":"Subscription Change",
+	"QUEUE":"Queue",
+    "MIN_OFFSET":"minOffset",
+    "MAX_OFFSET":"maxOffset",
+    "LAST_UPDATE_TIME_STAMP":"lastUpdateTimeStamp",
+    "QUEUE_DATAS":"queueDatas",
+    "READ_QUEUE_NUMS":"readQueueNums",
+    "WRITE_QUEUE_NUMS":"writeQueueNums",
+    "PERM":"perm",
+    "TAG":"Tag",
+    "KEY":"Key",
+    "MESSAGE_BODY":"Message Body",
+    "TOPIC_NAME":"topicName",
+    "ORDER":"order",
+    "CONSUMER_CLIENT":"consumerClient",
+    "BROKER_OFFSET":"brokerOffset",
+    "CONSUMER_OFFSET":"consumerOffset",
+    "DIFF_TOTAL":"diffTotal",
+    "LAST_TIME_STAMP":"lastTimeStamp",
+    "RESET_OFFSET":"resetOffset",
+    "CLUSTER_NAME":"clusterName",
+    "OPS":"OPS",
+    "AUTO_REFRESH":"AUTO_REFRESH",
+    "REFRESH":"REFRESH"
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/src/i18n/zh.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/src/i18n/zh.js b/rocketmq-console/src/main/resources/static/src/i18n/zh.js
new file mode 100644
index 0000000..6cf39f0
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/src/i18n/zh.js
@@ -0,0 +1,80 @@
+var zh = {
+    "TITLE": "RocketMq控制台",
+    "CLOSE": "关闭",
+    "NO": "编号",
+    "ADDRESS": "地址",
+    "VERSION": "版本",
+    "PRO_MSG_TPS": "生产消息TPS",
+    "CUS_MSG_TPS": "消费消息TPS",
+    "YESTERDAY_PRO_COUNT": "昨日生产总数",
+    "YESTERDAY_CUS_COUNT": "昨日消费总数",
+    "TODAY_PRO_COUNT": "今天生产总数",
+    "TODAY_CUS_COUNT": "今天消费总数",
+    "INSTANCE": "实例",
+    "SPLIT": "分片",
+    "CLUSTER": "集群",
+    "CLUSTER_DETAIL": "集群详情",
+    "COMMIT": "提交",
+    "TOPIC": "主题",
+    "SUBSCRIPTION_GROUP":"订阅组",
+    "PRODUCER_GROUP":"生产组",
+    "CONSUMER":"消费者",
+    "PRODUCER":"生产者",
+    "MESSAGE":"消息",
+    "OPERATION": "操作",
+    "ADD": "新增",
+    "UPDATE": "更新",
+    "STATUS": "状态",
+    "ROUTER": "路由",
+    "MANAGE": "管理",
+    "CONFIG": "配置",
+    "SEND_MSG": "发送消息",
+    "RESET_CUS_OFFSET": "重置消费位点",
+    "DELETE": "删除",
+    "CHANGE_LANG": "更换语言",
+    "BROKER": "Broker",
+    "NORMAL": "普通",
+    "RETRY": "重试",
+    "DLQ": "死信",
+    "QUANTITY":"数量",
+    "TYPE":"类型",
+    "MODE":"模式",
+    "DELAY":"延迟",
+    "DASHBOARD":"驾驶舱",
+    "CONSUME_DETAIL":"消费详情",
+    "CLIENT":"终端",
+    "LAST_CONSUME_TIME":"最后消费时间",
+    "TIME":"时间点",
+    "RESET":"重置",
+    "DATE":"日期",
+    "NO_DATA":"暂无数据",
+    "SEARCH":"搜索",
+    "BEGIN":"开始",
+    "END":"结束",
+    "TOPIC_CHANGE":"修改主题",
+    "SEND":"发送",
+    "SUBSCRIPTION_CHANGE":"修改订阅",
+    "QUEUE":"队列",
+	"MIN_OFFSET":"最小位点",
+	"MAX_OFFSET":"最大位点",
+	"LAST_UPDATE_TIME_STAMP":"上次更新时间",
+    "QUEUE_DATAS":"队列信息",
+    "READ_QUEUE_NUMS":"读队列数量",
+    "WRITE_QUEUE_NUMS":"写队列数量",
+    "PERM":"perm",
+    "TAG":"标签",
+    "KEY":"值",
+    "MESSAGE_BODY":"消息主体",
+    "TOPIC_NAME":"主题名",
+    "ORDER":"顺序",
+    "CONSUMER_CLIENT":"消费者终端",
+    "BROKER_OFFSET":"代理者位点",
+    "CONSUMER_OFFSET":"消费者位点",
+    "DIFF_TOTAL":"差值",
+    "LAST_TIME_STAMP":"上次时间",
+    "RESET_OFFSET":"重置位点",
+    "CLUSTER_NAME":"集群名",
+    "OPS":"运维",
+    "AUTO_REFRESH":"自动刷新",
+    "REFRESH":"刷新"
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/src/message.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/src/message.js b/rocketmq-console/src/main/resources/static/src/message.js
new file mode 100644
index 0000000..fca286c
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/src/message.js
@@ -0,0 +1,200 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var module = app;
+
+module.controller('messageController', ['$scope', 'ngDialog', '$http','Notification',function ($scope, ngDialog, $http,Notification) {
+    $scope.allTopicList = [];
+    $scope.selectedTopic =[];
+    $scope.key ="";
+    $scope.messageId ="";
+    $scope.queryMessageByTopicResult=[];
+    $scope.queryMessageByTopicAndKeyResult=[];
+    $scope.queryMessageByMessageIdResult={};
+    $http({
+        method: "GET",
+        url: "topic/list.query"
+    }).success(function (resp) {
+        if(resp.status ==0){
+            $scope.allTopicList = resp.data.topicList.sort();
+            console.log($scope.allTopicList);
+        }else {
+            Notification.error({message: resp.errMsg, delay: 2000});
+        }
+    });
+    $scope.timepickerBegin = moment().subtract(1, 'hour').format('YYYY-MM-DD HH:mm');
+    $scope.timepickerEnd = moment().add(1,'hour').format('YYYY-MM-DD HH:mm');
+    $scope.timepickerOptions ={format: 'YYYY-MM-DD HH:mm', showClear: true};
+
+    $scope.paginationConf = {
+        currentPage: 1,
+        totalItems: 0,
+        itemsPerPage: 20,
+        pagesLength: 15,
+        perPageOptions: [10],
+        rememberPerPage: 'perPageItems',
+        onChange: function () {
+            $scope.changeShowMessageList(this.currentPage,this.totalItems);
+        }
+    };
+
+
+    $scope.queryMessageByTopic = function () {
+        console.log($scope.selectedTopic);
+        console.log($scope.timepickerBegin)
+        console.log($scope.timepickerEnd)
+        $http({
+            method: "GET",
+            url: "message/queryMessageByTopic.query",
+            params: {
+                topic: $scope.selectedTopic,
+                begin: $scope.timepickerBegin.valueOf(),
+                end: $scope.timepickerEnd.valueOf()
+
+            }
+        }).success(function (resp) {
+            if (resp.status == 0) {
+                console.log(resp);
+                $scope.queryMessageByTopicResult = resp.data;
+                $scope.changeShowMessageList(1,$scope.queryMessageByTopicResult.length);
+                // todo
+                // console.log($scope.queryMessageByTopicResult);
+            }else {
+                Notification.error({message: resp.errMsg, delay: 2000});
+            }
+        });
+    };
+
+    $scope.queryMessageByTopicAndKey = function () {
+        console.log($scope.selectedTopic);
+        console.log($scope.key);
+        $http({
+            method: "GET",
+            url: "message/queryMessageByTopicAndKey.query",
+            params: {
+                topic: $scope.selectedTopic,
+                key:$scope.key
+            }
+        }).success(function (resp) {
+            if (resp.status == 0) {
+                console.log(resp);
+                $scope.queryMessageByTopicAndKeyResult = resp.data;
+                console.log($scope.queryMessageByTopicAndKeyResult);
+            }else {
+                Notification.error({message: resp.errMsg, delay: 2000});
+            }
+        });
+    };
+
+    $scope.queryMessageByBrokerAndOffset = function (storeHost,commitLogOffset) {
+        $http({
+            method: "GET",
+            url: "message/viewMessageByBrokerAndOffset.query",
+            params: {
+                brokerHost: storeHost.address,
+                port:storeHost.port,
+                offset: commitLogOffset
+            }
+        }).success(function (resp) {
+            if (resp.status == 0) {
+                console.log(resp);
+                ngDialog.open({
+                    template: 'messageDetailViewDialog',
+                    controller: 'messageDetailViewDialogController',
+                    data: resp.data
+                });
+            } else {
+                Notification.error({message: resp.errMsg, delay: 2000});
+            }
+        });
+    };
+
+    $scope.queryMessageByMessageId = function (messageId,topic) {
+        $http({
+            method: "GET",
+            url: "message/viewMessage.query",
+            params: {
+                msgId: messageId,
+                topic:topic
+            }
+        }).success(function (resp) {
+            if (resp.status == 0) {
+                console.log(resp);
+                ngDialog.open({
+                    template: 'messageDetailViewDialog',
+                    controller: 'messageDetailViewDialogController',
+                    data:resp.data
+                });
+            }else {
+                Notification.error({message: resp.errMsg, delay: 2000});
+            }
+        });
+    };
+
+
+    $scope.changeShowMessageList = function (currentPage,totalItem) {
+        var perPage = $scope.paginationConf.itemsPerPage;
+        var from = (currentPage - 1) * perPage;
+        var to = (from + perPage)>totalItem?totalItem:from + perPage;
+        $scope.messageShowList = $scope.queryMessageByTopicResult.slice(from, to);
+        $scope.paginationConf.totalItems = totalItem ;
+    };
+}]);
+
+module.controller('messageDetailViewDialogController',['$scope', 'ngDialog', '$http','Notification', function ($scope, ngDialog, $http,Notification) {
+
+        $scope.resendMessage = function (msgId,topic,consumerGroup) {
+            $http({
+                method: "POST",
+                url: "message/consumeMessageDirectly.do",
+                params: {
+                    msgId: msgId,
+                    consumerGroup:consumerGroup,
+                    topic:topic
+                }
+            }).success(function (resp) {
+                if (resp.status == 0) {
+                    ngDialog.open({
+                        template: 'operationResultDialog',
+                        data:{
+                            result:resp.data
+                        }
+                    });
+                }
+                else {
+                    ngDialog.open({
+                        template: 'operationResultDialog',
+                        data:{
+                            result:resp.errMsg
+                        }
+                    });
+                }
+            });
+        };
+        $scope.showExceptionDesc = function (errmsg) {
+            if(errmsg == null){
+                errmsg = "Don't have Exception"
+            }
+            ngDialog.open({
+                template: 'operationResultDialog',
+                data:{
+                    result:errmsg
+                }
+            });
+        };
+    }]
+);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/src/ops.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/src/ops.js b/rocketmq-console/src/main/resources/static/src/ops.js
new file mode 100644
index 0000000..312e41f
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/src/ops.js
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+app.controller('opsController', ['$scope','$location','$http','Notification','remoteApi','tools', function ($scope,$location,$http,Notification,remoteApi,tools) {
+    $scope.namesvrAddrList = [];
+    $scope.useVIPChannel = true;
+    $http({
+        method: "GET",
+        url: "ops/homePage.query"
+    }).success(function (resp) {
+        if (resp.status == 0) {
+            $scope.namesvrAddrList = resp.data.namesvrAddrList;
+            $scope.useVIPChannel = resp.data.useVIPChannel
+        }else{
+            Notification.error({message: resp.errMsg, delay: 2000});
+        }
+    });
+
+    $scope.updateNameSvrAddr = function () {
+        $http({
+            method: "POST",
+            url: "ops/updateNameSvrAddr.do",
+            params:{nameSvrAddrList:$scope.namesvrAddrList.join(";")}
+        }).success(function (resp) {
+            if (resp.status == 0) {
+                Notification.info({message: "SUCCESS", delay: 2000});
+            }else{
+                Notification.error({message: resp.errMsg, delay: 2000});
+            }
+        });
+    };
+    $scope.updateIsVIPChannel = function () {
+        $http({
+            method: "POST",
+            url: "ops/updateIsVIPChannel.do",
+            params:{useVIPChannel:$scope.useVIPChannel}
+        }).success(function (resp) {
+            if (resp.status == 0) {
+                Notification.info({message: "SUCCESS", delay: 2000});
+            }else{
+                Notification.error({message: resp.errMsg, delay: 2000});
+            }
+        });
+    }
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/src/producer.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/src/producer.js b/rocketmq-console/src/main/resources/static/src/producer.js
new file mode 100644
index 0000000..3c039ad
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/src/producer.js
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var module = app;
+module.controller('producerController', ['$scope', '$http','Notification',function ($scope, $http,Notification) {
+    $scope.selectedTopic=[];
+    $scope.producerGroup="";
+    $http({
+        method: "GET",
+        url: "topic/list.query"
+    }).success(function (resp) {
+        if(resp.status ==0){
+            $scope.allTopicList = resp.data.topicList.sort();
+            console.log($scope.allTopicList);
+        }else {
+            Notification.error({message: resp.errMsg, delay: 2000});
+        }
+    });
+    $scope.queryClientByTopicAndGroup = function () {
+        $http({
+            method: "GET",
+            url: "producer/producerConnection.query",
+            params:{
+                topic:$scope.selectedTopic,
+                producerGroup:$scope.producerGroup
+            }
+        }).success(function (resp) {
+            if(resp.status ==0){
+                $scope.connectionList = resp.data.connectionSet;
+            }else {
+                Notification.error({message: resp.errMsg, delay: 2000});
+            }
+        });
+    }
+} ]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/src/remoteApi/remoteApi.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/src/remoteApi/remoteApi.js b/rocketmq-console/src/main/resources/static/src/remoteApi/remoteApi.js
new file mode 100644
index 0000000..1189771
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/src/remoteApi/remoteApi.js
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+app.service('remoteApi', ['$http','tools', function ($http,tools) {
+    var queryTopic = function(callback){
+        $http({
+            method: "GET",
+            url: "topic/list.query"
+        }).success(callback);
+    }
+
+    var queryClusterList = function(callback){
+        $http({
+            method: "GET",
+            url: "cluster/list.query"
+        }).success(callback);
+    }
+
+    var queryBrokerHisData = function(date,callback){
+        var url = 'dashboard/broker.query';
+        var data = {date:date};
+        var setting = {
+            type: "GET",
+            data:data,
+            timeout:15000,//data is too large,so master set time out is long enough
+            success:callback
+        }
+        $.ajax(url,setting)
+    }
+
+    var queryTopicHisData = function(date,topicName,callback){
+        var url =  'dashboard/topic.query';
+        var data = {date:date,topicName:topicName};
+        var setting = {
+            type: "GET",
+            data:data,
+            timeout:15000,//data is too large,so master set time out is long enough
+            success:callback
+        }
+        $.ajax(url,setting)
+    }
+
+    var queryTopicCurrentData = function(callback){
+        var url = 'dashboard/topicCurrent';
+        var setting = {
+            type: "GET",
+            timeout:15000,//data is too large,so master set time out is long enough
+            success:callback
+        }
+        $.ajax(url,setting)
+    }
+
+
+    return {
+        queryTopic:queryTopic,
+        queryClusterList:queryClusterList,
+        queryBrokerHisData:queryBrokerHisData,
+        queryTopicHisData:queryTopicHisData,
+        queryTopicCurrentData:queryTopicCurrentData
+    }
+}])
+

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/src/tools/tools.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/src/tools/tools.js b/rocketmq-console/src/main/resources/static/src/tools/tools.js
new file mode 100644
index 0000000..9ab5ae7
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/src/tools/tools.js
@@ -0,0 +1,85 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+app.service('tools', ['$http', function ($http) {
+
+    var ctx = "";
+    var dashboardRefreshTime = 5000; // todo improve. when data size is large,request is too slow
+
+    var generateBrokerMap = function (brokerServer, clusterAddrTable, brokerAddrTable) {
+        var map = {};
+        $.each(brokerServer, function (brokerName, brokerStatusList) { // broker
+            $.each(clusterAddrTable, function (clusterName, brokerNameList) { //clusterAddrTable
+                if (angular.isUndefined(map[clusterName])) {
+                    map[clusterName] = [];
+                }
+                $.each(brokerNameList, function (listIndex, clusterBrokerName) {
+                    if (clusterBrokerName == brokerName) {
+                        $.each(brokerStatusList, function (index, brokerStatus) {
+                            brokerStatus.split = brokerName;
+                            brokerStatus.index = index;
+                            brokerStatus.address = brokerAddrTable[clusterBrokerName].brokerAddrs[index];
+                            brokerStatus.brokerName = brokerAddrTable[clusterBrokerName].brokerName;
+                            map[clusterName].push(brokerStatus);
+                        })
+                    }
+                })
+            })
+        });
+        return map;
+    };
+
+    var fastSort = function (arrayToSort, propertyToSortWith, sortDirection) {
+        // temporary holder of position and sort-value
+        var map = arrayToSort.map(function (e, i) {
+            if (typeof e[propertyToSortWith] === 'string') {
+                return { index: i, value: e[propertyToSortWith].toLowerCase() };
+            }
+            else {
+                return { index: i, value: e[propertyToSortWith] };
+            }
+
+        })
+
+        // sorting the map containing the reduced values
+        map.sort(function (a, b) {
+            if (sortDirection === "ascending") {
+                return +(a.value > b.value) || +(a.value === b.value) - 1;
+            }
+            else {
+                return +(a.value < b.value) || +(a.value === b.value) - 1;
+            }
+
+        });
+
+        // container for the resulting order
+        var result = map.map(function (e) {
+            return arrayToSort[e.index];
+        });
+        return result;
+    };
+
+    return {
+        generateBrokerMap:generateBrokerMap,
+        fastSort:fastSort,
+        ctx:ctx,
+        dashboardRefreshTime:dashboardRefreshTime
+    }
+}])
+
+
+

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/src/topic.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/src/topic.js b/rocketmq-console/src/main/resources/static/src/topic.js
new file mode 100644
index 0000000..047fbe2
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/src/topic.js
@@ -0,0 +1,406 @@
+/**
+ * Created by tcrow on 2017/1/12 0012.
+ */
+var module = app;
+
+module.directive('ngConfirmClick', [
+    function(){
+        return {
+            link: function (scope, element, attr) {
+                var msg = attr.ngConfirmClick || "Are you sure?";
+                var clickAction = attr.confirmedClick;
+                element.bind('click',function (event) {
+                    if ( window.confirm(msg) ) {
+                        scope.$eval(clickAction)
+                    }
+                });
+            }
+        };
+    }]);
+module.controller('topicController', ['$scope', 'ngDialog', '$http','Notification',function ($scope, ngDialog, $http,Notification) {
+    $scope.paginationConf = {
+        currentPage: 1,
+        totalItems: 0,
+        itemsPerPage: 10,
+        pagesLength: 15,
+        perPageOptions: [10],
+        rememberPerPage: 'perPageItems',
+        onChange: function () {
+            $scope.showTopicList(this.currentPage,this.totalItems);
+
+        }
+    };
+    $scope.filterNormal = true
+    $scope.filterRetry = false
+    $scope.filterDLQ = false
+    $scope.allTopicList = [];
+    $scope.topicShowList = [];
+    $http({
+        method: "GET",
+        url: "topic/list.query"
+    }).success(function (resp) {
+        if(resp.status ==0){
+            $scope.allTopicList = resp.data.topicList.sort();
+            console.log($scope.allTopicList);
+            console.log(JSON.stringify(resp));
+            $scope.showTopicList(1,$scope.allTopicList.length);
+
+        }else {
+            Notification.error({message: resp.errMsg, delay: 5000});
+        }
+
+    });
+    $scope.filterStr="";
+    $scope.$watch('filterStr', function() {
+        $scope.filterList(1);
+    });
+    $scope.$watch('filterNormal', function() {
+        $scope.filterList(1);
+    });
+    $scope.$watch('filterRetry', function() {
+        $scope.filterList(1);
+    });
+    $scope.$watch('filterDLQ', function() {
+        $scope.filterList(1);
+    });
+    $scope.filterList = function (currentPage) {
+        var lowExceptStr =  $scope.filterStr.toLowerCase();
+        var canShowList = [];
+
+        $scope.allTopicList.forEach(function(element) {
+            if($scope.filterByType(element)){
+                if (element.toLowerCase().indexOf(lowExceptStr) != -1){
+                    canShowList.push(element);
+                }
+            }
+        });
+        $scope.paginationConf.totalItems =canShowList.length;
+        var perPage = $scope.paginationConf.itemsPerPage;
+        var from = (currentPage - 1) * perPage;
+        var to = (from + perPage)>canShowList.length?canShowList.length:from + perPage;
+        $scope.topicShowList = canShowList.slice(from, to);
+    };
+
+    $scope.filterByType = function(str){
+            if($scope.filterRetry){
+                if(str.startsWith("%R")){
+                    return true
+                }
+            }
+            if($scope.filterDLQ){
+                if(str.startsWith("%D")){
+                    return true
+                }
+            }
+            if($scope.filterNormal){
+                if(str.startsWith("%") == false){
+                    return true
+                }
+            }
+        return false;
+    };
+
+    $scope.showTopicList = function (currentPage,totalItem) {
+        if($scope.filterStr != ""){
+            $scope.filterList(currentPage);
+            return;
+        }
+        var perPage = $scope.paginationConf.itemsPerPage;
+        var from = (currentPage - 1) * perPage;
+        var to = (from + perPage)>totalItem?totalItem:from + perPage;
+        console.log($scope.allTopicList);
+        console.log(from)
+        console.log(to)
+        $scope.topicShowList = $scope.allTopicList.slice(from, to);
+        $scope.paginationConf.totalItems = totalItem ;
+        console.log($scope.topicShowList)
+        console.log($scope.paginationConf.totalItems)
+        $scope.filterList(currentPage);
+    };
+    $scope.deleteTopic= function (topic) {
+        $http({
+            method: "POST",
+            url: "topic/deleteTopic.do",
+            params:{
+                topic:topic
+            }
+        }).success(function (resp) {
+            if(resp.status ==0){
+                Notification.info({message: "delete success!", delay: 2000});
+            }else {
+                Notification.error({message: resp.errMsg, delay: 2000});
+            }
+        });
+    };
+    $scope.statsView = function (topic) {
+        $http({
+            method: "GET",
+            url: "topic/stats.query",
+            params: {topic: topic}
+        }).success(function (resp) {
+            if (resp.status == 0) {
+                console.log(JSON.stringify(resp));
+                ngDialog.open({
+                    template: 'statsViewDialog',
+                    trapFocus:false,
+                    data:{
+                        topic:topic,
+                        statsData:resp.data
+                    }
+                });
+            }else {
+                Notification.error({message: resp.errMsg, delay: 2000});
+            }
+        })
+    };
+    $scope.routerView = function (topic) {
+        $http({
+            method: "GET",
+            url: "topic/route.query",
+            params: {topic: topic}
+        }).success(function (resp) {
+            if (resp.status == 0) {
+                console.log(JSON.stringify(resp));
+                ngDialog.open({
+                    template: 'routerViewDialog',
+                    controller: 'routerViewDialogController',
+                    trapFocus:false,
+                    data:{
+                        topic:topic,
+                        routeData:resp.data
+                    }
+                });
+            }else {
+                Notification.error({message: resp.errMsg, delay: 2000});
+            }
+        })
+    };
+
+
+    $scope.consumerView = function (topic) {
+        $http({
+            method: "GET",
+            url: "topic/queryConsumerByTopic.query",
+            params: {topic: topic}
+        }).success(function (resp) {
+            if (resp.status == 0) {
+                console.log(JSON.stringify(resp));
+                ngDialog.open({
+                    template: 'consumerViewDialog',
+                    data:{
+                        topic:topic,
+                        consumerData:resp.data,
+                        consumerGroupCount:Object.keys(resp.data).length
+                    }
+                });
+            }else {
+                Notification.error({message: resp.errMsg, delay: 2000});
+            }
+        })
+    };
+    $scope.openDeleteTopicDialog = function (topic) {
+        ngDialog.open({
+            template: 'deleteTopicDialog',
+            controller: 'deleteTopicDialogController',
+            data:{
+                topic:topic,
+                consumerData:"asd"
+            }
+        });
+    };
+
+    $scope.openConsumerResetOffsetDialog = function (topic) {
+
+        $http({
+            method: "GET",
+            url: "topic/queryTopicConsumerInfo.query",
+            params:{
+                topic:topic
+            }
+        }).success(function (resp) {
+            if(resp.status ==0){
+                if(resp.data.groupList == null){
+                    Notification.error({message: "don't have consume group!", delay: 2000});
+                    return
+                }
+                ngDialog.open({
+                    template: 'consumerResetOffsetDialog',
+                    controller: 'consumerResetOffsetDialogController',
+                    data:{
+                        topic: topic,
+                        selectedConsumerGroup:[],
+                        allConsumerGroupList:resp.data.groupList
+                    }
+                });
+            }else {
+                Notification.error({message: resp.errMsg, delay: 2000});
+            }
+        });
+
+    };
+
+
+    $scope.openSendTopicMessageDialog = function (topic) {
+        ngDialog.open({
+            template: 'sendTopicMessageDialog',
+            controller: 'sendTopicMessageDialogController',
+            data: {
+                topic: topic
+            }
+        });
+    };
+
+    $scope.openUpdateDialog = function (topic) {
+        $http({
+            method: "GET",
+            url: "topic/examineTopicConfig.query",
+            params:{
+                topic:topic
+            }
+        }).success(function (resp) {
+            if(resp.status ==0){
+                $scope.openCreateOrUpdateDialog(resp.data);
+            }else {
+                Notification.error({message: resp.errMsg, delay: 2000});
+            }
+        });
+    };
+
+    $scope.openCreateOrUpdateDialog = function (request) {
+        var bIsUpdate = true;
+
+        if(request == null){
+            request = [{
+                writeQueueNums:16,
+                readQueueNums:16,
+                perm:6,
+                order:false,
+                topicName:"",
+                brokerNameList:[]
+            }];
+            bIsUpdate = false;
+        }
+        $http({
+            method: "GET",
+            url: "cluster/list.query"
+        }).success(function (resp) {
+            if(resp.status ==0){
+                console.log(resp);
+                ngDialog.open({
+                    template: 'topicModifyDialog',
+                    controller: 'topicModifyDialogController',
+                    data:{
+                        topicRequestList:request,
+                        allClusterNameList:Object.keys(resp.data.clusterInfo.clusterAddrTable),
+                        allBrokerNameList:Object.keys(resp.data.brokerServer),
+                        bIsUpdate:bIsUpdate
+                    }
+                });
+            }
+        });
+    }
+
+    $scope.openAddDialog = function () {
+        $scope.openCreateOrUpdateDialog(null);
+    }
+
+}]);
+
+module.controller('topicModifyDialogController', ['$scope', 'ngDialog', '$http','Notification',function ($scope, ngDialog, $http,Notification) {
+        $scope.postTopicRequest = function (topicRequestItem) {
+            console.log(topicRequestItem);
+            var request = JSON.parse(JSON.stringify(topicRequestItem));
+            console.log(request);
+            $http({
+                method: "POST",
+                url: "topic/createOrUpdate.do",
+                data:request
+            }).success(function (resp) {
+                if(resp.status ==0){
+                    Notification.info({message: "success!", delay: 2000});
+                }else {
+                    Notification.error({message: resp.errMsg, delay: 2000});
+                }
+            });
+        }
+    }]
+);
+module.controller('consumerResetOffsetDialogController',['$scope', 'ngDialog', '$http','Notification', function ($scope, ngDialog, $http,Notification) {
+        $scope.timepicker = {};
+        $scope.timepicker.date = moment().format('YYYY-MM-DD HH:mm');
+        $scope.timepicker.options = {format: 'YYYY-MM-DD HH:mm', showClear: true};
+        $scope.resetOffset = function () {
+            console.log($scope.timepicker.date);
+            console.log($scope.timepicker.date.valueOf());
+            console.log($scope.ngDialogData.selectedConsumerGroup);
+            $http({
+                method: "POST",
+                url: "consumer/resetOffset.do",
+                data: {
+                    resetTime: $scope.timepicker.date.valueOf(),
+                    consumerGroupList: $scope.ngDialogData.selectedConsumerGroup,
+                    topic:$scope.ngDialogData.topic,
+                    force:true
+                }
+            }).success(function (resp) {
+                if(resp.status ==0){
+                    ngDialog.open({
+                        template: 'resetOffsetResultDialog',
+                        data:{
+                            result:resp.data
+                        }
+                    });
+                }else {
+                    Notification.error({message: resp.errMsg, delay: 2000});
+                }
+            })
+        }
+    }]
+);
+
+module.controller('sendTopicMessageDialogController', ['$scope', 'ngDialog', '$http','Notification',function ($scope, ngDialog, $http,Notification) {
+        $scope.sendTopicMessage = {
+            topic: $scope.ngDialogData.topic,
+            key: "key",
+            tag:"tag",
+            messageBody:"messageBody"
+        };
+        $scope.send = function () {
+            $http({
+                method: "POST",
+                url: "topic/sendTopicMessage.do",
+                data: $scope.sendTopicMessage
+            }).success(function (resp) {
+                if(resp.status ==0){
+                    ngDialog.open({
+                        template: 'sendResultDialog',
+                        data:{
+                            result:resp.data
+                        }
+                    });
+                }else {
+                    Notification.error({message: resp.errMsg, delay: 2000});
+                }
+            })
+        }
+    }]
+
+);
+
+module.controller('routerViewDialogController', ['$scope', 'ngDialog', '$http','Notification',function ($scope, ngDialog, $http,Notification) {
+        $scope.deleteTopicByBroker = function (broker) {
+            $http({
+                method: "POST",
+                url: "topic/deleteTopicByBroker.do",
+                params: {brokerName:broker.brokerName,topic:$scope.ngDialogData.topic}
+            }).success(function (resp) {
+                if(resp.status ==0){
+                    Notification.info({message: "delete success", delay: 2000});
+                }else {
+                    Notification.error({message: resp.errMsg, delay: 2000});
+                }
+            })
+        };
+    }]
+
+);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/style/animate.css
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/style/animate.css b/rocketmq-console/src/main/resources/static/style/animate.css
new file mode 100644
index 0000000..e3f0d0e
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/style/animate.css
@@ -0,0 +1,32 @@
+.view {
+}
+
+.view .ng-enter {
+    overflow-y: auto;
+}
+
+.view .ng-leave {
+    opacity: 0;
+    -webkit-transition: opacity .2s linear;
+    transition: opacity 0.2s linear;
+}
+
+.ng-hide-add {
+    transform: rotateZ(0);
+    transform-origin: right;
+    transition: all 0.2s ease-in-out;
+}
+
+.ng-hide-add.ng-hide-add-active {
+    transform: rotateZ(-135deg);
+}
+
+.ng-hide-remove {
+    transform: rotateY(90deg);
+    transform-origin: left;
+    transition: all 0.2s ease;
+}
+
+.ng-hide-remove.ng-hide-remove-active {
+    transform: rotateY(0);
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/style/app.css
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/style/app.css b/rocketmq-console/src/main/resources/static/style/app.css
new file mode 100644
index 0000000..1941c11
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/style/app.css
@@ -0,0 +1,274 @@
+/* Write your styles */
+.scrollTo {
+    position: fixed;
+    right: 50px;
+    bottom: 70px;
+    z-index: 999;
+}
+
+/*.icon_u_c{background:url(/app/img/icon_user_center.png) no-repeat left top;}*/
+.icon {
+     float: left;
+     width: 24px;
+     height: 24px;
+     display: inline-block;
+     margin: 10px 18px 0 5px;
+}
+.icon_alipay {
+    background:url("/style/img/alipay.png") no-repeat left top;
+    height:100px;
+    width: 100px;
+    margin-top: -40px;
+}
+
+.icon_alipay_active {
+    background:url("/style/img/alipay_active.png") no-repeat left top;
+    height:100px;
+    width: 100px;
+    margin-top: -40px;
+}
+
+.icon_weipay {
+    background:url("/style/img/weipay.png") no-repeat left top;
+    height:100px;
+    width: 100px;
+    margin-top: -40px;
+}
+
+.icon_weipay_active {
+    background:url("/style/img/weipay_active.png") no-repeat left top;
+    height:100px;
+    width: 100px;
+    margin-top: -40px;
+}
+
+.round {
+    background:#5bc0de;
+    -moz-border-radius: 5px;
+    -webkit-border-radius: 5px;
+    border-radius:5px;
+    color: #FFFFFF;
+}
+
+
+/* ANIMATIONS
+============================================================================= */
+
+/* leaving animations ----------------------------------------- */
+/* rotate and fall */
+@keyframes rotateFall {
+    0%     { transform: rotateZ(0deg); }
+    20%   { transform: rotateZ(10deg); animation-timing-function: ease-out; }
+    40%   { transform: rotateZ(17deg); }
+    60%   { transform: rotateZ(16deg); }
+    100%   { transform: translateY(100%) rotateZ(17deg); }
+}
+
+/* slide in from the bottom */
+@keyframes slideOutLeft {
+    to     { transform: translateX(-100%); }
+}
+
+/*!* rotate out newspaper *!*/
+@keyframes rotateOutNewspaper {
+    to     { transform: translateZ(-3000px) rotateZ(360deg); opacity: 0; }
+}
+
+/* entering animations --------------------------------------- */
+/* scale up */
+@keyframes scaleUp {
+    from   { opacity: 0.3; -webkit-transform: scale(0.8); }
+}
+
+/* slide in from the right */
+@keyframes slideInRight {
+    from   { transform:translateX(100%); }
+    to     { transform: translateX(0); }
+}
+
+/* slide in from the bottom */
+@keyframes slideInUp {
+    from   { transform:translateY(100%); }
+    to     { transform: translateY(0); }
+}
+
+.ng-enter       { animation: scaleUp 0.5s both ease-in; z-index: 8888; }
+.ng-leave       { animation: slideOutLeft 0.2s both ease-in; z-index: 9999; }
+
+
+
+
+.managerList {
+    list-style:none;
+    position: relative;
+    width: 100%;
+    margin-left: 20px;
+}
+
+.managerList > li {
+    width: 95%;
+    margin-top:10px;
+}
+
+.managerList ul {
+    list-style-type:none;
+    float:left;
+    padding: 0;
+}
+
+.managerList li {
+    list-style-type:none;
+    float:left;
+    padding: 0;
+}
+
+.managerList .head {
+    width: 90%;
+}
+
+.managerList .footer {
+    width: 90%;
+    margin-top: 10px;
+    margin-left: 50px;
+}
+
+.managerList .checkbox {
+    width: 50px;
+}
+
+.managerList .liCheck {
+    width: 50px;
+}
+
+.managerList .liContent {
+    width: 90%;
+}
+
+.managerList .preview {
+    width: 50%;
+    margin-left: 50px;
+    margin-top: 10px;
+}
+
+.managerList .logo {
+    margin-top: 9px;
+    width: 50px;
+}
+
+.managerList .content{
+    width: 50%;
+}
+
+.managerList .content ul{
+    width: 90%;
+}
+
+.managerList .butt{
+    /*width: 20%;*/
+}
+
+.badgeCustomer {
+    background-color:#f44336;
+    margin-top:23px;
+}
+
+.chatPanel {
+    width: 90%;
+    float: left;
+    border: 1px solid #d4d4d4;
+    border-radius: 2px;
+    padding: 20px;
+    position: relative;
+    -webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.175);
+    box-shadow: 0 1px 6px rgba(0, 0, 0, 0.175);
+    float: right;
+}
+
+.chatPanel:after{
+    position: absolute;
+    top: 27px;
+    right: -14px;
+    display: inline-block;
+    border-top: 14px solid transparent;
+    border-left: 14px solid #fff;
+    border-right: 0 solid #fff;
+    border-bottom: 14px solid transparent;
+    content: " ";
+}
+
+.chatPanel:before{
+    position: absolute;
+    top: 26px;
+    right: -15px;
+    display: inline-block;
+    border-top: 15px solid transparent;
+    border-left: 15px solid #ccc;
+    border-right: 0 solid #ccc;
+    border-bottom: 15px solid transparent;
+    content: " ";
+}
+
+.chatPanel-left {
+    float: left;
+}
+.chatPanel-left:before {
+    border-left-width: 0;
+    border-right-width: 15px;
+    left: -15px;
+    right: auto;
+}
+.chatPanel-left:after {
+    border-left-width: 0;
+    border-right-width: 14px;
+    left: -14px;
+    right: auto;
+}
+
+.xxs-avatar {
+    width: 10px;
+    height: 10px;
+}
+
+
+.xs-avatar {
+    width: 50px;
+    height: 50px;
+}
+
+.md-avatar {
+    width: 70px;
+    height: 70px;
+}
+
+.lg-avatar {
+    width: 100px;
+    height: 100px;
+}
+
+.text-truncate {
+    word-wrap: normal;
+    /* for IE */
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    overflow: hidden;
+}
+
+.text-yellow {
+    color:#FFCC66;
+}
+
+.label-xl{
+    font-size:150%;
+}
+
+.pointer {
+    cursor: pointer;
+}
+
+.limit_height{
+    height: 600px;overflow-y:auto;overflow-x:hidden;
+}
+
+.table.text-middle>tbody>tr>td,.table.text-middle>tbody>tr>th{
+    vertical-align: middle;
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/style/btn.css
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/style/btn.css b/rocketmq-console/src/main/resources/static/style/btn.css
new file mode 100644
index 0000000..29d4186
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/style/btn.css
@@ -0,0 +1,752 @@
+
+.btn,
+.navbar .navbar-nav > li > a.btn {
+    border: none;
+    border-radius: 3px;
+    position: relative;
+    padding: 12px 30px;
+    margin: 10px 1px;
+    font-size: 12px;
+    font-weight: 400;
+    text-transform: uppercase;
+    letter-spacing: 0;
+    will-change: box-shadow, transform;
+    transition: box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1), background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1);
+}
+.btn::-moz-focus-inner,
+.navbar .navbar-nav > li > a.btn::-moz-focus-inner {
+    border: 0;
+}
+.btn, .btn.btn-default,
+.navbar .navbar-nav > li > a.btn,
+.navbar .navbar-nav > li > a.btn.btn-default {
+    box-shadow: 0 2px 2px 0 rgba(153, 153, 153, 0.14), 0 3px 1px -2px rgba(153, 153, 153, 0.2), 0 1px 5px 0 rgba(153, 153, 153, 0.12);
+}
+.btn, .btn:hover, .btn:focus, .btn:active, .btn.active, .btn:active:focus, .btn:active:hover, .btn.active:focus, .btn.active:hover, .open > .btn.dropdown-toggle, .open > .btn.dropdown-toggle:focus, .open > .btn.dropdown-toggle:hover, .btn.btn-default, .btn.btn-default:hover, .btn.btn-default:focus, .btn.btn-default:active, .btn.btn-default.active, .btn.btn-default:active:focus, .btn.btn-default:active:hover, .btn.btn-default.active:focus, .btn.btn-default.active:hover, .open > .btn.btn-default.dropdown-toggle, .open > .btn.btn-default.dropdown-toggle:focus, .open > .btn.btn-default.dropdown-toggle:hover,
+.navbar .navbar-nav > li > a.btn,
+.navbar .navbar-nav > li > a.btn:hover,
+.navbar .navbar-nav > li > a.btn:focus,
+.navbar .navbar-nav > li > a.btn:active,
+.navbar .navbar-nav > li > a.btn.active,
+.navbar .navbar-nav > li > a.btn:active:focus,
+.navbar .navbar-nav > li > a.btn:active:hover,
+.navbar .navbar-nav > li > a.btn.active:focus,
+.navbar .navbar-nav > li > a.btn.active:hover, .open >
+.navbar .navbar-nav > li > a.btn.dropdown-toggle, .open >
+.navbar .navbar-nav > li > a.btn.dropdown-toggle:focus, .open >
+.navbar .navbar-nav > li > a.btn.dropdown-toggle:hover,
+.navbar .navbar-nav > li > a.btn.btn-default,
+.navbar .navbar-nav > li > a.btn.btn-default:hover,
+.navbar .navbar-nav > li > a.btn.btn-default:focus,
+.navbar .navbar-nav > li > a.btn.btn-default:active,
+.navbar .navbar-nav > li > a.btn.btn-default.active,
+.navbar .navbar-nav > li > a.btn.btn-default:active:focus,
+.navbar .navbar-nav > li > a.btn.btn-default:active:hover,
+.navbar .navbar-nav > li > a.btn.btn-default.active:focus,
+.navbar .navbar-nav > li > a.btn.btn-default.active:hover, .open >
+.navbar .navbar-nav > li > a.btn.btn-default.dropdown-toggle, .open >
+.navbar .navbar-nav > li > a.btn.btn-default.dropdown-toggle:focus, .open >
+.navbar .navbar-nav > li > a.btn.btn-default.dropdown-toggle:hover {
+    background-color: #999999;
+    color: #FFFFFF;
+}
+.btn:focus, .btn:active, .btn:hover, .btn.btn-default:focus, .btn.btn-default:active, .btn.btn-default:hover,
+.navbar .navbar-nav > li > a.btn:focus,
+.navbar .navbar-nav > li > a.btn:active,
+.navbar .navbar-nav > li > a.btn:hover,
+.navbar .navbar-nav > li > a.btn.btn-default:focus,
+.navbar .navbar-nav > li > a.btn.btn-default:active,
+.navbar .navbar-nav > li > a.btn.btn-default:hover {
+    box-shadow: 0 14px 26px -12px rgba(153, 153, 153, 0.42), 0 4px 23px 0px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(153, 153, 153, 0.2);
+}
+.btn.disabled, .btn.disabled:hover, .btn.disabled:focus, .btn.disabled.focus, .btn.disabled:active, .btn.disabled.active, .btn:disabled, .btn:disabled:hover, .btn:disabled:focus, .btn:disabled.focus, .btn:disabled:active, .btn:disabled.active, .btn[disabled], .btn[disabled]:hover, .btn[disabled]:focus, .btn[disabled].focus, .btn[disabled]:active, .btn[disabled].active, fieldset[disabled] .btn, fieldset[disabled] .btn:hover, fieldset[disabled] .btn:focus, fieldset[disabled] .btn.focus, fieldset[disabled] .btn:active, fieldset[disabled] .btn.active, .btn.btn-default.disabled, .btn.btn-default.disabled:hover, .btn.btn-default.disabled:focus, .btn.btn-default.disabled.focus, .btn.btn-default.disabled:active, .btn.btn-default.disabled.active, .btn.btn-default:disabled, .btn.btn-default:disabled:hover, .btn.btn-default:disabled:focus, .btn.btn-default:disabled.focus, .btn.btn-default:disabled:active, .btn.btn-default:disabled.active, .btn.btn-default[disabled], .btn.btn-default[disabled]:
 hover, .btn.btn-default[disabled]:focus, .btn.btn-default[disabled].focus, .btn.btn-default[disabled]:active, .btn.btn-default[disabled].active, fieldset[disabled] .btn.btn-default, fieldset[disabled] .btn.btn-default:hover, fieldset[disabled] .btn.btn-default:focus, fieldset[disabled] .btn.btn-default.focus, fieldset[disabled] .btn.btn-default:active, fieldset[disabled] .btn.btn-default.active,
+.navbar .navbar-nav > li > a.btn.disabled,
+.navbar .navbar-nav > li > a.btn.disabled:hover,
+.navbar .navbar-nav > li > a.btn.disabled:focus,
+.navbar .navbar-nav > li > a.btn.disabled.focus,
+.navbar .navbar-nav > li > a.btn.disabled:active,
+.navbar .navbar-nav > li > a.btn.disabled.active,
+.navbar .navbar-nav > li > a.btn:disabled,
+.navbar .navbar-nav > li > a.btn:disabled:hover,
+.navbar .navbar-nav > li > a.btn:disabled:focus,
+.navbar .navbar-nav > li > a.btn:disabled.focus,
+.navbar .navbar-nav > li > a.btn:disabled:active,
+.navbar .navbar-nav > li > a.btn:disabled.active,
+.navbar .navbar-nav > li > a.btn[disabled],
+.navbar .navbar-nav > li > a.btn[disabled]:hover,
+.navbar .navbar-nav > li > a.btn[disabled]:focus,
+.navbar .navbar-nav > li > a.btn[disabled].focus,
+.navbar .navbar-nav > li > a.btn[disabled]:active,
+.navbar .navbar-nav > li > a.btn[disabled].active, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn:hover, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn:focus, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.focus, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn:active, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.active,
+.navbar .navbar-nav > li > a.btn.btn-default.disabled,
+.navbar .navbar-nav > li > a.btn.btn-default.disabled:hover,
+.navbar .navbar-nav > li > a.btn.btn-default.disabled:focus,
+.navbar .navbar-nav > li > a.btn.btn-default.disabled.focus,
+.navbar .navbar-nav > li > a.btn.btn-default.disabled:active,
+.navbar .navbar-nav > li > a.btn.btn-default.disabled.active,
+.navbar .navbar-nav > li > a.btn.btn-default:disabled,
+.navbar .navbar-nav > li > a.btn.btn-default:disabled:hover,
+.navbar .navbar-nav > li > a.btn.btn-default:disabled:focus,
+.navbar .navbar-nav > li > a.btn.btn-default:disabled.focus,
+.navbar .navbar-nav > li > a.btn.btn-default:disabled:active,
+.navbar .navbar-nav > li > a.btn.btn-default:disabled.active,
+.navbar .navbar-nav > li > a.btn.btn-default[disabled],
+.navbar .navbar-nav > li > a.btn.btn-default[disabled]:hover,
+.navbar .navbar-nav > li > a.btn.btn-default[disabled]:focus,
+.navbar .navbar-nav > li > a.btn.btn-default[disabled].focus,
+.navbar .navbar-nav > li > a.btn.btn-default[disabled]:active,
+.navbar .navbar-nav > li > a.btn.btn-default[disabled].active, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-default, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-default:hover, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-default:focus, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-default.focus, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-default:active, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-default.active {
+    box-shadow: none;
+}
+.btn.btn-simple, .btn.btn-default.btn-simple,
+.navbar .navbar-nav > li > a.btn.btn-simple,
+.navbar .navbar-nav > li > a.btn.btn-default.btn-simple {
+    background-color: transparent;
+    color: #999999;
+    box-shadow: none;
+}
+.btn.btn-simple:hover, .btn.btn-simple:focus, .btn.btn-simple:active, .btn.btn-default.btn-simple:hover, .btn.btn-default.btn-simple:focus, .btn.btn-default.btn-simple:active,
+.navbar .navbar-nav > li > a.btn.btn-simple:hover,
+.navbar .navbar-nav > li > a.btn.btn-simple:focus,
+.navbar .navbar-nav > li > a.btn.btn-simple:active,
+.navbar .navbar-nav > li > a.btn.btn-default.btn-simple:hover,
+.navbar .navbar-nav > li > a.btn.btn-default.btn-simple:focus,
+.navbar .navbar-nav > li > a.btn.btn-default.btn-simple:active {
+    background-color: transparent;
+    color: #999999;
+}
+.btn.btn-primary,
+.navbar .navbar-nav > li > a.btn.btn-primary {
+    box-shadow: 0 2px 2px 0 rgba(156, 39, 176, 0.14), 0 3px 1px -2px rgba(156, 39, 176, 0.2), 0 1px 5px 0 rgba(156, 39, 176, 0.12);
+}
+.btn.btn-primary, .btn.btn-primary:hover, .btn.btn-primary:focus, .btn.btn-primary:active, .btn.btn-primary.active, .btn.btn-primary:active:focus, .btn.btn-primary:active:hover, .btn.btn-primary.active:focus, .btn.btn-primary.active:hover, .open > .btn.btn-primary.dropdown-toggle, .open > .btn.btn-primary.dropdown-toggle:focus, .open > .btn.btn-primary.dropdown-toggle:hover,
+.navbar .navbar-nav > li > a.btn.btn-primary,
+.navbar .navbar-nav > li > a.btn.btn-primary:hover,
+.navbar .navbar-nav > li > a.btn.btn-primary:focus,
+.navbar .navbar-nav > li > a.btn.btn-primary:active,
+.navbar .navbar-nav > li > a.btn.btn-primary.active,
+.navbar .navbar-nav > li > a.btn.btn-primary:active:focus,
+.navbar .navbar-nav > li > a.btn.btn-primary:active:hover,
+.navbar .navbar-nav > li > a.btn.btn-primary.active:focus,
+.navbar .navbar-nav > li > a.btn.btn-primary.active:hover, .open >
+.navbar .navbar-nav > li > a.btn.btn-primary.dropdown-toggle, .open >
+.navbar .navbar-nav > li > a.btn.btn-primary.dropdown-toggle:focus, .open >
+.navbar .navbar-nav > li > a.btn.btn-primary.dropdown-toggle:hover {
+    background-color: #9c27b0;
+    color: #FFFFFF;
+}
+.btn.btn-primary:focus, .btn.btn-primary:active, .btn.btn-primary:hover,
+.navbar .navbar-nav > li > a.btn.btn-primary:focus,
+.navbar .navbar-nav > li > a.btn.btn-primary:active,
+.navbar .navbar-nav > li > a.btn.btn-primary:hover {
+    box-shadow: 0 14px 26px -12px rgba(156, 39, 176, 0.42), 0 4px 23px 0px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(156, 39, 176, 0.2);
+}
+.btn.btn-primary.disabled, .btn.btn-primary.disabled:hover, .btn.btn-primary.disabled:focus, .btn.btn-primary.disabled.focus, .btn.btn-primary.disabled:active, .btn.btn-primary.disabled.active, .btn.btn-primary:disabled, .btn.btn-primary:disabled:hover, .btn.btn-primary:disabled:focus, .btn.btn-primary:disabled.focus, .btn.btn-primary:disabled:active, .btn.btn-primary:disabled.active, .btn.btn-primary[disabled], .btn.btn-primary[disabled]:hover, .btn.btn-primary[disabled]:focus, .btn.btn-primary[disabled].focus, .btn.btn-primary[disabled]:active, .btn.btn-primary[disabled].active, fieldset[disabled] .btn.btn-primary, fieldset[disabled] .btn.btn-primary:hover, fieldset[disabled] .btn.btn-primary:focus, fieldset[disabled] .btn.btn-primary.focus, fieldset[disabled] .btn.btn-primary:active, fieldset[disabled] .btn.btn-primary.active,
+.navbar .navbar-nav > li > a.btn.btn-primary.disabled,
+.navbar .navbar-nav > li > a.btn.btn-primary.disabled:hover,
+.navbar .navbar-nav > li > a.btn.btn-primary.disabled:focus,
+.navbar .navbar-nav > li > a.btn.btn-primary.disabled.focus,
+.navbar .navbar-nav > li > a.btn.btn-primary.disabled:active,
+.navbar .navbar-nav > li > a.btn.btn-primary.disabled.active,
+.navbar .navbar-nav > li > a.btn.btn-primary:disabled,
+.navbar .navbar-nav > li > a.btn.btn-primary:disabled:hover,
+.navbar .navbar-nav > li > a.btn.btn-primary:disabled:focus,
+.navbar .navbar-nav > li > a.btn.btn-primary:disabled.focus,
+.navbar .navbar-nav > li > a.btn.btn-primary:disabled:active,
+.navbar .navbar-nav > li > a.btn.btn-primary:disabled.active,
+.navbar .navbar-nav > li > a.btn.btn-primary[disabled],
+.navbar .navbar-nav > li > a.btn.btn-primary[disabled]:hover,
+.navbar .navbar-nav > li > a.btn.btn-primary[disabled]:focus,
+.navbar .navbar-nav > li > a.btn.btn-primary[disabled].focus,
+.navbar .navbar-nav > li > a.btn.btn-primary[disabled]:active,
+.navbar .navbar-nav > li > a.btn.btn-primary[disabled].active, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-primary, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-primary:hover, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-primary:focus, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-primary.focus, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-primary:active, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-primary.active {
+    box-shadow: none;
+}
+.btn.btn-primary.btn-simple,
+.navbar .navbar-nav > li > a.btn.btn-primary.btn-simple {
+    background-color: transparent;
+    color: #9c27b0;
+    box-shadow: none;
+}
+.btn.btn-primary.btn-simple:hover, .btn.btn-primary.btn-simple:focus, .btn.btn-primary.btn-simple:active,
+.navbar .navbar-nav > li > a.btn.btn-primary.btn-simple:hover,
+.navbar .navbar-nav > li > a.btn.btn-primary.btn-simple:focus,
+.navbar .navbar-nav > li > a.btn.btn-primary.btn-simple:active {
+    background-color: transparent;
+    color: #9c27b0;
+}
+.btn.btn-info,
+.navbar .navbar-nav > li > a.btn.btn-info {
+    box-shadow: 0 2px 2px 0 rgba(0, 188, 212, 0.14), 0 3px 1px -2px rgba(0, 188, 212, 0.2), 0 1px 5px 0 rgba(0, 188, 212, 0.12);
+}
+.btn.btn-info, .btn.btn-info:hover, .btn.btn-info:focus, .btn.btn-info:active, .btn.btn-info.active, .btn.btn-info:active:focus, .btn.btn-info:active:hover, .btn.btn-info.active:focus, .btn.btn-info.active:hover, .open > .btn.btn-info.dropdown-toggle, .open > .btn.btn-info.dropdown-toggle:focus, .open > .btn.btn-info.dropdown-toggle:hover,
+.navbar .navbar-nav > li > a.btn.btn-info,
+.navbar .navbar-nav > li > a.btn.btn-info:hover,
+.navbar .navbar-nav > li > a.btn.btn-info:focus,
+.navbar .navbar-nav > li > a.btn.btn-info:active,
+.navbar .navbar-nav > li > a.btn.btn-info.active,
+.navbar .navbar-nav > li > a.btn.btn-info:active:focus,
+.navbar .navbar-nav > li > a.btn.btn-info:active:hover,
+.navbar .navbar-nav > li > a.btn.btn-info.active:focus,
+.navbar .navbar-nav > li > a.btn.btn-info.active:hover, .open >
+.navbar .navbar-nav > li > a.btn.btn-info.dropdown-toggle, .open >
+.navbar .navbar-nav > li > a.btn.btn-info.dropdown-toggle:focus, .open >
+.navbar .navbar-nav > li > a.btn.btn-info.dropdown-toggle:hover {
+    background-color: #00bcd4;
+    color: #FFFFFF;
+}
+.btn.btn-info:focus, .btn.btn-info:active, .btn.btn-info:hover,
+.navbar .navbar-nav > li > a.btn.btn-info:focus,
+.navbar .navbar-nav > li > a.btn.btn-info:active,
+.navbar .navbar-nav > li > a.btn.btn-info:hover {
+    box-shadow: 0 14px 26px -12px rgba(0, 188, 212, 0.42), 0 4px 23px 0px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 188, 212, 0.2);
+}
+.btn.btn-info.disabled, .btn.btn-info.disabled:hover, .btn.btn-info.disabled:focus, .btn.btn-info.disabled.focus, .btn.btn-info.disabled:active, .btn.btn-info.disabled.active, .btn.btn-info:disabled, .btn.btn-info:disabled:hover, .btn.btn-info:disabled:focus, .btn.btn-info:disabled.focus, .btn.btn-info:disabled:active, .btn.btn-info:disabled.active, .btn.btn-info[disabled], .btn.btn-info[disabled]:hover, .btn.btn-info[disabled]:focus, .btn.btn-info[disabled].focus, .btn.btn-info[disabled]:active, .btn.btn-info[disabled].active, fieldset[disabled] .btn.btn-info, fieldset[disabled] .btn.btn-info:hover, fieldset[disabled] .btn.btn-info:focus, fieldset[disabled] .btn.btn-info.focus, fieldset[disabled] .btn.btn-info:active, fieldset[disabled] .btn.btn-info.active,
+.navbar .navbar-nav > li > a.btn.btn-info.disabled,
+.navbar .navbar-nav > li > a.btn.btn-info.disabled:hover,
+.navbar .navbar-nav > li > a.btn.btn-info.disabled:focus,
+.navbar .navbar-nav > li > a.btn.btn-info.disabled.focus,
+.navbar .navbar-nav > li > a.btn.btn-info.disabled:active,
+.navbar .navbar-nav > li > a.btn.btn-info.disabled.active,
+.navbar .navbar-nav > li > a.btn.btn-info:disabled,
+.navbar .navbar-nav > li > a.btn.btn-info:disabled:hover,
+.navbar .navbar-nav > li > a.btn.btn-info:disabled:focus,
+.navbar .navbar-nav > li > a.btn.btn-info:disabled.focus,
+.navbar .navbar-nav > li > a.btn.btn-info:disabled:active,
+.navbar .navbar-nav > li > a.btn.btn-info:disabled.active,
+.navbar .navbar-nav > li > a.btn.btn-info[disabled],
+.navbar .navbar-nav > li > a.btn.btn-info[disabled]:hover,
+.navbar .navbar-nav > li > a.btn.btn-info[disabled]:focus,
+.navbar .navbar-nav > li > a.btn.btn-info[disabled].focus,
+.navbar .navbar-nav > li > a.btn.btn-info[disabled]:active,
+.navbar .navbar-nav > li > a.btn.btn-info[disabled].active, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-info, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-info:hover, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-info:focus, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-info.focus, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-info:active, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-info.active {
+    box-shadow: none;
+}
+.btn.btn-info.btn-simple,
+.navbar .navbar-nav > li > a.btn.btn-info.btn-simple {
+    background-color: transparent;
+    color: #00bcd4;
+    box-shadow: none;
+}
+.btn.btn-info.btn-simple:hover, .btn.btn-info.btn-simple:focus, .btn.btn-info.btn-simple:active,
+.navbar .navbar-nav > li > a.btn.btn-info.btn-simple:hover,
+.navbar .navbar-nav > li > a.btn.btn-info.btn-simple:focus,
+.navbar .navbar-nav > li > a.btn.btn-info.btn-simple:active {
+    background-color: transparent;
+    color: #00bcd4;
+}
+.btn.btn-success,
+.navbar .navbar-nav > li > a.btn.btn-success {
+    box-shadow: 0 2px 2px 0 rgba(76, 175, 80, 0.14), 0 3px 1px -2px rgba(76, 175, 80, 0.2), 0 1px 5px 0 rgba(76, 175, 80, 0.12);
+}
+.btn.btn-success, .btn.btn-success:hover, .btn.btn-success:focus, .btn.btn-success:active, .btn.btn-success.active, .btn.btn-success:active:focus, .btn.btn-success:active:hover, .btn.btn-success.active:focus, .btn.btn-success.active:hover, .open > .btn.btn-success.dropdown-toggle, .open > .btn.btn-success.dropdown-toggle:focus, .open > .btn.btn-success.dropdown-toggle:hover,
+.navbar .navbar-nav > li > a.btn.btn-success,
+.navbar .navbar-nav > li > a.btn.btn-success:hover,
+.navbar .navbar-nav > li > a.btn.btn-success:focus,
+.navbar .navbar-nav > li > a.btn.btn-success:active,
+.navbar .navbar-nav > li > a.btn.btn-success.active,
+.navbar .navbar-nav > li > a.btn.btn-success:active:focus,
+.navbar .navbar-nav > li > a.btn.btn-success:active:hover,
+.navbar .navbar-nav > li > a.btn.btn-success.active:focus,
+.navbar .navbar-nav > li > a.btn.btn-success.active:hover, .open >
+.navbar .navbar-nav > li > a.btn.btn-success.dropdown-toggle, .open >
+.navbar .navbar-nav > li > a.btn.btn-success.dropdown-toggle:focus, .open >
+.navbar .navbar-nav > li > a.btn.btn-success.dropdown-toggle:hover {
+    background-color: #4caf50;
+    color: #FFFFFF;
+}
+.btn.btn-success:focus, .btn.btn-success:active, .btn.btn-success:hover,
+.navbar .navbar-nav > li > a.btn.btn-success:focus,
+.navbar .navbar-nav > li > a.btn.btn-success:active,
+.navbar .navbar-nav > li > a.btn.btn-success:hover {
+    box-shadow: 0 14px 26px -12px rgba(76, 175, 80, 0.42), 0 4px 23px 0px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(76, 175, 80, 0.2);
+}
+.btn.btn-success.disabled, .btn.btn-success.disabled:hover, .btn.btn-success.disabled:focus, .btn.btn-success.disabled.focus, .btn.btn-success.disabled:active, .btn.btn-success.disabled.active, .btn.btn-success:disabled, .btn.btn-success:disabled:hover, .btn.btn-success:disabled:focus, .btn.btn-success:disabled.focus, .btn.btn-success:disabled:active, .btn.btn-success:disabled.active, .btn.btn-success[disabled], .btn.btn-success[disabled]:hover, .btn.btn-success[disabled]:focus, .btn.btn-success[disabled].focus, .btn.btn-success[disabled]:active, .btn.btn-success[disabled].active, fieldset[disabled] .btn.btn-success, fieldset[disabled] .btn.btn-success:hover, fieldset[disabled] .btn.btn-success:focus, fieldset[disabled] .btn.btn-success.focus, fieldset[disabled] .btn.btn-success:active, fieldset[disabled] .btn.btn-success.active,
+.navbar .navbar-nav > li > a.btn.btn-success.disabled,
+.navbar .navbar-nav > li > a.btn.btn-success.disabled:hover,
+.navbar .navbar-nav > li > a.btn.btn-success.disabled:focus,
+.navbar .navbar-nav > li > a.btn.btn-success.disabled.focus,
+.navbar .navbar-nav > li > a.btn.btn-success.disabled:active,
+.navbar .navbar-nav > li > a.btn.btn-success.disabled.active,
+.navbar .navbar-nav > li > a.btn.btn-success:disabled,
+.navbar .navbar-nav > li > a.btn.btn-success:disabled:hover,
+.navbar .navbar-nav > li > a.btn.btn-success:disabled:focus,
+.navbar .navbar-nav > li > a.btn.btn-success:disabled.focus,
+.navbar .navbar-nav > li > a.btn.btn-success:disabled:active,
+.navbar .navbar-nav > li > a.btn.btn-success:disabled.active,
+.navbar .navbar-nav > li > a.btn.btn-success[disabled],
+.navbar .navbar-nav > li > a.btn.btn-success[disabled]:hover,
+.navbar .navbar-nav > li > a.btn.btn-success[disabled]:focus,
+.navbar .navbar-nav > li > a.btn.btn-success[disabled].focus,
+.navbar .navbar-nav > li > a.btn.btn-success[disabled]:active,
+.navbar .navbar-nav > li > a.btn.btn-success[disabled].active, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-success, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-success:hover, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-success:focus, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-success.focus, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-success:active, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-success.active {
+    box-shadow: none;
+}
+.btn.btn-success.btn-simple,
+.navbar .navbar-nav > li > a.btn.btn-success.btn-simple {
+    background-color: transparent;
+    color: #4caf50;
+    box-shadow: none;
+}
+.btn.btn-success.btn-simple:hover, .btn.btn-success.btn-simple:focus, .btn.btn-success.btn-simple:active,
+.navbar .navbar-nav > li > a.btn.btn-success.btn-simple:hover,
+.navbar .navbar-nav > li > a.btn.btn-success.btn-simple:focus,
+.navbar .navbar-nav > li > a.btn.btn-success.btn-simple:active {
+    background-color: transparent;
+    color: #4caf50;
+}
+.btn.btn-warning,
+.navbar .navbar-nav > li > a.btn.btn-warning {
+    box-shadow: 0 2px 2px 0 rgba(255, 152, 0, 0.14), 0 3px 1px -2px rgba(255, 152, 0, 0.2), 0 1px 5px 0 rgba(255, 152, 0, 0.12);
+}
+.btn.btn-warning, .btn.btn-warning:hover, .btn.btn-warning:focus, .btn.btn-warning:active, .btn.btn-warning.active, .btn.btn-warning:active:focus, .btn.btn-warning:active:hover, .btn.btn-warning.active:focus, .btn.btn-warning.active:hover, .open > .btn.btn-warning.dropdown-toggle, .open > .btn.btn-warning.dropdown-toggle:focus, .open > .btn.btn-warning.dropdown-toggle:hover,
+.navbar .navbar-nav > li > a.btn.btn-warning,
+.navbar .navbar-nav > li > a.btn.btn-warning:hover,
+.navbar .navbar-nav > li > a.btn.btn-warning:focus,
+.navbar .navbar-nav > li > a.btn.btn-warning:active,
+.navbar .navbar-nav > li > a.btn.btn-warning.active,
+.navbar .navbar-nav > li > a.btn.btn-warning:active:focus,
+.navbar .navbar-nav > li > a.btn.btn-warning:active:hover,
+.navbar .navbar-nav > li > a.btn.btn-warning.active:focus,
+.navbar .navbar-nav > li > a.btn.btn-warning.active:hover, .open >
+.navbar .navbar-nav > li > a.btn.btn-warning.dropdown-toggle, .open >
+.navbar .navbar-nav > li > a.btn.btn-warning.dropdown-toggle:focus, .open >
+.navbar .navbar-nav > li > a.btn.btn-warning.dropdown-toggle:hover {
+    background-color: #ff9800;
+    color: #FFFFFF;
+}
+.btn.btn-warning:focus, .btn.btn-warning:active, .btn.btn-warning:hover,
+.navbar .navbar-nav > li > a.btn.btn-warning:focus,
+.navbar .navbar-nav > li > a.btn.btn-warning:active,
+.navbar .navbar-nav > li > a.btn.btn-warning:hover {
+    box-shadow: 0 14px 26px -12px rgba(255, 152, 0, 0.42), 0 4px 23px 0px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(255, 152, 0, 0.2);
+}
+.btn.btn-warning.disabled, .btn.btn-warning.disabled:hover, .btn.btn-warning.disabled:focus, .btn.btn-warning.disabled.focus, .btn.btn-warning.disabled:active, .btn.btn-warning.disabled.active, .btn.btn-warning:disabled, .btn.btn-warning:disabled:hover, .btn.btn-warning:disabled:focus, .btn.btn-warning:disabled.focus, .btn.btn-warning:disabled:active, .btn.btn-warning:disabled.active, .btn.btn-warning[disabled], .btn.btn-warning[disabled]:hover, .btn.btn-warning[disabled]:focus, .btn.btn-warning[disabled].focus, .btn.btn-warning[disabled]:active, .btn.btn-warning[disabled].active, fieldset[disabled] .btn.btn-warning, fieldset[disabled] .btn.btn-warning:hover, fieldset[disabled] .btn.btn-warning:focus, fieldset[disabled] .btn.btn-warning.focus, fieldset[disabled] .btn.btn-warning:active, fieldset[disabled] .btn.btn-warning.active,
+.navbar .navbar-nav > li > a.btn.btn-warning.disabled,
+.navbar .navbar-nav > li > a.btn.btn-warning.disabled:hover,
+.navbar .navbar-nav > li > a.btn.btn-warning.disabled:focus,
+.navbar .navbar-nav > li > a.btn.btn-warning.disabled.focus,
+.navbar .navbar-nav > li > a.btn.btn-warning.disabled:active,
+.navbar .navbar-nav > li > a.btn.btn-warning.disabled.active,
+.navbar .navbar-nav > li > a.btn.btn-warning:disabled,
+.navbar .navbar-nav > li > a.btn.btn-warning:disabled:hover,
+.navbar .navbar-nav > li > a.btn.btn-warning:disabled:focus,
+.navbar .navbar-nav > li > a.btn.btn-warning:disabled.focus,
+.navbar .navbar-nav > li > a.btn.btn-warning:disabled:active,
+.navbar .navbar-nav > li > a.btn.btn-warning:disabled.active,
+.navbar .navbar-nav > li > a.btn.btn-warning[disabled],
+.navbar .navbar-nav > li > a.btn.btn-warning[disabled]:hover,
+.navbar .navbar-nav > li > a.btn.btn-warning[disabled]:focus,
+.navbar .navbar-nav > li > a.btn.btn-warning[disabled].focus,
+.navbar .navbar-nav > li > a.btn.btn-warning[disabled]:active,
+.navbar .navbar-nav > li > a.btn.btn-warning[disabled].active, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-warning, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-warning:hover, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-warning:focus, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-warning.focus, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-warning:active, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-warning.active {
+    box-shadow: none;
+}
+.btn.btn-warning.btn-simple,
+.navbar .navbar-nav > li > a.btn.btn-warning.btn-simple {
+    background-color: transparent;
+    color: #ff9800;
+    box-shadow: none;
+}
+.btn.btn-warning.btn-simple:hover, .btn.btn-warning.btn-simple:focus, .btn.btn-warning.btn-simple:active,
+.navbar .navbar-nav > li > a.btn.btn-warning.btn-simple:hover,
+.navbar .navbar-nav > li > a.btn.btn-warning.btn-simple:focus,
+.navbar .navbar-nav > li > a.btn.btn-warning.btn-simple:active {
+    background-color: transparent;
+    color: #ff9800;
+}
+.btn.btn-danger,
+.navbar .navbar-nav > li > a.btn.btn-danger {
+    box-shadow: 0 2px 2px 0 rgba(244, 67, 54, 0.14), 0 3px 1px -2px rgba(244, 67, 54, 0.2), 0 1px 5px 0 rgba(244, 67, 54, 0.12);
+}
+.btn.btn-danger, .btn.btn-danger:hover, .btn.btn-danger:focus, .btn.btn-danger:active, .btn.btn-danger.active, .btn.btn-danger:active:focus, .btn.btn-danger:active:hover, .btn.btn-danger.active:focus, .btn.btn-danger.active:hover, .open > .btn.btn-danger.dropdown-toggle, .open > .btn.btn-danger.dropdown-toggle:focus, .open > .btn.btn-danger.dropdown-toggle:hover,
+.navbar .navbar-nav > li > a.btn.btn-danger,
+.navbar .navbar-nav > li > a.btn.btn-danger:hover,
+.navbar .navbar-nav > li > a.btn.btn-danger:focus,
+.navbar .navbar-nav > li > a.btn.btn-danger:active,
+.navbar .navbar-nav > li > a.btn.btn-danger.active,
+.navbar .navbar-nav > li > a.btn.btn-danger:active:focus,
+.navbar .navbar-nav > li > a.btn.btn-danger:active:hover,
+.navbar .navbar-nav > li > a.btn.btn-danger.active:focus,
+.navbar .navbar-nav > li > a.btn.btn-danger.active:hover, .open >
+.navbar .navbar-nav > li > a.btn.btn-danger.dropdown-toggle, .open >
+.navbar .navbar-nav > li > a.btn.btn-danger.dropdown-toggle:focus, .open >
+.navbar .navbar-nav > li > a.btn.btn-danger.dropdown-toggle:hover {
+    background-color: #f44336;
+    color: #FFFFFF;
+}
+.btn.btn-danger:focus, .btn.btn-danger:active, .btn.btn-danger:hover,
+.navbar .navbar-nav > li > a.btn.btn-danger:focus,
+.navbar .navbar-nav > li > a.btn.btn-danger:active,
+.navbar .navbar-nav > li > a.btn.btn-danger:hover {
+    box-shadow: 0 14px 26px -12px rgba(244, 67, 54, 0.42), 0 4px 23px 0px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(244, 67, 54, 0.2);
+}
+.btn.btn-danger.disabled, .btn.btn-danger.disabled:hover, .btn.btn-danger.disabled:focus, .btn.btn-danger.disabled.focus, .btn.btn-danger.disabled:active, .btn.btn-danger.disabled.active, .btn.btn-danger:disabled, .btn.btn-danger:disabled:hover, .btn.btn-danger:disabled:focus, .btn.btn-danger:disabled.focus, .btn.btn-danger:disabled:active, .btn.btn-danger:disabled.active, .btn.btn-danger[disabled], .btn.btn-danger[disabled]:hover, .btn.btn-danger[disabled]:focus, .btn.btn-danger[disabled].focus, .btn.btn-danger[disabled]:active, .btn.btn-danger[disabled].active, fieldset[disabled] .btn.btn-danger, fieldset[disabled] .btn.btn-danger:hover, fieldset[disabled] .btn.btn-danger:focus, fieldset[disabled] .btn.btn-danger.focus, fieldset[disabled] .btn.btn-danger:active, fieldset[disabled] .btn.btn-danger.active,
+.navbar .navbar-nav > li > a.btn.btn-danger.disabled,
+.navbar .navbar-nav > li > a.btn.btn-danger.disabled:hover,
+.navbar .navbar-nav > li > a.btn.btn-danger.disabled:focus,
+.navbar .navbar-nav > li > a.btn.btn-danger.disabled.focus,
+.navbar .navbar-nav > li > a.btn.btn-danger.disabled:active,
+.navbar .navbar-nav > li > a.btn.btn-danger.disabled.active,
+.navbar .navbar-nav > li > a.btn.btn-danger:disabled,
+.navbar .navbar-nav > li > a.btn.btn-danger:disabled:hover,
+.navbar .navbar-nav > li > a.btn.btn-danger:disabled:focus,
+.navbar .navbar-nav > li > a.btn.btn-danger:disabled.focus,
+.navbar .navbar-nav > li > a.btn.btn-danger:disabled:active,
+.navbar .navbar-nav > li > a.btn.btn-danger:disabled.active,
+.navbar .navbar-nav > li > a.btn.btn-danger[disabled],
+.navbar .navbar-nav > li > a.btn.btn-danger[disabled]:hover,
+.navbar .navbar-nav > li > a.btn.btn-danger[disabled]:focus,
+.navbar .navbar-nav > li > a.btn.btn-danger[disabled].focus,
+.navbar .navbar-nav > li > a.btn.btn-danger[disabled]:active,
+.navbar .navbar-nav > li > a.btn.btn-danger[disabled].active, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-danger, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-danger:hover, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-danger:focus, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-danger.focus, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-danger:active, fieldset[disabled]
+.navbar .navbar-nav > li > a.btn.btn-danger.active {
+    box-shadow: none;
+}
+.btn.btn-danger.btn-simple,
+.navbar .navbar-nav > li > a.btn.btn-danger.btn-simple {
+    background-color: transparent;
+    color: #f44336;
+    box-shadow: none;
+}
+.btn.btn-danger.btn-simple:hover, .btn.btn-danger.btn-simple:focus, .btn.btn-danger.btn-simple:active,
+.navbar .navbar-nav > li > a.btn.btn-danger.btn-simple:hover,
+.navbar .navbar-nav > li > a.btn.btn-danger.btn-simple:focus,
+.navbar .navbar-nav > li > a.btn.btn-danger.btn-simple:active {
+    background-color: transparent;
+    color: #f44336;
+}
+.btn.btn-white, .btn.btn-white:focus, .btn.btn-white:hover,
+.navbar .navbar-nav > li > a.btn.btn-white,
+.navbar .navbar-nav > li > a.btn.btn-white:focus,
+.navbar .navbar-nav > li > a.btn.btn-white:hover {
+    background-color: #FFFFFF;
+    color: #999999;
+}
+.btn.btn-white.btn-simple,
+.navbar .navbar-nav > li > a.btn.btn-white.btn-simple {
+    color: #FFFFFF;
+    background: transparent;
+    box-shadow: none;
+}
+.btn.btn-facebook,
+.navbar .navbar-nav > li > a.btn.btn-facebook {
+    background-color: #3b5998;
+    color: #fff;
+    box-shadow: 0 2px 2px 0 rgba(59, 89, 152, 0.14), 0 3px 1px -2px rgba(59, 89, 152, 0.2), 0 1px 5px 0 rgba(59, 89, 152, 0.12);
+}
+.btn.btn-facebook:focus, .btn.btn-facebook:active, .btn.btn-facebook:hover,
+.navbar .navbar-nav > li > a.btn.btn-facebook:focus,
+.navbar .navbar-nav > li > a.btn.btn-facebook:active,
+.navbar .navbar-nav > li > a.btn.btn-facebook:hover {
+    background-color: #3b5998;
+    color: #fff;
+    box-shadow: 0 14px 26px -12px rgba(59, 89, 152, 0.42), 0 4px 23px 0px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(59, 89, 152, 0.2);
+}
+.btn.btn-facebook.btn-simple,
+.navbar .navbar-nav > li > a.btn.btn-facebook.btn-simple {
+    color: #3b5998;
+    background-color: transparent;
+    box-shadow: none;
+}
+.btn.btn-twitter,
+.navbar .navbar-nav > li > a.btn.btn-twitter {
+    background-color: #55acee;
+    color: #fff;
+    box-shadow: 0 2px 2px 0 rgba(85, 172, 238, 0.14), 0 3px 1px -2px rgba(85, 172, 238, 0.2), 0 1px 5px 0 rgba(85, 172, 238, 0.12);
+}
+.btn.btn-twitter:focus, .btn.btn-twitter:active, .btn.btn-twitter:hover,
+.navbar .navbar-nav > li > a.btn.btn-twitter:focus,
+.navbar .navbar-nav > li > a.btn.btn-twitter:active,
+.navbar .navbar-nav > li > a.btn.btn-twitter:hover {
+    background-color: #55acee;
+    color: #fff;
+    box-shadow: 0 14px 26px -12px rgba(85, 172, 238, 0.42), 0 4px 23px 0px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(85, 172, 238, 0.2);
+}
+.btn.btn-twitter.btn-simple,
+.navbar .navbar-nav > li > a.btn.btn-twitter.btn-simple {
+    color: #55acee;
+    background-color: transparent;
+    box-shadow: none;
+}
+.btn.btn-pinterest,
+.navbar .navbar-nav > li > a.btn.btn-pinterest {
+    background-color: #cc2127;
+    color: #fff;
+    box-shadow: 0 2px 2px 0 rgba(204, 33, 39, 0.14), 0 3px 1px -2px rgba(204, 33, 39, 0.2), 0 1px 5px 0 rgba(204, 33, 39, 0.12);
+}
+.btn.btn-pinterest:focus, .btn.btn-pinterest:active, .btn.btn-pinterest:hover,
+.navbar .navbar-nav > li > a.btn.btn-pinterest:focus,
+.navbar .navbar-nav > li > a.btn.btn-pinterest:active,
+.navbar .navbar-nav > li > a.btn.btn-pinterest:hover {
+    background-color: #cc2127;
+    color: #fff;
+    box-shadow: 0 14px 26px -12px rgba(204, 33, 39, 0.42), 0 4px 23px 0px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(204, 33, 39, 0.2);
+}
+.btn.btn-pinterest.btn-simple,
+.navbar .navbar-nav > li > a.btn.btn-pinterest.btn-simple {
+    color: #cc2127;
+    background-color: transparent;
+    box-shadow: none;
+}
+.btn.btn-google,
+.navbar .navbar-nav > li > a.btn.btn-google {
+    background-color: #dd4b39;
+    color: #fff;
+    box-shadow: 0 2px 2px 0 rgba(221, 75, 57, 0.14), 0 3px 1px -2px rgba(221, 75, 57, 0.2), 0 1px 5px 0 rgba(221, 75, 57, 0.12);
+}
+.btn.btn-google:focus, .btn.btn-google:active, .btn.btn-google:hover,
+.navbar .navbar-nav > li > a.btn.btn-google:focus,
+.navbar .navbar-nav > li > a.btn.btn-google:active,
+.navbar .navbar-nav > li > a.btn.btn-google:hover {
+    background-color: #dd4b39;
+    color: #fff;
+    box-shadow: 0 14px 26px -12px rgba(221, 75, 57, 0.42), 0 4px 23px 0px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(221, 75, 57, 0.2);
+}
+.btn.btn-google.btn-simple,
+.navbar .navbar-nav > li > a.btn.btn-google.btn-simple {
+    color: #dd4b39;
+    background-color: transparent;
+    box-shadow: none;
+}
+.btn.btn-instagram,
+.navbar .navbar-nav > li > a.btn.btn-instagram {
+    background-color: #125688;
+    color: #fff;
+    box-shadow: 0 2px 2px 0 rgba(18, 86, 136, 0.14), 0 3px 1px -2px rgba(18, 86, 136, 0.2), 0 1px 5px 0 rgba(18, 86, 136, 0.12);
+}
+.btn.btn-instagram:focus, .btn.btn-instagram:active, .btn.btn-instagram:hover,
+.navbar .navbar-nav > li > a.btn.btn-instagram:focus,
+.navbar .navbar-nav > li > a.btn.btn-instagram:active,
+.navbar .navbar-nav > li > a.btn.btn-instagram:hover {
+    background-color: #125688;
+    color: #fff;
+    box-shadow: 0 14px 26px -12px rgba(18, 86, 136, 0.42), 0 4px 23px 0px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(18, 86, 136, 0.2);
+}
+.btn.btn-instagram.btn-simple,
+.navbar .navbar-nav > li > a.btn.btn-instagram.btn-simple {
+    color: #125688;
+    background-color: transparent;
+    box-shadow: none;
+}
+.btn:focus, .btn:active, .btn:active:focus,
+.navbar .navbar-nav > li > a.btn:focus,
+.navbar .navbar-nav > li > a.btn:active,
+.navbar .navbar-nav > li > a.btn:active:focus {
+    outline: 0;
+}
+.btn.btn-round,
+.navbar .navbar-nav > li > a.btn.btn-round {
+    border-radius: 30px;
+}
+.btn:not(.btn-just-icon):not(.btn-fab) .fa,
+.navbar .navbar-nav > li > a.btn:not(.btn-just-icon):not(.btn-fab) .fa {
+    font-size: 18px;
+    margin-top: -2px;
+    position: relative;
+    top: 2px;
+}
+.btn.btn-fab,
+.navbar .navbar-nav > li > a.btn.btn-fab {
+    border-radius: 50%;
+    font-size: 24px;
+    height: 56px;
+    margin: auto;
+    min-width: 56px;
+    width: 56px;
+    padding: 0;
+    overflow: hidden;
+    position: relative;
+    line-height: normal;
+}
+.btn.btn-fab .ripple-container,
+.navbar .navbar-nav > li > a.btn.btn-fab .ripple-container {
+    border-radius: 50%;
+}
+.btn.btn-fab.btn-fab-mini, .btn-group-sm .btn.btn-fab,
+.navbar .navbar-nav > li > a.btn.btn-fab.btn-fab-mini, .btn-group-sm
+.navbar .navbar-nav > li > a.btn.btn-fab {
+    height: 40px;
+    min-width: 40px;
+    width: 40px;
+}
+.btn.btn-fab.btn-fab-mini.material-icons, .btn-group-sm .btn.btn-fab.material-icons,
+.navbar .navbar-nav > li > a.btn.btn-fab.btn-fab-mini.material-icons, .btn-group-sm
+.navbar .navbar-nav > li > a.btn.btn-fab.material-icons {
+    top: -3.5px;
+    left: -3.5px;
+}
+.btn.btn-fab.btn-fab-mini .material-icons, .btn-group-sm .btn.btn-fab .material-icons,
+.navbar .navbar-nav > li > a.btn.btn-fab.btn-fab-mini .material-icons, .btn-group-sm
+.navbar .navbar-nav > li > a.btn.btn-fab .material-icons {
+    font-size: 17px;
+}
+.btn.btn-fab i.material-icons,
+.navbar .navbar-nav > li > a.btn.btn-fab i.material-icons {
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    transform: translate(-12px, -12px);
+    line-height: 24px;
+    width: 24px;
+    font-size: 24px;
+}
+.btn.btn-lg, .btn-group-lg .btn,
+.navbar .navbar-nav > li > a.btn.btn-lg, .btn-group-lg
+.navbar .navbar-nav > li > a.btn {
+    font-size: 14px;
+    padding: 18px 36px;
+}
+.btn.btn-sm, .btn-group-sm .btn,
+.navbar .navbar-nav > li > a.btn.btn-sm, .btn-group-sm
+.navbar .navbar-nav > li > a.btn {
+    padding: 5px 20px;
+    font-size: 11px;
+}
+.btn.btn-xs, .btn-group-xs .btn,
+.navbar .navbar-nav > li > a.btn.btn-xs, .btn-group-xs
+.navbar .navbar-nav > li > a.btn {
+    padding: 4px 15px;
+    font-size: 10px;
+}
+.btn.btn-just-icon,
+.navbar .navbar-nav > li > a.btn.btn-just-icon {
+    font-size: 20px;
+    padding: 12px 12px;
+    line-height: 1em;
+}
+.btn.btn-just-icon i,
+.navbar .navbar-nav > li > a.btn.btn-just-icon i {
+    width: 20px;
+}
+.btn.btn-just-icon.btn-lg,
+.navbar .navbar-nav > li > a.btn.btn-just-icon.btn-lg {
+    font-size: 22px;
+    padding: 13px 18px;
+}
+
+.btn .material-icons {
+    vertical-align: middle;
+    font-size: 17px;
+    top: -1px;
+    position: relative;
+}
+
+.navbar .navbar-nav > li > a.btn {
+    margin-top: 2px;
+    margin-bottom: 2px;
+}
+.navbar .navbar-nav > li > a.btn.btn-fab {
+    margin: 5px 2px;
+}
+.navbar .navbar-nav > li > a:not(.btn) .material-icons {
+    margin-top: -3px;
+    top: 0px;
+    position: relative;
+    margin-right: 3px;
+}
+.navbar .navbar-nav > li > .profile-photo {
+    margin: 5px 2px;
+}
+
+.navbar-default:not(.navbar-transparent) .navbar-nav > li > a.btn.btn-white.btn-simple {
+    color: #555555;
+}
+
+.btn-group,
+.btn-group-vertical {
+    position: relative;
+    margin: 10px 1px;
+}
+.btn-group.open > .dropdown-toggle.btn, .btn-group.open > .dropdown-toggle.btn.btn-default,
+.btn-group-vertical.open > .dropdown-toggle.btn,
+.btn-group-vertical.open > .dropdown-toggle.btn.btn-default {
+    background-color: #FFFFFF;
+}
+.btn-group.open > .dropdown-toggle.btn.btn-inverse,
+.btn-group-vertical.open > .dropdown-toggle.btn.btn-inverse {
+    background-color: #212121;
+}
+.btn-group.open > .dropdown-toggle.btn.btn-primary,
+.btn-group-vertical.open > .dropdown-toggle.btn.btn-primary {
+    background-color: #9c27b0;
+}
+.btn-group.open > .dropdown-toggle.btn.btn-success,
+.btn-group-vertical.open > .dropdown-toggle.btn.btn-success {
+    background-color: #4caf50;
+}
+.btn-group.open > .dropdown-toggle.btn.btn-info,
+.btn-group-vertical.open > .dropdown-toggle.btn.btn-info {
+    background-color: #00bcd4;
+}
+.btn-group.open > .dropdown-toggle.btn.btn-warning,
+.btn-group-vertical.open > .dropdown-toggle.btn.btn-warning {
+    background-color: #ff9800;
+}
+.btn-group.open > .dropdown-toggle.btn.btn-danger,
+.btn-group-vertical.open > .dropdown-toggle.btn.btn-danger {
+    background-color: #f44336;
+}
+.btn-group.open > .dropdown-toggle.btn.btn-rose,
+.btn-group-vertical.open > .dropdown-toggle.btn.btn-rose {
+    background-color: #e91e63;
+}
+.btn-group .dropdown-menu,
+.btn-group-vertical .dropdown-menu {
+    border-radius: 0 0 3px 3px;
+}
+.btn-group.btn-group-raised,
+.btn-group-vertical.btn-group-raised {
+    box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
+}
+.btn-group .btn + .btn,
+.btn-group .btn,
+.btn-group .btn:active,
+.btn-group .btn-group,
+.btn-group-vertical .btn + .btn,
+.btn-group-vertical .btn,
+.btn-group-vertical .btn:active,
+.btn-group-vertical .btn-group {
+    margin: 0;
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/style/img/alipay.png
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/style/img/alipay.png b/rocketmq-console/src/main/resources/static/style/img/alipay.png
new file mode 100644
index 0000000..8d72f26
Binary files /dev/null and b/rocketmq-console/src/main/resources/static/style/img/alipay.png differ



[37/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-messages.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-messages.js b/rocketmq-console/src/main/resources/static/vendor/angular/angular-messages.js
new file mode 100644
index 0000000..d0fd15f
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-messages.js
@@ -0,0 +1,724 @@
+/**
+ * @license AngularJS v1.5.6
+ * (c) 2010-2016 Google, Inc. http://angularjs.org
+ * License: MIT
+ */
+(function(window, angular) {'use strict';
+
+/* jshint ignore:start */
+// this code is in the core, but not in angular-messages.js
+var isArray = angular.isArray;
+var forEach = angular.forEach;
+var isString = angular.isString;
+var jqLite = angular.element;
+/* jshint ignore:end */
+
+/**
+ * @ngdoc module
+ * @name ngMessages
+ * @description
+ *
+ * The `ngMessages` module provides enhanced support for displaying messages within templates
+ * (typically within forms or when rendering message objects that return key/value data).
+ * Instead of relying on JavaScript code and/or complex ng-if statements within your form template to
+ * show and hide error messages specific to the state of an input field, the `ngMessages` and
+ * `ngMessage` directives are designed to handle the complexity, inheritance and priority
+ * sequencing based on the order of how the messages are defined in the template.
+ *
+ * Currently, the ngMessages module only contains the code for the `ngMessages`, `ngMessagesInclude`
+ * `ngMessage` and `ngMessageExp` directives.
+ *
+ * # Usage
+ * The `ngMessages` directive allows keys in a key/value collection to be associated with a child element
+ * (or 'message') that will show or hide based on the truthiness of that key's value in the collection. A common use
+ * case for `ngMessages` is to display error messages for inputs using the `$error` object exposed by the
+ * {@link ngModel ngModel} directive.
+ *
+ * The child elements of the `ngMessages` directive are matched to the collection keys by a `ngMessage` or
+ * `ngMessageExp` directive. The value of these attributes must match a key in the collection that is provided by
+ * the `ngMessages` directive.
+ *
+ * Consider the following example, which illustrates a typical use case of `ngMessages`. Within the form `myForm` we
+ * have a text input named `myField` which is bound to the scope variable `field` using the {@link ngModel ngModel}
+ * directive.
+ *
+ * The `myField` field is a required input of type `email` with a maximum length of 15 characters.
+ *
+ * ```html
+ * <form name="myForm">
+ *   <label>
+ *     Enter text:
+ *     <input type="email" ng-model="field" name="myField" required maxlength="15" />
+ *   </label>
+ *   <div ng-messages="myForm.myField.$error" role="alert">
+ *     <div ng-message="required">Please enter a value for this field.</div>
+ *     <div ng-message="email">This field must be a valid email address.</div>
+ *     <div ng-message="maxlength">This field can be at most 15 characters long.</div>
+ *   </div>
+ * </form>
+ * ```
+ *
+ * In order to show error messages corresponding to `myField` we first create an element with an `ngMessages` attribute
+ * set to the `$error` object owned by the `myField` input in our `myForm` form.
+ *
+ * Within this element we then create separate elements for each of the possible errors that `myField` could have.
+ * The `ngMessage` attribute is used to declare which element(s) will appear for which error - for example,
+ * setting `ng-message="required"` specifies that this particular element should be displayed when there
+ * is no value present for the required field `myField` (because the key `required` will be `true` in the object
+ * `myForm.myField.$error`).
+ *
+ * ### Message order
+ *
+ * By default, `ngMessages` will only display one message for a particular key/value collection at any time. If more
+ * than one message (or error) key is currently true, then which message is shown is determined by the order of messages
+ * in the HTML template code (messages declared first are prioritised). This mechanism means the developer does not have
+ * to prioritise messages using custom JavaScript code.
+ *
+ * Given the following error object for our example (which informs us that the field `myField` currently has both the
+ * `required` and `email` errors):
+ *
+ * ```javascript
+ * <!-- keep in mind that ngModel automatically sets these error flags -->
+ * myField.$error = { required : true, email: true, maxlength: false };
+ * ```
+ * The `required` message will be displayed to the user since it appears before the `email` message in the DOM.
+ * Once the user types a single character, the `required` message will disappear (since the field now has a value)
+ * but the `email` message will be visible because it is still applicable.
+ *
+ * ### Displaying multiple messages at the same time
+ *
+ * While `ngMessages` will by default only display one error element at a time, the `ng-messages-multiple` attribute can
+ * be applied to the `ngMessages` container element to cause it to display all applicable error messages at once:
+ *
+ * ```html
+ * <!-- attribute-style usage -->
+ * <div ng-messages="myForm.myField.$error" ng-messages-multiple>...</div>
+ *
+ * <!-- element-style usage -->
+ * <ng-messages for="myForm.myField.$error" multiple>...</ng-messages>
+ * ```
+ *
+ * ## Reusing and Overriding Messages
+ * In addition to prioritization, ngMessages also allows for including messages from a remote or an inline
+ * template. This allows for generic collection of messages to be reused across multiple parts of an
+ * application.
+ *
+ * ```html
+ * <script type="text/ng-template" id="error-messages">
+ *   <div ng-message="required">This field is required</div>
+ *   <div ng-message="minlength">This field is too short</div>
+ * </script>
+ *
+ * <div ng-messages="myForm.myField.$error" role="alert">
+ *   <div ng-messages-include="error-messages"></div>
+ * </div>
+ * ```
+ *
+ * However, including generic messages may not be useful enough to match all input fields, therefore,
+ * `ngMessages` provides the ability to override messages defined in the remote template by redefining
+ * them within the directive container.
+ *
+ * ```html
+ * <!-- a generic template of error messages known as "my-custom-messages" -->
+ * <script type="text/ng-template" id="my-custom-messages">
+ *   <div ng-message="required">This field is required</div>
+ *   <div ng-message="minlength">This field is too short</div>
+ * </script>
+ *
+ * <form name="myForm">
+ *   <label>
+ *     Email address
+ *     <input type="email"
+ *            id="email"
+ *            name="myEmail"
+ *            ng-model="email"
+ *            minlength="5"
+ *            required />
+ *   </label>
+ *   <!-- any ng-message elements that appear BEFORE the ng-messages-include will
+ *        override the messages present in the ng-messages-include template -->
+ *   <div ng-messages="myForm.myEmail.$error" role="alert">
+ *     <!-- this required message has overridden the template message -->
+ *     <div ng-message="required">You did not enter your email address</div>
+ *
+ *     <!-- this is a brand new message and will appear last in the prioritization -->
+ *     <div ng-message="email">Your email address is invalid</div>
+ *
+ *     <!-- and here are the generic error messages -->
+ *     <div ng-messages-include="my-custom-messages"></div>
+ *   </div>
+ * </form>
+ * ```
+ *
+ * In the example HTML code above the message that is set on required will override the corresponding
+ * required message defined within the remote template. Therefore, with particular input fields (such
+ * email addresses, date fields, autocomplete inputs, etc...), specialized error messages can be applied
+ * while more generic messages can be used to handle other, more general input errors.
+ *
+ * ## Dynamic Messaging
+ * ngMessages also supports using expressions to dynamically change key values. Using arrays and
+ * repeaters to list messages is also supported. This means that the code below will be able to
+ * fully adapt itself and display the appropriate message when any of the expression data changes:
+ *
+ * ```html
+ * <form name="myForm">
+ *   <label>
+ *     Email address
+ *     <input type="email"
+ *            name="myEmail"
+ *            ng-model="email"
+ *            minlength="5"
+ *            required />
+ *   </label>
+ *   <div ng-messages="myForm.myEmail.$error" role="alert">
+ *     <div ng-message="required">You did not enter your email address</div>
+ *     <div ng-repeat="errorMessage in errorMessages">
+ *       <!-- use ng-message-exp for a message whose key is given by an expression -->
+ *       <div ng-message-exp="errorMessage.type">{{ errorMessage.text }}</div>
+ *     </div>
+ *   </div>
+ * </form>
+ * ```
+ *
+ * The `errorMessage.type` expression can be a string value or it can be an array so
+ * that multiple errors can be associated with a single error message:
+ *
+ * ```html
+ *   <label>
+ *     Email address
+ *     <input type="email"
+ *            ng-model="data.email"
+ *            name="myEmail"
+ *            ng-minlength="5"
+ *            ng-maxlength="100"
+ *            required />
+ *   </label>
+ *   <div ng-messages="myForm.myEmail.$error" role="alert">
+ *     <div ng-message-exp="'required'">You did not enter your email address</div>
+ *     <div ng-message-exp="['minlength', 'maxlength']">
+ *       Your email must be between 5 and 100 characters long
+ *     </div>
+ *   </div>
+ * ```
+ *
+ * Feel free to use other structural directives such as ng-if and ng-switch to further control
+ * what messages are active and when. Be careful, if you place ng-message on the same element
+ * as these structural directives, Angular may not be able to determine if a message is active
+ * or not. Therefore it is best to place the ng-message on a child element of the structural
+ * directive.
+ *
+ * ```html
+ * <div ng-messages="myForm.myEmail.$error" role="alert">
+ *   <div ng-if="showRequiredError">
+ *     <div ng-message="required">Please enter something</div>
+ *   </div>
+ * </div>
+ * ```
+ *
+ * ## Animations
+ * If the `ngAnimate` module is active within the application then the `ngMessages`, `ngMessage` and
+ * `ngMessageExp` directives will trigger animations whenever any messages are added and removed from
+ * the DOM by the `ngMessages` directive.
+ *
+ * Whenever the `ngMessages` directive contains one or more visible messages then the `.ng-active` CSS
+ * class will be added to the element. The `.ng-inactive` CSS class will be applied when there are no
+ * messages present. Therefore, CSS transitions and keyframes as well as JavaScript animations can
+ * hook into the animations whenever these classes are added/removed.
+ *
+ * Let's say that our HTML code for our messages container looks like so:
+ *
+ * ```html
+ * <div ng-messages="myMessages" class="my-messages" role="alert">
+ *   <div ng-message="alert" class="some-message">...</div>
+ *   <div ng-message="fail" class="some-message">...</div>
+ * </div>
+ * ```
+ *
+ * Then the CSS animation code for the message container looks like so:
+ *
+ * ```css
+ * .my-messages {
+ *   transition:1s linear all;
+ * }
+ * .my-messages.ng-active {
+ *   // messages are visible
+ * }
+ * .my-messages.ng-inactive {
+ *   // messages are hidden
+ * }
+ * ```
+ *
+ * Whenever an inner message is attached (becomes visible) or removed (becomes hidden) then the enter
+ * and leave animation is triggered for each particular element bound to the `ngMessage` directive.
+ *
+ * Therefore, the CSS code for the inner messages looks like so:
+ *
+ * ```css
+ * .some-message {
+ *   transition:1s linear all;
+ * }
+ *
+ * .some-message.ng-enter {}
+ * .some-message.ng-enter.ng-enter-active {}
+ *
+ * .some-message.ng-leave {}
+ * .some-message.ng-leave.ng-leave-active {}
+ * ```
+ *
+ * {@link ngAnimate Click here} to learn how to use JavaScript animations or to learn more about ngAnimate.
+ */
+angular.module('ngMessages', [])
+
+   /**
+    * @ngdoc directive
+    * @module ngMessages
+    * @name ngMessages
+    * @restrict AE
+    *
+    * @description
+    * `ngMessages` is a directive that is designed to show and hide messages based on the state
+    * of a key/value object that it listens on. The directive itself complements error message
+    * reporting with the `ngModel` $error object (which stores a key/value state of validation errors).
+    *
+    * `ngMessages` manages the state of internal messages within its container element. The internal
+    * messages use the `ngMessage` directive and will be inserted/removed from the page depending
+    * on if they're present within the key/value object. By default, only one message will be displayed
+    * at a time and this depends on the prioritization of the messages within the template. (This can
+    * be changed by using the `ng-messages-multiple` or `multiple` attribute on the directive container.)
+    *
+    * A remote template can also be used to promote message reusability and messages can also be
+    * overridden.
+    *
+    * {@link module:ngMessages Click here} to learn more about `ngMessages` and `ngMessage`.
+    *
+    * @usage
+    * ```html
+    * <!-- using attribute directives -->
+    * <ANY ng-messages="expression" role="alert">
+    *   <ANY ng-message="stringValue">...</ANY>
+    *   <ANY ng-message="stringValue1, stringValue2, ...">...</ANY>
+    *   <ANY ng-message-exp="expressionValue">...</ANY>
+    * </ANY>
+    *
+    * <!-- or by using element directives -->
+    * <ng-messages for="expression" role="alert">
+    *   <ng-message when="stringValue">...</ng-message>
+    *   <ng-message when="stringValue1, stringValue2, ...">...</ng-message>
+    *   <ng-message when-exp="expressionValue">...</ng-message>
+    * </ng-messages>
+    * ```
+    *
+    * @param {string} ngMessages an angular expression evaluating to a key/value object
+    *                 (this is typically the $error object on an ngModel instance).
+    * @param {string=} ngMessagesMultiple|multiple when set, all messages will be displayed with true
+    *
+    * @example
+    * <example name="ngMessages-directive" module="ngMessagesExample"
+    *          deps="angular-messages.js"
+    *          animations="true" fixBase="true">
+    *   <file name="index.html">
+    *     <form name="myForm">
+    *       <label>
+    *         Enter your name:
+    *         <input type="text"
+    *                name="myName"
+    *                ng-model="name"
+    *                ng-minlength="5"
+    *                ng-maxlength="20"
+    *                required />
+    *       </label>
+    *       <pre>myForm.myName.$error = {{ myForm.myName.$error | json }}</pre>
+    *
+    *       <div ng-messages="myForm.myName.$error" style="color:maroon" role="alert">
+    *         <div ng-message="required">You did not enter a field</div>
+    *         <div ng-message="minlength">Your field is too short</div>
+    *         <div ng-message="maxlength">Your field is too long</div>
+    *       </div>
+    *     </form>
+    *   </file>
+    *   <file name="script.js">
+    *     angular.module('ngMessagesExample', ['ngMessages']);
+    *   </file>
+    * </example>
+    */
+   .directive('ngMessages', ['$animate', function($animate) {
+     var ACTIVE_CLASS = 'ng-active';
+     var INACTIVE_CLASS = 'ng-inactive';
+
+     return {
+       require: 'ngMessages',
+       restrict: 'AE',
+       controller: ['$element', '$scope', '$attrs', function($element, $scope, $attrs) {
+         var ctrl = this;
+         var latestKey = 0;
+         var nextAttachId = 0;
+
+         this.getAttachId = function getAttachId() { return nextAttachId++; };
+
+         var messages = this.messages = {};
+         var renderLater, cachedCollection;
+
+         this.render = function(collection) {
+           collection = collection || {};
+
+           renderLater = false;
+           cachedCollection = collection;
+
+           // this is true if the attribute is empty or if the attribute value is truthy
+           var multiple = isAttrTruthy($scope, $attrs.ngMessagesMultiple) ||
+                          isAttrTruthy($scope, $attrs.multiple);
+
+           var unmatchedMessages = [];
+           var matchedKeys = {};
+           var messageItem = ctrl.head;
+           var messageFound = false;
+           var totalMessages = 0;
+
+           // we use != instead of !== to allow for both undefined and null values
+           while (messageItem != null) {
+             totalMessages++;
+             var messageCtrl = messageItem.message;
+
+             var messageUsed = false;
+             if (!messageFound) {
+               forEach(collection, function(value, key) {
+                 if (!messageUsed && truthy(value) && messageCtrl.test(key)) {
+                   // this is to prevent the same error name from showing up twice
+                   if (matchedKeys[key]) return;
+                   matchedKeys[key] = true;
+
+                   messageUsed = true;
+                   messageCtrl.attach();
+                 }
+               });
+             }
+
+             if (messageUsed) {
+               // unless we want to display multiple messages then we should
+               // set a flag here to avoid displaying the next message in the list
+               messageFound = !multiple;
+             } else {
+               unmatchedMessages.push(messageCtrl);
+             }
+
+             messageItem = messageItem.next;
+           }
+
+           forEach(unmatchedMessages, function(messageCtrl) {
+             messageCtrl.detach();
+           });
+
+           unmatchedMessages.length !== totalMessages
+              ? $animate.setClass($element, ACTIVE_CLASS, INACTIVE_CLASS)
+              : $animate.setClass($element, INACTIVE_CLASS, ACTIVE_CLASS);
+         };
+
+         $scope.$watchCollection($attrs.ngMessages || $attrs['for'], ctrl.render);
+
+         // If the element is destroyed, proactively destroy all the currently visible messages
+         $element.on('$destroy', function() {
+           forEach(messages, function(item) {
+             item.message.detach();
+           });
+         });
+
+         this.reRender = function() {
+           if (!renderLater) {
+             renderLater = true;
+             $scope.$evalAsync(function() {
+               if (renderLater) {
+                 cachedCollection && ctrl.render(cachedCollection);
+               }
+             });
+           }
+         };
+
+         this.register = function(comment, messageCtrl) {
+           var nextKey = latestKey.toString();
+           messages[nextKey] = {
+             message: messageCtrl
+           };
+           insertMessageNode($element[0], comment, nextKey);
+           comment.$$ngMessageNode = nextKey;
+           latestKey++;
+
+           ctrl.reRender();
+         };
+
+         this.deregister = function(comment) {
+           var key = comment.$$ngMessageNode;
+           delete comment.$$ngMessageNode;
+           removeMessageNode($element[0], comment, key);
+           delete messages[key];
+           ctrl.reRender();
+         };
+
+         function findPreviousMessage(parent, comment) {
+           var prevNode = comment;
+           var parentLookup = [];
+
+           while (prevNode && prevNode !== parent) {
+             var prevKey = prevNode.$$ngMessageNode;
+             if (prevKey && prevKey.length) {
+               return messages[prevKey];
+             }
+
+             // dive deeper into the DOM and examine its children for any ngMessage
+             // comments that may be in an element that appears deeper in the list
+             if (prevNode.childNodes.length && parentLookup.indexOf(prevNode) == -1) {
+               parentLookup.push(prevNode);
+               prevNode = prevNode.childNodes[prevNode.childNodes.length - 1];
+             } else if (prevNode.previousSibling) {
+               prevNode = prevNode.previousSibling;
+             } else {
+               prevNode = prevNode.parentNode;
+               parentLookup.push(prevNode);
+             }
+           }
+         }
+
+         function insertMessageNode(parent, comment, key) {
+           var messageNode = messages[key];
+           if (!ctrl.head) {
+             ctrl.head = messageNode;
+           } else {
+             var match = findPreviousMessage(parent, comment);
+             if (match) {
+               messageNode.next = match.next;
+               match.next = messageNode;
+             } else {
+               messageNode.next = ctrl.head;
+               ctrl.head = messageNode;
+             }
+           }
+         }
+
+         function removeMessageNode(parent, comment, key) {
+           var messageNode = messages[key];
+
+           var match = findPreviousMessage(parent, comment);
+           if (match) {
+             match.next = messageNode.next;
+           } else {
+             ctrl.head = messageNode.next;
+           }
+         }
+       }]
+     };
+
+     function isAttrTruthy(scope, attr) {
+      return (isString(attr) && attr.length === 0) || //empty attribute
+             truthy(scope.$eval(attr));
+     }
+
+     function truthy(val) {
+       return isString(val) ? val.length : !!val;
+     }
+   }])
+
+   /**
+    * @ngdoc directive
+    * @name ngMessagesInclude
+    * @restrict AE
+    * @scope
+    *
+    * @description
+    * `ngMessagesInclude` is a directive with the purpose to import existing ngMessage template
+    * code from a remote template and place the downloaded template code into the exact spot
+    * that the ngMessagesInclude directive is placed within the ngMessages container. This allows
+    * for a series of pre-defined messages to be reused and also allows for the developer to
+    * determine what messages are overridden due to the placement of the ngMessagesInclude directive.
+    *
+    * @usage
+    * ```html
+    * <!-- using attribute directives -->
+    * <ANY ng-messages="expression" role="alert">
+    *   <ANY ng-messages-include="remoteTplString">...</ANY>
+    * </ANY>
+    *
+    * <!-- or by using element directives -->
+    * <ng-messages for="expression" role="alert">
+    *   <ng-messages-include src="expressionValue1">...</ng-messages-include>
+    * </ng-messages>
+    * ```
+    *
+    * {@link module:ngMessages Click here} to learn more about `ngMessages` and `ngMessage`.
+    *
+    * @param {string} ngMessagesInclude|src a string value corresponding to the remote template.
+    */
+   .directive('ngMessagesInclude',
+     ['$templateRequest', '$document', '$compile', function($templateRequest, $document, $compile) {
+
+     return {
+       restrict: 'AE',
+       require: '^^ngMessages', // we only require this for validation sake
+       link: function($scope, element, attrs) {
+         var src = attrs.ngMessagesInclude || attrs.src;
+         $templateRequest(src).then(function(html) {
+           if ($scope.$$destroyed) return;
+
+           $compile(html)($scope, function(contents) {
+             element.after(contents);
+
+             // the anchor is placed for debugging purposes
+             var comment = $compile.$$createComment ?
+                 $compile.$$createComment('ngMessagesInclude', src) :
+                 $document[0].createComment(' ngMessagesInclude: ' + src + ' ');
+             var anchor = jqLite(comment);
+             element.after(anchor);
+
+             // we don't want to pollute the DOM anymore by keeping an empty directive element
+             element.remove();
+           });
+         });
+       }
+     };
+   }])
+
+   /**
+    * @ngdoc directive
+    * @name ngMessage
+    * @restrict AE
+    * @scope
+    *
+    * @description
+    * `ngMessage` is a directive with the purpose to show and hide a particular message.
+    * For `ngMessage` to operate, a parent `ngMessages` directive on a parent DOM element
+    * must be situated since it determines which messages are visible based on the state
+    * of the provided key/value map that `ngMessages` listens on.
+    *
+    * More information about using `ngMessage` can be found in the
+    * {@link module:ngMessages `ngMessages` module documentation}.
+    *
+    * @usage
+    * ```html
+    * <!-- using attribute directives -->
+    * <ANY ng-messages="expression" role="alert">
+    *   <ANY ng-message="stringValue">...</ANY>
+    *   <ANY ng-message="stringValue1, stringValue2, ...">...</ANY>
+    * </ANY>
+    *
+    * <!-- or by using element directives -->
+    * <ng-messages for="expression" role="alert">
+    *   <ng-message when="stringValue">...</ng-message>
+    *   <ng-message when="stringValue1, stringValue2, ...">...</ng-message>
+    * </ng-messages>
+    * ```
+    *
+    * @param {expression} ngMessage|when a string value corresponding to the message key.
+    */
+  .directive('ngMessage', ngMessageDirectiveFactory())
+
+
+   /**
+    * @ngdoc directive
+    * @name ngMessageExp
+    * @restrict AE
+    * @priority 1
+    * @scope
+    *
+    * @description
+    * `ngMessageExp` is a directive with the purpose to show and hide a particular message.
+    * For `ngMessageExp` to operate, a parent `ngMessages` directive on a parent DOM element
+    * must be situated since it determines which messages are visible based on the state
+    * of the provided key/value map that `ngMessages` listens on.
+    *
+    * @usage
+    * ```html
+    * <!-- using attribute directives -->
+    * <ANY ng-messages="expression">
+    *   <ANY ng-message-exp="expressionValue">...</ANY>
+    * </ANY>
+    *
+    * <!-- or by using element directives -->
+    * <ng-messages for="expression">
+    *   <ng-message when-exp="expressionValue">...</ng-message>
+    * </ng-messages>
+    * ```
+    *
+    * {@link module:ngMessages Click here} to learn more about `ngMessages` and `ngMessage`.
+    *
+    * @param {expression} ngMessageExp|whenExp an expression value corresponding to the message key.
+    */
+  .directive('ngMessageExp', ngMessageDirectiveFactory());
+
+function ngMessageDirectiveFactory() {
+  return ['$animate', function($animate) {
+    return {
+      restrict: 'AE',
+      transclude: 'element',
+      priority: 1, // must run before ngBind, otherwise the text is set on the comment
+      terminal: true,
+      require: '^^ngMessages',
+      link: function(scope, element, attrs, ngMessagesCtrl, $transclude) {
+        var commentNode = element[0];
+
+        var records;
+        var staticExp = attrs.ngMessage || attrs.when;
+        var dynamicExp = attrs.ngMessageExp || attrs.whenExp;
+        var assignRecords = function(items) {
+          records = items
+              ? (isArray(items)
+                    ? items
+                    : items.split(/[\s,]+/))
+              : null;
+          ngMessagesCtrl.reRender();
+        };
+
+        if (dynamicExp) {
+          assignRecords(scope.$eval(dynamicExp));
+          scope.$watchCollection(dynamicExp, assignRecords);
+        } else {
+          assignRecords(staticExp);
+        }
+
+        var currentElement, messageCtrl;
+        ngMessagesCtrl.register(commentNode, messageCtrl = {
+          test: function(name) {
+            return contains(records, name);
+          },
+          attach: function() {
+            if (!currentElement) {
+              $transclude(scope, function(elm) {
+                $animate.enter(elm, null, element);
+                currentElement = elm;
+
+                // Each time we attach this node to a message we get a new id that we can match
+                // when we are destroying the node later.
+                var $$attachId = currentElement.$$attachId = ngMessagesCtrl.getAttachId();
+
+                // in the event that the element or a parent element is destroyed
+                // by another structural directive then it's time
+                // to deregister the message from the controller
+                currentElement.on('$destroy', function() {
+                  if (currentElement && currentElement.$$attachId === $$attachId) {
+                    ngMessagesCtrl.deregister(commentNode);
+                    messageCtrl.detach();
+                  }
+                });
+              });
+            }
+          },
+          detach: function() {
+            if (currentElement) {
+              var elm = currentElement;
+              currentElement = null;
+              $animate.leave(elm);
+            }
+          }
+        });
+      }
+    };
+  }];
+
+  function contains(collection, key) {
+    if (collection) {
+      return isArray(collection)
+          ? collection.indexOf(key) >= 0
+          : collection.hasOwnProperty(key);
+    }
+  }
+}
+
+
+})(window, window.angular);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-messages.min.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-messages.min.js b/rocketmq-console/src/main/resources/static/vendor/angular/angular-messages.min.js
new file mode 100644
index 0000000..bc9b10c
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-messages.min.js
@@ -0,0 +1,12 @@
+/*
+ AngularJS v1.5.6
+ (c) 2010-2016 Google, Inc. http://angularjs.org
+ License: MIT
+*/
+(function(A,d){'use strict';function p(){return["$animate",function(w){return{restrict:"AE",transclude:"element",priority:1,terminal:!0,require:"^^ngMessages",link:function(n,l,a,c,m){var k=l[0],f,q=a.ngMessage||a.when;a=a.ngMessageExp||a.whenExp;var d=function(a){f=a?x(a)?a:a.split(/[\s,]+/):null;c.reRender()};a?(d(n.$eval(a)),n.$watchCollection(a,d)):d(q);var e,r;c.register(k,r={test:function(a){var g=f;a=g?x(g)?0<=g.indexOf(a):g.hasOwnProperty(a):void 0;return a},attach:function(){e||m(n,function(a){w.enter(a,
+null,l);e=a;var g=e.$$attachId=c.getAttachId();e.on("$destroy",function(){e&&e.$$attachId===g&&(c.deregister(k),r.detach())})})},detach:function(){if(e){var a=e;e=null;w.leave(a)}}})}}}]}var x=d.isArray,t=d.forEach,y=d.isString,z=d.element;d.module("ngMessages",[]).directive("ngMessages",["$animate",function(d){function n(a,c){return y(c)&&0===c.length||l(a.$eval(c))}function l(a){return y(a)?a.length:!!a}return{require:"ngMessages",restrict:"AE",controller:["$element","$scope","$attrs",function(a,
+c,m){function k(a,c){for(var b=c,f=[];b&&b!==a;){var h=b.$$ngMessageNode;if(h&&h.length)return e[h];b.childNodes.length&&-1==f.indexOf(b)?(f.push(b),b=b.childNodes[b.childNodes.length-1]):b.previousSibling?b=b.previousSibling:(b=b.parentNode,f.push(b))}}var f=this,q=0,p=0;this.getAttachId=function(){return p++};var e=this.messages={},r,s;this.render=function(g){g=g||{};r=!1;s=g;for(var e=n(c,m.ngMessagesMultiple)||n(c,m.multiple),b=[],q={},h=f.head,k=!1,p=0;null!=h;){p++;var u=h.message,v=!1;k||t(g,
+function(a,b){!v&&l(a)&&u.test(b)&&!q[b]&&(v=q[b]=!0,u.attach())});v?k=!e:b.push(u);h=h.next}t(b,function(a){a.detach()});b.length!==p?d.setClass(a,"ng-active","ng-inactive"):d.setClass(a,"ng-inactive","ng-active")};c.$watchCollection(m.ngMessages||m["for"],f.render);a.on("$destroy",function(){t(e,function(a){a.message.detach()})});this.reRender=function(){r||(r=!0,c.$evalAsync(function(){r&&s&&f.render(s)}))};this.register=function(g,c){var b=q.toString();e[b]={message:c};var d=a[0],h=e[b];f.head?
+(d=k(d,g))?(h.next=d.next,d.next=h):(h.next=f.head,f.head=h):f.head=h;g.$$ngMessageNode=b;q++;f.reRender()};this.deregister=function(c){var d=c.$$ngMessageNode;delete c.$$ngMessageNode;var b=e[d];(c=k(a[0],c))?c.next=b.next:f.head=b.next;delete e[d];f.reRender()}}]}}]).directive("ngMessagesInclude",["$templateRequest","$document","$compile",function(d,n,l){return{restrict:"AE",require:"^^ngMessages",link:function(a,c,m){var k=m.ngMessagesInclude||m.src;d(k).then(function(d){a.$$destroyed||l(d)(a,
+function(a){c.after(a);a=l.$$createComment?l.$$createComment("ngMessagesInclude",k):n[0].createComment(" ngMessagesInclude: "+k+" ");a=z(a);c.after(a);c.remove()})})}}}]).directive("ngMessage",p()).directive("ngMessageExp",p())})(window,window.angular);
+//# sourceMappingURL=angular-messages.min.js.map

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-messages.min.js.map
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-messages.min.js.map b/rocketmq-console/src/main/resources/static/vendor/angular/angular-messages.min.js.map
new file mode 100644
index 0000000..4ecbd94
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-messages.min.js.map
@@ -0,0 +1,8 @@
+{
+"version":3,
+"file":"angular-messages.min.js",
+"lineCount":11,
+"mappings":"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",
+"sources":["angular-messages.js"],
+"names":["window","angular","ngMessageDirectiveFactory","$animate","restrict","transclude","priority","terminal","require","link","scope","element","attrs","ngMessagesCtrl","$transclude","commentNode","records","staticExp","ngMessage","when","dynamicExp","ngMessageExp","whenExp","assignRecords","items","isArray","split","reRender","$eval","$watchCollection","currentElement","messageCtrl","register","test","name","collection","indexOf","hasOwnProperty","attach","elm","enter","$$attachId","getAttachId","on","deregister","detach","leave","forEach","isString","jqLite","module","directive","isAttrTruthy","attr","length","truthy","val","controller","$element","$scope","$attrs","findPreviousMessage","parent","comment","prevNode","parentLookup","prevKey","$$ngMessageNode","messages","childNodes","push","previousSibling","parentNode","ctrl","latestKey","nextAttachId","this.getAttachId","renderLater","cachedCollection","render","this.render","multiple","ngMessagesMultiple","unmatchedMessages"
 ,"matchedKeys","messageItem","head","messageFound","totalMessages","message","messageUsed","value","key","next","setClass","ACTIVE_CLASS","INACTIVE_CLASS","ngMessages","item","this.reRender","$evalAsync","this.register","nextKey","toString","messageNode","match","this.deregister","$templateRequest","$document","$compile","src","ngMessagesInclude","then","html","$$destroyed","contents","after","$$createComment","createComment","anchor","remove"]
+}



[34/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-parse-ext.min.js.map
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-parse-ext.min.js.map b/rocketmq-console/src/main/resources/static/vendor/angular/angular-parse-ext.min.js.map
new file mode 100644
index 0000000..9f75d04
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-parse-ext.min.js.map
@@ -0,0 +1,8 @@
+{
+"version":3,
+"file":"angular-parse-ext.min.js",
+"lineCount":48,
+"mappings":"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",
+"sources":["angular-parse-ext.js"],
+"names":["window","angular","isValidIdentifierStart","ch","cp","isValidIdentifierContinue","module","config","$parseProvider","setIdentifierFns"]
+}


[48/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/client/MQAdminExtImpl.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/client/MQAdminExtImpl.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/client/MQAdminExtImpl.java
new file mode 100644
index 0000000..0eba3a5
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/client/MQAdminExtImpl.java
@@ -0,0 +1,501 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.service.client;
+
+import com.google.common.base.Throwables;
+import java.io.UnsupportedEncodingException;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+import org.apache.rocketmq.client.QueryResult;
+import org.apache.rocketmq.client.exception.MQBrokerException;
+import org.apache.rocketmq.client.exception.MQClientException;
+import org.apache.rocketmq.client.impl.MQAdminImpl;
+import org.apache.rocketmq.common.TopicConfig;
+import org.apache.rocketmq.common.admin.ConsumeStats;
+import org.apache.rocketmq.common.admin.RollbackStats;
+import org.apache.rocketmq.common.admin.TopicStatsTable;
+import org.apache.rocketmq.common.message.MessageClientIDSetter;
+import org.apache.rocketmq.common.message.MessageExt;
+import org.apache.rocketmq.common.message.MessageQueue;
+import org.apache.rocketmq.common.protocol.RequestCode;
+import org.apache.rocketmq.common.protocol.ResponseCode;
+import org.apache.rocketmq.common.protocol.body.BrokerStatsData;
+import org.apache.rocketmq.common.protocol.body.ClusterInfo;
+import org.apache.rocketmq.common.protocol.body.ConsumeMessageDirectlyResult;
+import org.apache.rocketmq.common.protocol.body.ConsumeStatsList;
+import org.apache.rocketmq.common.protocol.body.ConsumerConnection;
+import org.apache.rocketmq.common.protocol.body.ConsumerRunningInfo;
+import org.apache.rocketmq.common.protocol.body.GroupList;
+import org.apache.rocketmq.common.protocol.body.KVTable;
+import org.apache.rocketmq.common.protocol.body.ProducerConnection;
+import org.apache.rocketmq.common.protocol.body.QueueTimeSpan;
+import org.apache.rocketmq.common.protocol.body.SubscriptionGroupWrapper;
+import org.apache.rocketmq.common.protocol.body.TopicConfigSerializeWrapper;
+import org.apache.rocketmq.common.protocol.body.TopicList;
+import org.apache.rocketmq.common.protocol.route.TopicRouteData;
+import org.apache.rocketmq.common.subscription.SubscriptionGroupConfig;
+import org.apache.rocketmq.console.util.JsonUtil;
+import org.apache.rocketmq.remoting.RemotingClient;
+import org.apache.rocketmq.remoting.exception.RemotingCommandException;
+import org.apache.rocketmq.remoting.exception.RemotingConnectException;
+import org.apache.rocketmq.remoting.exception.RemotingException;
+import org.apache.rocketmq.remoting.exception.RemotingSendRequestException;
+import org.apache.rocketmq.remoting.exception.RemotingTimeoutException;
+import org.apache.rocketmq.remoting.protocol.RemotingCommand;
+import org.apache.rocketmq.tools.admin.MQAdminExt;
+import org.apache.rocketmq.tools.admin.api.MessageTrack;
+import org.joor.Reflect;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import static org.apache.rocketmq.remoting.protocol.RemotingSerializable.decode;
+
+@Service
+public class MQAdminExtImpl implements MQAdminExt {
+    private Logger logger = LoggerFactory.getLogger(MQAdminExtImpl.class);
+
+    public MQAdminExtImpl() {
+    }
+
+    @Override
+    public void updateBrokerConfig(String brokerAddr, Properties properties)
+        throws RemotingConnectException, RemotingSendRequestException, RemotingTimeoutException,
+        UnsupportedEncodingException, InterruptedException, MQBrokerException {
+        MQAdminInstance.threadLocalMQAdminExt().updateBrokerConfig(brokerAddr, properties);
+    }
+
+    @Override
+    public void createAndUpdateTopicConfig(String addr, TopicConfig config)
+        throws RemotingException, MQBrokerException, InterruptedException, MQClientException {
+        MQAdminInstance.threadLocalMQAdminExt().createAndUpdateTopicConfig(addr, config);
+    }
+
+    @Override
+    public void createAndUpdateSubscriptionGroupConfig(String addr, SubscriptionGroupConfig config)
+        throws RemotingException, MQBrokerException, InterruptedException, MQClientException {
+        MQAdminInstance.threadLocalMQAdminExt().createAndUpdateSubscriptionGroupConfig(addr, config);
+    }
+
+    @Override
+    public SubscriptionGroupConfig examineSubscriptionGroupConfig(String addr, String group) {
+        RemotingClient remotingClient = MQAdminInstance.threadLocalRemotingClient();
+        RemotingCommand request = RemotingCommand.createRequestCommand(RequestCode.GET_ALL_SUBSCRIPTIONGROUP_CONFIG, null);
+        RemotingCommand response = null;
+        try {
+            response = remotingClient.invokeSync(addr, request, 3000);
+        }
+        catch (Exception err) {
+            throw Throwables.propagate(err);
+        }
+        assert response != null;
+        switch (response.getCode()) {
+            case ResponseCode.SUCCESS: {
+                SubscriptionGroupWrapper subscriptionGroupWrapper = decode(response.getBody(), SubscriptionGroupWrapper.class);
+                return subscriptionGroupWrapper.getSubscriptionGroupTable().get(group);
+            }
+            default:
+                throw Throwables.propagate(new MQBrokerException(response.getCode(), response.getRemark()));
+        }
+    }
+
+    @Override
+    public TopicConfig examineTopicConfig(String addr, String topic) {
+        RemotingClient remotingClient = MQAdminInstance.threadLocalRemotingClient();
+        RemotingCommand request = RemotingCommand.createRequestCommand(RequestCode.GET_ALL_TOPIC_CONFIG, null);
+        RemotingCommand response = null;
+        try {
+            response = remotingClient.invokeSync(addr, request, 3000);
+        }
+        catch (Exception err) {
+            throw Throwables.propagate(err);
+        }
+        switch (response.getCode()) {
+            case ResponseCode.SUCCESS: {
+                TopicConfigSerializeWrapper topicConfigSerializeWrapper = decode(response.getBody(), TopicConfigSerializeWrapper.class);
+                return topicConfigSerializeWrapper.getTopicConfigTable().get(topic);
+            }
+            default:
+                throw Throwables.propagate(new MQBrokerException(response.getCode(), response.getRemark()));
+        }
+    }
+
+    @Override
+    public TopicStatsTable examineTopicStats(String topic)
+        throws RemotingException, MQClientException, InterruptedException, MQBrokerException {
+        return MQAdminInstance.threadLocalMQAdminExt().examineTopicStats(topic);
+    }
+
+    @Override
+    public TopicList fetchAllTopicList() throws RemotingException, MQClientException, InterruptedException {
+        TopicList topicList = MQAdminInstance.threadLocalMQAdminExt().fetchAllTopicList();
+        logger.debug("op=look={}", JsonUtil.obj2String(topicList.getTopicList()));
+        return topicList;
+    }
+
+    @Override
+    public KVTable fetchBrokerRuntimeStats(String brokerAddr)
+        throws RemotingConnectException, RemotingSendRequestException, RemotingTimeoutException,
+        InterruptedException, MQBrokerException {
+        return MQAdminInstance.threadLocalMQAdminExt().fetchBrokerRuntimeStats(brokerAddr);
+    }
+
+    @Override
+    public ConsumeStats examineConsumeStats(String consumerGroup)
+        throws RemotingException, MQClientException, InterruptedException, MQBrokerException {
+        return MQAdminInstance.threadLocalMQAdminExt().examineConsumeStats(consumerGroup);
+    }
+
+    @Override
+    public ConsumeStats examineConsumeStats(String consumerGroup, String topic)
+        throws RemotingException, MQClientException, InterruptedException, MQBrokerException {
+        return MQAdminInstance.threadLocalMQAdminExt().examineConsumeStats(consumerGroup, topic);
+    }
+
+    @Override
+    public ClusterInfo examineBrokerClusterInfo()
+        throws InterruptedException, MQBrokerException, RemotingTimeoutException, RemotingSendRequestException,
+        RemotingConnectException {
+        return MQAdminInstance.threadLocalMQAdminExt().examineBrokerClusterInfo();
+    }
+
+    @Override
+    public TopicRouteData examineTopicRouteInfo(String topic)
+        throws RemotingException, MQClientException, InterruptedException {
+        return MQAdminInstance.threadLocalMQAdminExt().examineTopicRouteInfo(topic);
+    }
+
+    @Override
+    public ConsumerConnection examineConsumerConnectionInfo(String consumerGroup)
+        throws RemotingConnectException, RemotingSendRequestException, RemotingTimeoutException,
+        InterruptedException, MQBrokerException, RemotingException, MQClientException {
+        return MQAdminInstance.threadLocalMQAdminExt().examineConsumerConnectionInfo(consumerGroup);
+    }
+
+    @Override
+    public ProducerConnection examineProducerConnectionInfo(String producerGroup, String topic)
+        throws RemotingException, MQClientException, InterruptedException, MQBrokerException {
+        return MQAdminInstance.threadLocalMQAdminExt().examineProducerConnectionInfo(producerGroup, topic);
+    }
+
+    @Override
+    public List<String> getNameServerAddressList() {
+        return MQAdminInstance.threadLocalMQAdminExt().getNameServerAddressList();
+    }
+
+    @Override
+    public int wipeWritePermOfBroker(String namesrvAddr, String brokerName)
+        throws RemotingCommandException, RemotingConnectException, RemotingSendRequestException,
+        RemotingTimeoutException, InterruptedException, MQClientException {
+        return MQAdminInstance.threadLocalMQAdminExt().wipeWritePermOfBroker(namesrvAddr, brokerName);
+    }
+
+    @Override
+    public void putKVConfig(String namespace, String key, String value) {
+        MQAdminInstance.threadLocalMQAdminExt().putKVConfig(namespace, key, value);
+    }
+
+    @Override
+    public String getKVConfig(String namespace, String key)
+        throws RemotingException, MQClientException, InterruptedException {
+        return MQAdminInstance.threadLocalMQAdminExt().getKVConfig(namespace, key);
+    }
+
+    @Override
+    public KVTable getKVListByNamespace(String namespace)
+        throws RemotingException, MQClientException, InterruptedException {
+        return MQAdminInstance.threadLocalMQAdminExt().getKVListByNamespace(namespace);
+    }
+
+    @Override
+    public void deleteTopicInBroker(Set<String> addrs, String topic)
+        throws RemotingException, MQBrokerException, InterruptedException, MQClientException {
+        logger.info("addrs={} topic={}", JsonUtil.obj2String(addrs), topic);
+        MQAdminInstance.threadLocalMQAdminExt().deleteTopicInBroker(addrs, topic);
+    }
+
+    @Override
+    public void deleteTopicInNameServer(Set<String> addrs, String topic)
+        throws RemotingException, MQBrokerException, InterruptedException, MQClientException {
+        MQAdminInstance.threadLocalMQAdminExt().deleteTopicInNameServer(addrs, topic);
+    }
+
+    @Override
+    public void deleteSubscriptionGroup(String addr, String groupName)
+        throws RemotingException, MQBrokerException, InterruptedException, MQClientException {
+        MQAdminInstance.threadLocalMQAdminExt().deleteSubscriptionGroup(addr, groupName);
+    }
+
+    @Override
+    public void createAndUpdateKvConfig(String namespace, String key, String value)
+        throws RemotingException, MQBrokerException, InterruptedException, MQClientException {
+        MQAdminInstance.threadLocalMQAdminExt().createAndUpdateKvConfig(namespace, key, value);
+    }
+
+    @Override
+    public void deleteKvConfig(String namespace, String key)
+        throws RemotingException, MQBrokerException, InterruptedException, MQClientException {
+        MQAdminInstance.threadLocalMQAdminExt().deleteKvConfig(namespace, key);
+    }
+
+    @Override
+    public List<RollbackStats> resetOffsetByTimestampOld(String consumerGroup, String topic, long timestamp,
+        boolean force) throws RemotingException, MQBrokerException, InterruptedException, MQClientException {
+        return MQAdminInstance.threadLocalMQAdminExt().resetOffsetByTimestampOld(consumerGroup, topic, timestamp, force);
+    }
+
+    @Override
+    public Map<MessageQueue, Long> resetOffsetByTimestamp(String topic, String group, long timestamp,
+        boolean isForce) throws RemotingException, MQBrokerException, InterruptedException, MQClientException {
+        return MQAdminInstance.threadLocalMQAdminExt().resetOffsetByTimestamp(topic, group, timestamp, isForce);
+    }
+
+    @Override
+    public void resetOffsetNew(String consumerGroup, String topic, long timestamp)
+        throws RemotingException, MQBrokerException, InterruptedException, MQClientException {
+        MQAdminInstance.threadLocalMQAdminExt().resetOffsetNew(consumerGroup, topic, timestamp);
+    }
+
+    @Override
+    public Map<String, Map<MessageQueue, Long>> getConsumeStatus(String topic, String group,
+        String clientAddr) throws RemotingException, MQBrokerException, InterruptedException, MQClientException {
+        return MQAdminInstance.threadLocalMQAdminExt().getConsumeStatus(topic, group, clientAddr);
+    }
+
+    @Override
+    public void createOrUpdateOrderConf(String key, String value, boolean isCluster)
+        throws RemotingException, MQBrokerException, InterruptedException, MQClientException {
+        MQAdminInstance.threadLocalMQAdminExt().createOrUpdateOrderConf(key, value, isCluster);
+    }
+
+    @Override
+    public GroupList queryTopicConsumeByWho(String topic)
+        throws RemotingConnectException, RemotingSendRequestException, RemotingTimeoutException,
+        InterruptedException, MQBrokerException, RemotingException, MQClientException {
+        return MQAdminInstance.threadLocalMQAdminExt().queryTopicConsumeByWho(topic);
+    }
+
+    @Override
+    public boolean cleanExpiredConsumerQueue(String cluster)
+        throws RemotingConnectException, RemotingSendRequestException, RemotingTimeoutException, MQClientException,
+        InterruptedException {
+        return MQAdminInstance.threadLocalMQAdminExt().cleanExpiredConsumerQueue(cluster);
+    }
+
+    @Override
+    public boolean cleanExpiredConsumerQueueByAddr(String addr)
+        throws RemotingConnectException, RemotingSendRequestException, RemotingTimeoutException, MQClientException,
+        InterruptedException {
+        return MQAdminInstance.threadLocalMQAdminExt().cleanExpiredConsumerQueueByAddr(addr);
+    }
+
+    @Override
+    public ConsumerRunningInfo getConsumerRunningInfo(String consumerGroup, String clientId, boolean jstack)
+        throws RemotingException, MQClientException, InterruptedException {
+        return MQAdminInstance.threadLocalMQAdminExt().getConsumerRunningInfo(consumerGroup, clientId, jstack);
+    }
+
+    @Override
+    public ConsumeMessageDirectlyResult consumeMessageDirectly(String consumerGroup, String clientId,
+        String msgId) throws RemotingException, MQClientException, InterruptedException, MQBrokerException {
+        return MQAdminInstance.threadLocalMQAdminExt().consumeMessageDirectly(consumerGroup, clientId, msgId);
+    }
+
+    @Override
+    public List<MessageTrack> messageTrackDetail(MessageExt msg)
+        throws RemotingException, MQClientException, InterruptedException, MQBrokerException {
+        return MQAdminInstance.threadLocalMQAdminExt().messageTrackDetail(msg);
+    }
+
+    @Override
+    public void cloneGroupOffset(String srcGroup, String destGroup, String topic, boolean isOffline)
+        throws RemotingException, MQClientException, InterruptedException, MQBrokerException {
+        MQAdminInstance.threadLocalMQAdminExt().cloneGroupOffset(srcGroup, destGroup, topic, isOffline);
+    }
+
+    @Override
+    public void createTopic(String key, String newTopic, int queueNum) throws MQClientException {
+        MQAdminInstance.threadLocalMQAdminExt().createTopic(key, newTopic, queueNum);
+    }
+
+    @Override
+    public void createTopic(String key, String newTopic, int queueNum, int topicSysFlag)
+        throws MQClientException {
+        MQAdminInstance.threadLocalMQAdminExt().createTopic(key, newTopic, queueNum, topicSysFlag);
+    }
+
+    @Override
+    public long searchOffset(MessageQueue mq, long timestamp) throws MQClientException {
+        return MQAdminInstance.threadLocalMQAdminExt().searchOffset(mq, timestamp);
+    }
+
+    @Override
+    public long maxOffset(MessageQueue mq) throws MQClientException {
+        return MQAdminInstance.threadLocalMQAdminExt().maxOffset(mq);
+    }
+
+    @Override
+    public long minOffset(MessageQueue mq) throws MQClientException {
+        return MQAdminInstance.threadLocalMQAdminExt().minOffset(mq);
+    }
+
+    @Override
+    public long earliestMsgStoreTime(MessageQueue mq) throws MQClientException {
+        return MQAdminInstance.threadLocalMQAdminExt().earliestMsgStoreTime(mq);
+    }
+
+    @Override
+    public MessageExt viewMessage(String msgId)
+        throws RemotingException, MQBrokerException, InterruptedException, MQClientException {
+        return MQAdminInstance.threadLocalMQAdminExt().viewMessage(msgId);
+    }
+
+    @Override
+    public QueryResult queryMessage(String topic, String key, int maxNum, long begin, long end)
+        throws MQClientException, InterruptedException {
+        return MQAdminInstance.threadLocalMQAdminExt().queryMessage(topic, key, maxNum, begin, end);
+    }
+
+    @Override
+    @Deprecated
+    public void start() throws MQClientException {
+        throw new IllegalStateException("thisMethod is deprecated.use org.apache.rocketmq.console.aspect.admin.MQAdminAspect instead of this");
+    }
+
+    @Override
+    @Deprecated
+    public void shutdown() {
+        throw new IllegalStateException("thisMethod is deprecated.use org.apache.rocketmq.console.aspect.admin.MQAdminAspect instead of this");
+    }
+
+    // below is 3.2.6->3.5.8 updated
+
+    @Override
+    public List<QueueTimeSpan> queryConsumeTimeSpan(String topic,
+        String group) throws InterruptedException, MQBrokerException, RemotingException, MQClientException {
+        return MQAdminInstance.threadLocalMQAdminExt().queryConsumeTimeSpan(topic, group);
+    }
+
+    //MessageClientIDSetter.getNearlyTimeFromID has bug,so we subtract half a day
+    //next version we will remove it
+    //https://issues.apache.org/jira/browse/ROCKETMQ-111
+    //https://github.com/apache/incubator-rocketmq/pull/69
+    @Override
+    public MessageExt viewMessage(String topic,
+        String msgId) throws RemotingException, MQBrokerException, InterruptedException, MQClientException {
+        logger.info("MessageClientIDSetter.getNearlyTimeFromID(msgId)={} msgId={}", MessageClientIDSetter.getNearlyTimeFromID(msgId), msgId);
+        try {
+            return viewMessage(msgId);
+        }
+        catch (Exception e) {
+        }
+        MQAdminImpl mqAdminImpl = MQAdminInstance.threadLocalMqClientInstance().getMQAdminImpl();
+        QueryResult qr = Reflect.on(mqAdminImpl).call("queryMessage", topic, msgId, 32,
+            MessageClientIDSetter.getNearlyTimeFromID(msgId).getTime() - 1000 * 60 * 60 * 13L, Long.MAX_VALUE, true).get();
+        if (qr != null && qr.getMessageList() != null && qr.getMessageList().size() > 0) {
+            return qr.getMessageList().get(0);
+        }
+        else {
+            return null;
+        }
+    }
+
+    @Override
+    public ConsumeMessageDirectlyResult consumeMessageDirectly(String consumerGroup, String clientId, String topic,
+        String msgId) throws RemotingException, MQClientException, InterruptedException, MQBrokerException {
+        return MQAdminInstance.threadLocalMQAdminExt().consumeMessageDirectly(consumerGroup, clientId, topic, msgId);
+    }
+
+    @Override
+    public Properties getBrokerConfig(
+        String brokerAddr) throws RemotingConnectException, RemotingSendRequestException, RemotingTimeoutException, UnsupportedEncodingException, InterruptedException, MQBrokerException {
+        return MQAdminInstance.threadLocalMQAdminExt().getBrokerConfig(brokerAddr);
+    }
+
+    @Override
+    public TopicList fetchTopicsByCLuster(
+        String clusterName) throws RemotingException, MQClientException, InterruptedException {
+        return MQAdminInstance.threadLocalMQAdminExt().fetchTopicsByCLuster(clusterName);
+    }
+
+    @Override
+    public boolean cleanUnusedTopic(
+        String cluster) throws RemotingConnectException, RemotingSendRequestException, RemotingTimeoutException, MQClientException, InterruptedException {
+        return MQAdminInstance.threadLocalMQAdminExt().cleanUnusedTopic(cluster);
+    }
+
+    @Override
+    public boolean cleanUnusedTopicByAddr(
+        String addr) throws RemotingConnectException, RemotingSendRequestException, RemotingTimeoutException, MQClientException, InterruptedException {
+        return MQAdminInstance.threadLocalMQAdminExt().cleanUnusedTopicByAddr(addr);
+    }
+
+    @Override
+    public BrokerStatsData viewBrokerStatsData(String brokerAddr, String statsName,
+        String statsKey) throws RemotingConnectException, RemotingSendRequestException, RemotingTimeoutException, MQClientException, InterruptedException {
+        return MQAdminInstance.threadLocalMQAdminExt().viewBrokerStatsData(brokerAddr, statsName, statsKey);
+    }
+
+    @Override
+    public Set<String> getClusterList(
+        String topic) throws RemotingConnectException, RemotingSendRequestException, RemotingTimeoutException, MQClientException, InterruptedException {
+        return MQAdminInstance.threadLocalMQAdminExt().getClusterList(topic);
+    }
+
+    @Override
+    public ConsumeStatsList fetchConsumeStatsInBroker(String brokerAddr, boolean isOrder,
+        long timeoutMillis) throws RemotingConnectException, RemotingSendRequestException, RemotingTimeoutException, MQClientException, InterruptedException {
+        return MQAdminInstance.threadLocalMQAdminExt().fetchConsumeStatsInBroker(brokerAddr, isOrder, timeoutMillis);
+    }
+
+    @Override
+    public Set<String> getTopicClusterList(
+        String topic) throws InterruptedException, MQBrokerException, MQClientException, RemotingException {
+        return MQAdminInstance.threadLocalMQAdminExt().getTopicClusterList(topic);
+    }
+
+    @Override
+    public SubscriptionGroupWrapper getAllSubscriptionGroup(String brokerAddr,
+        long timeoutMillis) throws InterruptedException, RemotingTimeoutException, RemotingSendRequestException, RemotingConnectException, MQBrokerException {
+        return MQAdminInstance.threadLocalMQAdminExt().getAllSubscriptionGroup(brokerAddr, timeoutMillis);
+    }
+
+    @Override
+    public TopicConfigSerializeWrapper getAllTopicGroup(String brokerAddr,
+        long timeoutMillis) throws InterruptedException, RemotingTimeoutException, RemotingSendRequestException, RemotingConnectException, MQBrokerException {
+        return MQAdminInstance.threadLocalMQAdminExt().getAllTopicGroup(brokerAddr, timeoutMillis);
+    }
+
+    @Override
+    public void updateConsumeOffset(String brokerAddr, String consumeGroup, MessageQueue mq,
+        long offset) throws RemotingException, InterruptedException, MQBrokerException {
+        MQAdminInstance.threadLocalMQAdminExt().updateConsumeOffset(brokerAddr, consumeGroup, mq, offset);
+    }
+
+    // 4.0.0 added
+    @Override public void updateNameServerConfig(Properties properties,
+        List<String> list) throws InterruptedException, RemotingConnectException, UnsupportedEncodingException, RemotingSendRequestException, RemotingTimeoutException, MQClientException, MQBrokerException {
+
+    }
+
+    @Override public Map<String, Properties> getNameServerConfig(
+        List<String> list) throws InterruptedException, RemotingTimeoutException, RemotingSendRequestException, RemotingConnectException, MQClientException, UnsupportedEncodingException {
+        return null;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/client/MQAdminInstance.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/client/MQAdminInstance.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/client/MQAdminInstance.java
new file mode 100644
index 0000000..e914e6c
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/client/MQAdminInstance.java
@@ -0,0 +1,85 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.service.client;
+
+import org.apache.rocketmq.client.exception.MQClientException;
+import org.apache.rocketmq.client.impl.MQClientAPIImpl;
+import org.apache.rocketmq.client.impl.factory.MQClientInstance;
+import org.apache.rocketmq.remoting.RemotingClient;
+import org.apache.rocketmq.tools.admin.DefaultMQAdminExt;
+import org.apache.rocketmq.tools.admin.DefaultMQAdminExtImpl;
+import org.apache.rocketmq.tools.admin.MQAdminExt;
+import org.joor.Reflect;
+
+public class MQAdminInstance {
+    private static final ThreadLocal<DefaultMQAdminExt> MQ_ADMIN_EXT_THREAD_LOCAL = new ThreadLocal<DefaultMQAdminExt>();
+    private static final ThreadLocal<Integer> INIT_COUNTER = new ThreadLocal<Integer>();
+
+    public static MQAdminExt threadLocalMQAdminExt() {
+        DefaultMQAdminExt defaultMQAdminExt = MQ_ADMIN_EXT_THREAD_LOCAL.get();
+        if (defaultMQAdminExt == null) {
+            throw new IllegalStateException("defaultMQAdminExt should be init before you get this");
+        }
+        return defaultMQAdminExt;
+    }
+
+    public static RemotingClient threadLocalRemotingClient() {
+        MQClientInstance mqClientInstance = threadLocalMqClientInstance();
+        MQClientAPIImpl mQClientAPIImpl = Reflect.on(mqClientInstance).get("mQClientAPIImpl");
+        return Reflect.on(mQClientAPIImpl).get("remotingClient");
+    }
+
+    public static MQClientInstance threadLocalMqClientInstance() {
+        DefaultMQAdminExtImpl defaultMQAdminExtImpl = Reflect.on(MQAdminInstance.threadLocalMQAdminExt()).get("defaultMQAdminExtImpl");
+        return Reflect.on(defaultMQAdminExtImpl).get("mqClientInstance");
+    }
+
+    public static void initMQAdminInstance(long timeoutMillis) throws MQClientException {
+        Integer nowCount = INIT_COUNTER.get();
+        if (nowCount == null) {
+            DefaultMQAdminExt defaultMQAdminExt;
+            if (timeoutMillis > 0) {
+                defaultMQAdminExt = new DefaultMQAdminExt(timeoutMillis);
+            }
+            else {
+                defaultMQAdminExt = new DefaultMQAdminExt();
+            }
+            defaultMQAdminExt.setInstanceName(Long.toString(System.currentTimeMillis()));
+            defaultMQAdminExt.start();
+            MQ_ADMIN_EXT_THREAD_LOCAL.set(defaultMQAdminExt);
+            INIT_COUNTER.set(1);
+        }
+        else {
+            INIT_COUNTER.set(nowCount + 1);
+        }
+
+    }
+
+    public static void destroyMQAdminInstance() {
+        Integer nowCount = INIT_COUNTER.get() - 1;
+        if (nowCount > 0) {
+            INIT_COUNTER.set(nowCount);
+            return;
+        }
+        MQAdminExt mqAdminExt = MQ_ADMIN_EXT_THREAD_LOCAL.get();
+        if (mqAdminExt != null) {
+            mqAdminExt.shutdown();
+            MQ_ADMIN_EXT_THREAD_LOCAL.remove();
+            INIT_COUNTER.remove();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/ClusterServiceImpl.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/ClusterServiceImpl.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/ClusterServiceImpl.java
new file mode 100644
index 0000000..e225edc
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/ClusterServiceImpl.java
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package org.apache.rocketmq.console.service.impl;
+
+import org.apache.rocketmq.common.protocol.body.ClusterInfo;
+import org.apache.rocketmq.common.protocol.body.KVTable;
+import org.apache.rocketmq.common.protocol.route.BrokerData;
+import org.apache.rocketmq.tools.admin.MQAdminExt;
+import org.apache.rocketmq.console.service.ClusterService;
+import org.apache.rocketmq.console.util.JsonUtil;
+import com.google.common.base.Throwables;
+import com.google.common.collect.Maps;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Map;
+import java.util.Properties;
+
+@Service
+public class ClusterServiceImpl implements ClusterService {
+    private Logger logger = LoggerFactory.getLogger(ClusterServiceImpl.class);
+    @Resource
+    private MQAdminExt mqAdminExt;
+
+    @Override
+    public Map<String, Object> list() {
+        try {
+            Map<String, Object> resultMap = Maps.newHashMap();
+            ClusterInfo clusterInfo = mqAdminExt.examineBrokerClusterInfo();
+            logger.info("op=look_clusterInfo {}", JsonUtil.obj2String(clusterInfo));
+            Map<String/*brokerName*/, Map<Long/* brokerId */, Object/* brokerDetail */>> brokerServer = Maps.newHashMap();
+            for (BrokerData brokerData : clusterInfo.getBrokerAddrTable().values()) {
+                Map<Long, Object> brokerMasterSlaveMap = Maps.newHashMap();
+                for (Map.Entry<Long/* brokerId */, String/* broker address */> brokerAddr : brokerData.getBrokerAddrs().entrySet()) {
+                    KVTable kvTable = mqAdminExt.fetchBrokerRuntimeStats(brokerAddr.getValue());
+//                KVTable kvTable = mqAdminExt.fetchBrokerRuntimeStats("127.0.0.1:10911");
+                    brokerMasterSlaveMap.put(brokerAddr.getKey(), kvTable.getTable());
+                }
+                brokerServer.put(brokerData.getBrokerName(), brokerMasterSlaveMap);
+            }
+            resultMap.put("clusterInfo", clusterInfo);
+            resultMap.put("brokerServer", brokerServer);
+            return resultMap;
+        }
+        catch (Exception err) {
+            throw Throwables.propagate(err);
+        }
+    }
+
+
+    @Override
+    public Properties getBrokerConfig(String brokerAddr) {
+        try {
+            return mqAdminExt.getBrokerConfig(brokerAddr);
+        }
+        catch (Exception e) {
+            throw Throwables.propagate(e);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/ConsumerServiceImpl.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/ConsumerServiceImpl.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/ConsumerServiceImpl.java
new file mode 100644
index 0000000..715cbf5
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/ConsumerServiceImpl.java
@@ -0,0 +1,341 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package org.apache.rocketmq.console.service.impl;
+
+import com.google.common.base.Predicate;
+import com.google.common.base.Throwables;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.rocketmq.client.exception.MQClientException;
+import org.apache.rocketmq.common.MQVersion;
+import org.apache.rocketmq.common.admin.ConsumeStats;
+import org.apache.rocketmq.common.admin.RollbackStats;
+import org.apache.rocketmq.common.message.MessageQueue;
+import org.apache.rocketmq.common.protocol.ResponseCode;
+import org.apache.rocketmq.common.protocol.body.ClusterInfo;
+import org.apache.rocketmq.common.protocol.body.Connection;
+import org.apache.rocketmq.common.protocol.body.ConsumerConnection;
+import org.apache.rocketmq.common.protocol.body.ConsumerRunningInfo;
+import org.apache.rocketmq.common.protocol.body.GroupList;
+import org.apache.rocketmq.common.protocol.body.SubscriptionGroupWrapper;
+import org.apache.rocketmq.common.protocol.route.BrokerData;
+import org.apache.rocketmq.common.subscription.SubscriptionGroupConfig;
+import org.apache.rocketmq.console.aspect.admin.annotation.MultiMQAdminCmdMethod;
+import org.apache.rocketmq.console.model.ConsumerGroupRollBackStat;
+import org.apache.rocketmq.console.model.GroupConsumeInfo;
+import org.apache.rocketmq.console.model.QueueStatInfo;
+import org.apache.rocketmq.console.model.TopicConsumerInfo;
+import org.apache.rocketmq.console.model.request.ConsumerConfigInfo;
+import org.apache.rocketmq.console.model.request.DeleteSubGroupRequest;
+import org.apache.rocketmq.console.model.request.ResetOffsetRequest;
+import org.apache.rocketmq.console.service.AbstractCommonService;
+import org.apache.rocketmq.console.service.ConsumerService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import static com.google.common.base.Throwables.propagate;
+
+@Service
+public class ConsumerServiceImpl extends AbstractCommonService implements ConsumerService {
+    private Logger logger = LoggerFactory.getLogger(ConsumerServiceImpl.class);
+
+    @Override
+    @MultiMQAdminCmdMethod
+    public List<GroupConsumeInfo> queryGroupList() {
+        Set<String> consumerGroupSet = Sets.newHashSet();
+        try {
+            ClusterInfo clusterInfo = mqAdminExt.examineBrokerClusterInfo();
+            for (BrokerData brokerData : clusterInfo.getBrokerAddrTable().values()) {
+                SubscriptionGroupWrapper subscriptionGroupWrapper = mqAdminExt.getAllSubscriptionGroup(brokerData.selectBrokerAddr(), 3000L);
+                consumerGroupSet.addAll(subscriptionGroupWrapper.getSubscriptionGroupTable().keySet());
+            }
+        }
+        catch (Exception err) {
+            throw Throwables.propagate(err);
+        }
+        List<GroupConsumeInfo> groupConsumeInfoList = Lists.newArrayList();
+        for (String consumerGroup : consumerGroupSet) {
+            groupConsumeInfoList.add(queryGroup(consumerGroup));
+        }
+        Collections.sort(groupConsumeInfoList);
+        return groupConsumeInfoList;
+    }
+
+    @Override
+    @MultiMQAdminCmdMethod
+    public GroupConsumeInfo queryGroup(String consumerGroup) {
+        GroupConsumeInfo groupConsumeInfo = new GroupConsumeInfo();
+        try {
+            ConsumeStats consumeStats = null;
+            try {
+                consumeStats = mqAdminExt.examineConsumeStats(consumerGroup);
+            }
+            catch (Exception e) {
+                logger.warn("examineConsumeStats exception, " + consumerGroup, e);
+            }
+
+            ConsumerConnection consumerConnection = null;
+            try {
+                consumerConnection = mqAdminExt.examineConsumerConnectionInfo(consumerGroup);
+            }
+            catch (Exception e) {
+                logger.warn("examineConsumerConnectionInfo exception, " + consumerGroup, e);
+            }
+
+            groupConsumeInfo.setGroup(consumerGroup);
+
+            if (consumeStats != null) {
+                groupConsumeInfo.setConsumeTps((int)consumeStats.getConsumeTps());
+                groupConsumeInfo.setDiffTotal(consumeStats.computeTotalDiff());
+            }
+
+            if (consumerConnection != null) {
+                groupConsumeInfo.setCount(consumerConnection.getConnectionSet().size());
+                groupConsumeInfo.setMessageModel(consumerConnection.getMessageModel());
+                groupConsumeInfo.setConsumeType(consumerConnection.getConsumeType());
+                groupConsumeInfo.setVersion(MQVersion.getVersionDesc(consumerConnection.computeMinVersion()));
+            }
+        }
+        catch (Exception e) {
+            logger.warn("examineConsumeStats or examineConsumerConnectionInfo exception, "
+                + consumerGroup, e);
+        }
+        return groupConsumeInfo;
+    }
+
+    @Override
+    public List<TopicConsumerInfo> queryConsumeStatsListByGroupName(String groupName) {
+        return queryConsumeStatsList(null, groupName);
+    }
+
+    @Override
+    @MultiMQAdminCmdMethod
+    public List<TopicConsumerInfo> queryConsumeStatsList(final String topic, String groupName) {
+        ConsumeStats consumeStats = null;
+        try {
+            consumeStats = mqAdminExt.examineConsumeStats(groupName, topic);
+        }
+        catch (Exception e) {
+            throw propagate(e);
+        }
+        List<MessageQueue> mqList = Lists.newArrayList(Iterables.filter(consumeStats.getOffsetTable().keySet(), new Predicate<MessageQueue>() {
+            @Override
+            public boolean apply(MessageQueue o) {
+                return StringUtils.isBlank(topic) || o.getTopic().equals(topic);
+            }
+        }));
+        Collections.sort(mqList);
+        List<TopicConsumerInfo> topicConsumerInfoList = Lists.newArrayList();
+        TopicConsumerInfo nowTopicConsumerInfo = null;
+        Map<MessageQueue, String> messageQueueClientMap = getClientConnection(groupName);
+        for (MessageQueue mq : mqList) {
+            if (nowTopicConsumerInfo == null || (!StringUtils.equals(mq.getTopic(), nowTopicConsumerInfo.getTopic()))) {
+                nowTopicConsumerInfo = new TopicConsumerInfo(mq.getTopic());
+                topicConsumerInfoList.add(nowTopicConsumerInfo);
+            }
+            QueueStatInfo queueStatInfo = QueueStatInfo.fromOffsetTableEntry(mq, consumeStats.getOffsetTable().get(mq));
+            queueStatInfo.setClientInfo(messageQueueClientMap.get(mq));
+            nowTopicConsumerInfo.appendQueueStatInfo(queueStatInfo);
+        }
+        return topicConsumerInfoList;
+    }
+
+    private Map<MessageQueue, String> getClientConnection(String groupName) {
+        Map<MessageQueue, String> results = Maps.newHashMap();
+        try {
+            ConsumerConnection consumerConnection = mqAdminExt.examineConsumerConnectionInfo(groupName);
+            for (Connection connection : consumerConnection.getConnectionSet()) {
+                String clinetId = connection.getClientId();
+                ConsumerRunningInfo consumerRunningInfo = mqAdminExt.getConsumerRunningInfo(groupName, clinetId, false);
+                for (MessageQueue messageQueue : consumerRunningInfo.getMqTable().keySet()) {
+//                    results.put(messageQueue, clinetId + " " + connection.getClientAddr());
+                    results.put(messageQueue, clinetId);
+                }
+            }
+        }
+        catch (Exception err) {
+            logger.error("op=getClientConnection_error", err);
+        }
+        return results;
+    }
+
+    @Override
+    @MultiMQAdminCmdMethod
+    public Map<String /*groupName*/, TopicConsumerInfo> queryConsumeStatsListByTopicName(String topic) {
+        Map<String, TopicConsumerInfo> group2ConsumerInfoMap = Maps.newHashMap();
+        try {
+            GroupList groupList = mqAdminExt.queryTopicConsumeByWho(topic);
+            for (String group : groupList.getGroupList()) {
+                List<TopicConsumerInfo> topicConsumerInfoList = null;
+                try {
+                    topicConsumerInfoList = queryConsumeStatsList(topic, group);
+                }
+                catch (Exception ignore) {
+                }
+                group2ConsumerInfoMap.put(group, CollectionUtils.isEmpty(topicConsumerInfoList) ? new TopicConsumerInfo(topic) : topicConsumerInfoList.get(0));
+            }
+            return group2ConsumerInfoMap;
+        }
+        catch (Exception e) {
+            throw propagate(e);
+        }
+    }
+
+    @Override
+    @MultiMQAdminCmdMethod
+    public Map<String, ConsumerGroupRollBackStat> resetOffset(ResetOffsetRequest resetOffsetRequest) {
+        Map<String, ConsumerGroupRollBackStat> groupRollbackStats = Maps.newHashMap();
+        for (String consumerGroup : resetOffsetRequest.getConsumerGroupList()) {
+            try {
+                Map<MessageQueue, Long> rollbackStatsMap =
+                    mqAdminExt.resetOffsetByTimestamp(resetOffsetRequest.getTopic(), consumerGroup, resetOffsetRequest.getResetTime(), resetOffsetRequest.isForce());
+                ConsumerGroupRollBackStat consumerGroupRollBackStat = new ConsumerGroupRollBackStat(true);
+                List<RollbackStats> rollbackStatsList = consumerGroupRollBackStat.getRollbackStatsList();
+                for (Map.Entry<MessageQueue, Long> rollbackStatsEntty : rollbackStatsMap.entrySet()) {
+                    RollbackStats rollbackStats = new RollbackStats();
+                    rollbackStats.setRollbackOffset(rollbackStatsEntty.getValue());
+                    rollbackStats.setQueueId(rollbackStatsEntty.getKey().getQueueId());
+                    rollbackStats.setBrokerName(rollbackStatsEntty.getKey().getBrokerName());
+                    rollbackStatsList.add(rollbackStats);
+                }
+                groupRollbackStats.put(consumerGroup, consumerGroupRollBackStat);
+            }
+            catch (MQClientException e) {
+                if (ResponseCode.CONSUMER_NOT_ONLINE == e.getResponseCode()) {
+                    try {
+                        ConsumerGroupRollBackStat consumerGroupRollBackStat = new ConsumerGroupRollBackStat(true);
+                        List<RollbackStats> rollbackStatsList = mqAdminExt.resetOffsetByTimestampOld(consumerGroup, resetOffsetRequest.getTopic(), resetOffsetRequest.getResetTime(), true);
+                        consumerGroupRollBackStat.setRollbackStatsList(rollbackStatsList);
+                        groupRollbackStats.put(consumerGroup, consumerGroupRollBackStat);
+                        continue;
+                    }
+                    catch (Exception err) {
+                        logger.error("op=resetOffset_which_not_online_error", err);
+                    }
+                }
+                else {
+                    logger.error("op=resetOffset_error", e);
+                }
+                groupRollbackStats.put(consumerGroup, new ConsumerGroupRollBackStat(false, e.getMessage()));
+            }
+            catch (Exception e) {
+                logger.error("op=resetOffset_error", e);
+                groupRollbackStats.put(consumerGroup, new ConsumerGroupRollBackStat(false, e.getMessage()));
+            }
+        }
+        return groupRollbackStats;
+    }
+
+    @Override
+    @MultiMQAdminCmdMethod
+    public List<ConsumerConfigInfo> examineSubscriptionGroupConfig(String group) {
+        List<ConsumerConfigInfo> consumerConfigInfoList = Lists.newArrayList();
+        try {
+            ClusterInfo clusterInfo = mqAdminExt.examineBrokerClusterInfo();
+            for (String brokerName : clusterInfo.getBrokerAddrTable().keySet()) { //foreach brokerName
+                String brokerAddress = clusterInfo.getBrokerAddrTable().get(brokerName).selectBrokerAddr();
+                SubscriptionGroupConfig subscriptionGroupConfig = mqAdminExt.examineSubscriptionGroupConfig(brokerAddress, group);
+                if (subscriptionGroupConfig == null) {
+                    continue;
+                }
+                consumerConfigInfoList.add(new ConsumerConfigInfo(Lists.newArrayList(brokerName), subscriptionGroupConfig));
+            }
+        }
+        catch (Exception e) {
+            throw propagate(e);
+        }
+        return consumerConfigInfoList;
+    }
+
+    @Override
+    @MultiMQAdminCmdMethod
+    public boolean deleteSubGroup(DeleteSubGroupRequest deleteSubGroupRequest) {
+        try {
+            ClusterInfo clusterInfo = mqAdminExt.examineBrokerClusterInfo();
+            for (String brokerName : deleteSubGroupRequest.getBrokerNameList()) {
+                logger.info("addr={} groupName={}", clusterInfo.getBrokerAddrTable().get(brokerName).selectBrokerAddr(), deleteSubGroupRequest.getGroupName());
+                mqAdminExt.deleteSubscriptionGroup(clusterInfo.getBrokerAddrTable().get(brokerName).selectBrokerAddr(), deleteSubGroupRequest.getGroupName());
+            }
+        }
+        catch (Exception e) {
+            throw propagate(e);
+        }
+        return true;
+    }
+
+    @Override
+    public boolean createAndUpdateSubscriptionGroupConfig(ConsumerConfigInfo consumerConfigInfo) {
+        try {
+            ClusterInfo clusterInfo = mqAdminExt.examineBrokerClusterInfo();
+            for (String brokerName : changeToBrokerNameSet(clusterInfo.getClusterAddrTable(),
+                consumerConfigInfo.getClusterNameList(), consumerConfigInfo.getBrokerNameList())) {
+                mqAdminExt.createAndUpdateSubscriptionGroupConfig(clusterInfo.getBrokerAddrTable().get(brokerName).selectBrokerAddr(), consumerConfigInfo.getSubscriptionGroupConfig());
+            }
+        }
+        catch (Exception err) {
+            throw Throwables.propagate(err);
+        }
+        return true;
+    }
+
+    @Override
+    @MultiMQAdminCmdMethod
+    public Set<String> fetchBrokerNameSetBySubscriptionGroup(String group) {
+        Set<String> brokerNameSet = Sets.newHashSet();
+        try {
+            List<ConsumerConfigInfo> consumerConfigInfoList = examineSubscriptionGroupConfig(group);
+            for (ConsumerConfigInfo consumerConfigInfo : consumerConfigInfoList) {
+                brokerNameSet.addAll(consumerConfigInfo.getBrokerNameList());
+            }
+        }
+        catch (Exception e) {
+            throw Throwables.propagate(e);
+        }
+        return brokerNameSet;
+
+    }
+
+    @Override
+    public ConsumerConnection getConsumerConnection(String consumerGroup) {
+        try {
+            return mqAdminExt.examineConsumerConnectionInfo(consumerGroup);
+        }
+        catch (Exception e) {
+            throw Throwables.propagate(e);
+        }
+    }
+
+    @Override
+    public ConsumerRunningInfo getConsumerRunningInfo(String consumerGroup, String clientId, boolean jstack) {
+        try {
+            return mqAdminExt.getConsumerRunningInfo(consumerGroup, clientId, jstack);
+        }
+        catch (Exception e) {
+            throw Throwables.propagate(e);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/DashboardCollectServiceImpl.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/DashboardCollectServiceImpl.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/DashboardCollectServiceImpl.java
new file mode 100644
index 0000000..d32a344
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/DashboardCollectServiceImpl.java
@@ -0,0 +1,155 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.service.impl;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.google.common.base.Charsets;
+import com.google.common.base.Throwables;
+import com.google.common.base.Ticker;
+import com.google.common.cache.CacheBuilder;
+import com.google.common.cache.CacheLoader;
+import com.google.common.cache.LoadingCache;
+import com.google.common.cache.RemovalListener;
+import com.google.common.cache.RemovalNotification;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.google.common.io.Files;
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import javax.annotation.Resource;
+import org.apache.rocketmq.console.config.RMQConfigure;
+import org.apache.rocketmq.console.exception.ServiceException;
+import org.apache.rocketmq.console.service.DashboardCollectService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+@Service
+public class DashboardCollectServiceImpl implements DashboardCollectService {
+
+    @Resource
+    private RMQConfigure rmqConfigure;
+
+    private final static Logger log = LoggerFactory.getLogger(DashboardCollectServiceImpl.class);
+
+    private LoadingCache<String, List<String>> brokerMap = CacheBuilder.newBuilder()
+        .maximumSize(1000)
+        .concurrencyLevel(10)
+        .recordStats()
+        .ticker(Ticker.systemTicker())
+        .removalListener(new RemovalListener<Object, Object>() {
+            @Override
+            public void onRemoval(RemovalNotification<Object, Object> notification) {
+                log.debug(notification.getKey() + " was removed, cause is " + notification.getCause());
+            }
+        })
+        .build(
+            new CacheLoader<String, List<String>>() {
+                @Override
+                public List<String> load(String key) {
+                    List<String> list = Lists.newArrayList();
+                    return list;
+                }
+            }
+        );
+
+    private LoadingCache<String, List<String>> topicMap = CacheBuilder.newBuilder()
+        .maximumSize(1000)
+        .concurrencyLevel(10)
+        .recordStats()
+        .ticker(Ticker.systemTicker())
+        .removalListener(new RemovalListener<Object, Object>() {
+            @Override
+            public void onRemoval(RemovalNotification<Object, Object> notification) {
+                log.debug(notification.getKey() + " was removed, cause is " + notification.getCause());
+            }
+        })
+        .build(
+            new CacheLoader<String, List<String>>() {
+                @Override
+                public List<String> load(String key) {
+                    List<String> list = Lists.newArrayList();
+                    return list;
+                }
+            }
+        );
+
+    @Override
+    public LoadingCache<String, List<String>> getBrokerMap() {
+        return brokerMap;
+    }
+    @Override
+    public LoadingCache<String, List<String>> getTopicMap() {
+        return topicMap;
+    }
+
+    @Override
+    public Map<String, List<String>> jsonDataFile2map(File file) {
+        List<String> strings;
+        try {
+            strings = Files.readLines(file, Charsets.UTF_8);
+        }
+        catch (IOException e) {
+            throw Throwables.propagate(e);
+        }
+        StringBuffer sb = new StringBuffer();
+        for (String string : strings) {
+            sb.append(string);
+        }
+        JSONObject json = (JSONObject) JSONObject.parse(sb.toString());
+        Set<Map.Entry<String, Object>> entries = json.entrySet();
+        Map<String, List<String>> map = Maps.newHashMap();
+        for (Map.Entry<String, Object> entry : entries) {
+            JSONArray tpsArray = (JSONArray) entry.getValue();
+            if (tpsArray == null) {
+                continue;
+            }
+            Object[] tpsStrArray = tpsArray.toArray();
+            List<String> tpsList = Lists.newArrayList();
+            for (Object tpsObj : tpsStrArray) {
+                tpsList.add("" + tpsObj);
+            }
+            map.put(entry.getKey(), tpsList);
+        }
+        return map;
+    }
+
+    @Override
+    public Map<String, List<String>> getBrokerCache(String date) {
+        String dataLocationPath = rmqConfigure.getConsoleCollectData();
+        File file = new File(dataLocationPath + date + ".json");
+        if (!file.exists()) {
+            throw Throwables.propagate(new ServiceException(1, "This date have't data!"));
+        }
+        return jsonDataFile2map(file);
+    }
+
+    @Override
+    public Map<String, List<String>> getTopicCache(String date) {
+        String dataLocationPath = rmqConfigure.getConsoleCollectData();
+        File file = new File(dataLocationPath + date + "_topic" + ".json");
+        if (!file.exists()) {
+            throw Throwables.propagate(new ServiceException(1, "This date have't data!"));
+        }
+        return jsonDataFile2map(file);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/DashboardServiceImpl.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/DashboardServiceImpl.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/DashboardServiceImpl.java
new file mode 100644
index 0000000..3189093
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/DashboardServiceImpl.java
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.rocketmq.console.service.impl;
+
+import com.google.common.collect.Lists;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import javax.annotation.Resource;
+import org.apache.rocketmq.console.service.DashboardCollectService;
+import org.apache.rocketmq.console.service.DashboardService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class DashboardServiceImpl implements DashboardService {
+
+    @Resource
+    private DashboardCollectService dashboardCollectService;
+    /**
+     * @param date format yyyy-MM-dd
+     */
+    @Override
+    public Map<String, List<String>> queryBrokerData(String date) {
+        return dashboardCollectService.getBrokerCache(date);
+    }
+
+    @Override
+    public Map<String, List<String>> queryTopicData(String date) {
+        return dashboardCollectService.getTopicCache(date);
+    }
+
+    /**
+     * @param date format yyyy-MM-dd
+     * @param topicName
+     */
+    @Override
+    public List<String> queryTopicData(String date, String topicName) {
+        if (null != dashboardCollectService.getTopicCache(date)) {
+            return dashboardCollectService.getTopicCache(date).get(topicName);
+        }
+        return null;
+    }
+
+    @Override
+    public List<String> queryTopicCurrentData() {
+        Date date = new Date();
+        DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+        Map<String, List<String>> topicCache = dashboardCollectService.getTopicCache(format.format(date));
+        List<String> result = Lists.newArrayList();
+        for (Map.Entry<String, List<String>> entry : topicCache.entrySet()) {
+            List<String> value = entry.getValue();
+            result.add(entry.getKey() + "," + value.get(value.size() - 1).split(",")[4]);
+        }
+        return result;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/MessageServiceImpl.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/MessageServiceImpl.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/MessageServiceImpl.java
new file mode 100644
index 0000000..0205a69
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/MessageServiceImpl.java
@@ -0,0 +1,199 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package org.apache.rocketmq.console.service.impl;
+
+import com.google.common.base.Function;
+import com.google.common.base.Predicate;
+import com.google.common.base.Throwables;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.List;
+import java.util.Set;
+import javax.annotation.Resource;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.rocketmq.client.consumer.DefaultMQPullConsumer;
+import org.apache.rocketmq.client.consumer.PullResult;
+import org.apache.rocketmq.common.MixAll;
+import org.apache.rocketmq.common.Pair;
+import org.apache.rocketmq.common.message.MessageExt;
+import org.apache.rocketmq.common.message.MessageQueue;
+import org.apache.rocketmq.common.protocol.body.Connection;
+import org.apache.rocketmq.common.protocol.body.ConsumeMessageDirectlyResult;
+import org.apache.rocketmq.common.protocol.body.ConsumerConnection;
+import org.apache.rocketmq.console.model.MessageView;
+import org.apache.rocketmq.console.service.MessageService;
+import org.apache.rocketmq.tools.admin.MQAdminExt;
+import org.apache.rocketmq.tools.admin.api.MessageTrack;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+@Service
+public class MessageServiceImpl implements MessageService {
+
+    private Logger logger = LoggerFactory.getLogger(MessageServiceImpl.class);
+    /**
+     * @see org.apache.rocketmq.store.config.MessageStoreConfig maxMsgsNumBatch = 64;
+     * @see org.apache.rocketmq.store.index.IndexService maxNum = Math.min(maxNum, this.defaultMessageStore.getMessageStoreConfig().getMaxMsgsNumBatch());
+     */
+    private final static int QUERY_MESSAGE_MAX_NUM = 64;
+    @Resource
+    private MQAdminExt mqAdminExt;
+
+    public Pair<MessageView, List<MessageTrack>> viewMessage(String subject, final String msgId) {
+        try {
+
+            MessageExt messageExt = mqAdminExt.viewMessage(subject, msgId);
+            List<MessageTrack> messageTrackList = messageTrackDetail(messageExt);
+            return new Pair<>(MessageView.fromMessageExt(messageExt), messageTrackList);
+        }
+        catch (Exception e) {
+            throw Throwables.propagate(e);
+        }
+    }
+
+    @Override
+    public List<MessageView> queryMessageByTopicAndKey(String topic, String key) {
+        try {
+            return Lists.transform(mqAdminExt.queryMessage(topic, key, QUERY_MESSAGE_MAX_NUM, 0, System.currentTimeMillis()).getMessageList(), new Function<MessageExt, MessageView>() {
+                @Override
+                public MessageView apply(MessageExt messageExt) {
+                    return MessageView.fromMessageExt(messageExt);
+                }
+            });
+        }
+        catch (Exception err) {
+            throw Throwables.propagate(err);
+        }
+    }
+
+    @Override
+    public List<MessageView> queryMessageByTopic(String topic, final long begin, final long end) {
+        DefaultMQPullConsumer consumer = new DefaultMQPullConsumer(MixAll.TOOLS_CONSUMER_GROUP, null);
+        List<MessageView> messageViewList = Lists.newArrayList();
+        try {
+            String subExpression = "*";
+            consumer.start();
+            Set<MessageQueue> mqs = consumer.fetchSubscribeMessageQueues(topic);
+            for (MessageQueue mq : mqs) {
+                long minOffset = consumer.searchOffset(mq, begin);
+                long maxOffset = consumer.searchOffset(mq, end);
+                READQ:
+                for (long offset = minOffset; offset <= maxOffset; ) {
+                    try {
+                        if (messageViewList.size() > 2000) {
+                            break;
+                        }
+                        PullResult pullResult = consumer.pull(mq, subExpression, offset, 32);
+                        offset = pullResult.getNextBeginOffset();
+                        switch (pullResult.getPullStatus()) {
+                            case FOUND:
+
+                                List<MessageView> messageViewListByQuery = Lists.transform(pullResult.getMsgFoundList(), new Function<MessageExt, MessageView>() {
+                                    @Override
+                                    public MessageView apply(MessageExt messageExt) {
+                                        messageExt.setBody(null);
+                                        return MessageView.fromMessageExt(messageExt);
+                                    }
+                                });
+                                List<MessageView> filteredList = Lists.newArrayList(Iterables.filter(messageViewListByQuery, new Predicate<MessageView>() {
+                                    @Override
+                                    public boolean apply(MessageView messageView) {
+                                        if (messageView.getStoreTimestamp() < begin || messageView.getStoreTimestamp() > end) {
+                                            logger.info("begin={} end={} time not in range {} {}", begin, end, messageView.getStoreTimestamp(), new Date(messageView.getStoreTimestamp()).toString());
+                                        }
+                                        return messageView.getStoreTimestamp() >= begin && messageView.getStoreTimestamp() <= end;
+                                    }
+                                }));
+                                messageViewList.addAll(filteredList);
+                                break;
+                            case NO_MATCHED_MSG:
+                            case NO_NEW_MSG:
+                            case OFFSET_ILLEGAL:
+                                break READQ;
+                        }
+                    }
+                    catch (Exception e) {
+                        break;
+                    }
+                }
+            }
+            Collections.sort(messageViewList, new Comparator<MessageView>() {
+                @Override
+                public int compare(MessageView o1, MessageView o2) {
+                    if (o1.getStoreTimestamp() - o2.getStoreTimestamp() == 0) {
+                        return 0;
+                    }
+                    return (o1.getStoreTimestamp() > o2.getStoreTimestamp()) ? -1 : 1;
+                }
+            });
+            return messageViewList;
+        }
+        catch (Exception e) {
+            throw Throwables.propagate(e);
+        }
+        finally {
+            consumer.shutdown();
+        }
+    }
+
+    @Override
+    public List<MessageTrack> messageTrackDetail(MessageExt msg) {
+        try {
+            return mqAdminExt.messageTrackDetail(msg);
+        }
+        catch (Exception e) {
+            logger.error("op=messageTrackDetailError", e);
+            return Collections.emptyList();
+        }
+    }
+
+
+    @Override
+    public ConsumeMessageDirectlyResult consumeMessageDirectly(String topic, String msgId, String consumerGroup,
+        String clientId) {
+        if (StringUtils.isNotBlank(clientId)) {
+            try {
+                return mqAdminExt.consumeMessageDirectly(consumerGroup, clientId, topic, msgId);
+            }
+            catch (Exception e) {
+                throw Throwables.propagate(e);
+            }
+        }
+
+        try {
+            ConsumerConnection consumerConnection = mqAdminExt.examineConsumerConnectionInfo(consumerGroup);
+            for (Connection connection : consumerConnection.getConnectionSet()) {
+                if (StringUtils.isBlank(connection.getClientId())) {
+                    continue;
+                }
+                logger.info("clientId={}", connection.getClientId());
+                return mqAdminExt.consumeMessageDirectly(consumerGroup, connection.getClientId(), topic, msgId);
+            }
+        }
+        catch (Exception e) {
+            throw Throwables.propagate(e);
+        }
+        throw new IllegalStateException("NO CONSUMER");
+
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/MonitorServiceImpl.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/MonitorServiceImpl.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/MonitorServiceImpl.java
new file mode 100644
index 0000000..d3a109d
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/MonitorServiceImpl.java
@@ -0,0 +1,100 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.service.impl;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.google.common.base.Throwables;
+import java.io.File;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+import org.apache.rocketmq.common.MixAll;
+import org.apache.rocketmq.console.config.RMQConfigure;
+import org.apache.rocketmq.console.model.ConsumerMonitorConfig;
+import org.apache.rocketmq.console.service.MonitorService;
+import org.apache.rocketmq.console.util.JsonUtil;
+import org.springframework.stereotype.Service;
+
+@Service
+public class MonitorServiceImpl implements MonitorService {
+
+
+    @Resource
+    private RMQConfigure rmqConfigure;
+
+    private Map<String, ConsumerMonitorConfig> configMap = new ConcurrentHashMap<>();
+
+    @Override
+    public boolean createOrUpdateConsumerMonitor(String name, ConsumerMonitorConfig config) {
+        configMap.put(name, config);// todo if write map success but write file fail
+        writeToFile(getConsumerMonitorConfigDataPath(), configMap);
+        return true;
+    }
+
+    @Override
+    public Map<String, ConsumerMonitorConfig> queryConsumerMonitorConfig() {
+        return configMap;
+    }
+
+    @Override
+    public ConsumerMonitorConfig queryConsumerMonitorConfigByGroupName(String consumeGroupName) {
+        return configMap.get(consumeGroupName);
+    }
+
+    @Override
+    public boolean deleteConsumerMonitor(String consumeGroupName) {
+        configMap.remove(consumeGroupName);
+        writeToFile(getConsumerMonitorConfigDataPath(), configMap);
+        return true;
+    }
+
+    //rocketmq.console.data.path/monitor/consumerMonitorConfig.json
+    private String getConsumerMonitorConfigDataPath() {
+        return rmqConfigure.getRocketMqConsoleDataPath() + File.separatorChar + "monitor" + File.separatorChar + "consumerMonitorConfig.json";
+    }
+
+    private String getConsumerMonitorConfigDataPathBackUp() {
+        return getConsumerMonitorConfigDataPath() + ".bak";
+    }
+
+    private void writeToFile(String path, Object data) {
+        writeDataJsonToFile(path, JsonUtil.obj2String(data));
+    }
+
+    private void writeDataJsonToFile(String path, String dataStr) {
+        try {
+            MixAll.string2File(dataStr, path);
+        }
+        catch (Exception e) {
+            throw Throwables.propagate(e);
+        }
+    }
+
+    @PostConstruct
+    private void loadData() {
+        String content = MixAll.file2String(getConsumerMonitorConfigDataPath());
+        if (content == null) {
+            content = MixAll.file2String(getConsumerMonitorConfigDataPathBackUp());
+        }
+        if (content == null) {
+            return;
+        }
+        configMap = JsonUtil.string2Obj(content, new TypeReference<ConcurrentHashMap<String, ConsumerMonitorConfig>>() {
+        });
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/OpsServiceImpl.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/OpsServiceImpl.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/OpsServiceImpl.java
new file mode 100644
index 0000000..84e6d2f
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/OpsServiceImpl.java
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.service.impl;
+
+import com.google.common.base.Splitter;
+import com.google.common.collect.Maps;
+import java.util.List;
+import java.util.Map;
+import javax.annotation.Resource;
+import org.apache.rocketmq.console.config.RMQConfigure;
+import org.apache.rocketmq.console.service.AbstractCommonService;
+import org.apache.rocketmq.console.service.OpsService;
+import org.apache.rocketmq.console.service.checker.CheckerType;
+import org.apache.rocketmq.console.service.checker.RocketMqChecker;
+import org.springframework.stereotype.Service;
+
+@Service
+public class OpsServiceImpl extends AbstractCommonService implements OpsService {
+
+    @Resource
+    private RMQConfigure rMQConfigure;
+
+    @Resource
+    private List<RocketMqChecker> rocketMqCheckerList;
+
+    @Override
+    public Map<String, Object> homePageInfo() {
+        Map<String, Object> homePageInfoMap = Maps.newHashMap();
+        homePageInfoMap.put("namesvrAddrList", Splitter.on(";").splitToList(rMQConfigure.getNamesrvAddr()));
+        homePageInfoMap.put("useVIPChannel", Boolean.valueOf(rMQConfigure.getIsVIPChannel()));
+        return homePageInfoMap;
+    }
+
+    @Override
+    public void updateNameSvrAddrList(String nameSvrAddrList) {
+        rMQConfigure.setNamesrvAddr(nameSvrAddrList);
+    }
+
+    @Override
+    public String getNameSvrList() {
+        return rMQConfigure.getNamesrvAddr();
+    }
+
+    @Override
+    public Map<CheckerType, Object> rocketMqStatusCheck() {
+        Map<CheckerType, Object> checkResultMap = Maps.newHashMap();
+        for (RocketMqChecker rocketMqChecker : rocketMqCheckerList) {
+            checkResultMap.put(rocketMqChecker.checkerType(), rocketMqChecker.doCheck());
+        }
+        return checkResultMap;
+    }
+
+    @Override public boolean updateIsVIPChannel(String useVIPChannel) {
+        rMQConfigure.setIsVIPChannel(useVIPChannel);
+        return true;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/ProducerServiceImpl.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/ProducerServiceImpl.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/ProducerServiceImpl.java
new file mode 100644
index 0000000..3e46958
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/ProducerServiceImpl.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package org.apache.rocketmq.console.service.impl;
+
+import com.google.common.base.Throwables;
+import javax.annotation.Resource;
+import org.apache.rocketmq.common.protocol.body.ProducerConnection;
+import org.apache.rocketmq.console.service.ProducerService;
+import org.apache.rocketmq.tools.admin.MQAdminExt;
+import org.springframework.stereotype.Service;
+
+@Service
+public class ProducerServiceImpl implements ProducerService {
+    @Resource
+    private MQAdminExt mqAdminExt;
+
+    @Override
+    public ProducerConnection getProducerConnection(String producerGroup, String topic) {
+        try {
+            return mqAdminExt.examineProducerConnectionInfo(producerGroup, topic);
+        }
+        catch (Exception e) {
+            throw Throwables.propagate(e);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/TopicServiceImpl.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/TopicServiceImpl.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/TopicServiceImpl.java
new file mode 100644
index 0000000..117bcfd
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/TopicServiceImpl.java
@@ -0,0 +1,214 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package org.apache.rocketmq.console.service.impl;
+
+import com.google.common.base.Throwables;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.rocketmq.client.producer.DefaultMQProducer;
+import org.apache.rocketmq.client.producer.SendResult;
+import org.apache.rocketmq.common.MixAll;
+import org.apache.rocketmq.common.TopicConfig;
+import org.apache.rocketmq.common.admin.TopicStatsTable;
+import org.apache.rocketmq.common.message.Message;
+import org.apache.rocketmq.common.protocol.body.ClusterInfo;
+import org.apache.rocketmq.common.protocol.body.GroupList;
+import org.apache.rocketmq.common.protocol.body.TopicList;
+import org.apache.rocketmq.common.protocol.route.BrokerData;
+import org.apache.rocketmq.common.protocol.route.TopicRouteData;
+import org.apache.rocketmq.console.config.RMQConfigure;
+import org.apache.rocketmq.console.model.request.SendTopicMessageRequest;
+import org.apache.rocketmq.console.model.request.TopicConfigInfo;
+import org.apache.rocketmq.console.service.AbstractCommonService;
+import org.apache.rocketmq.console.service.TopicService;
+import org.apache.rocketmq.tools.command.CommandUtil;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class TopicServiceImpl extends AbstractCommonService implements TopicService {
+
+    @Autowired
+    private RMQConfigure rMQConfigure;
+
+    @Override
+    public TopicList fetchAllTopicList() {
+        try {
+            return mqAdminExt.fetchAllTopicList();
+        }
+        catch (Exception e) {
+            throw Throwables.propagate(e);
+        }
+    }
+
+    @Override
+    public TopicStatsTable stats(String topic) {
+        try {
+            return mqAdminExt.examineTopicStats(topic);
+        }
+        catch (Exception e) {
+            throw Throwables.propagate(e);
+        }
+    }
+
+    @Override
+    public TopicRouteData route(String topic) {
+        try {
+            return mqAdminExt.examineTopicRouteInfo(topic);
+        }
+        catch (Exception ex) {
+            throw Throwables.propagate(ex);
+        }
+    }
+
+    @Override
+    public GroupList queryTopicConsumerInfo(String topic) {
+        try {
+            return mqAdminExt.queryTopicConsumeByWho(topic);
+        }
+        catch (Exception e) {
+            throw Throwables.propagate(e);
+        }
+    }
+
+    @Override
+    public void createOrUpdate(TopicConfigInfo topicCreateOrUpdateRequest) {
+        TopicConfig topicConfig = new TopicConfig();
+        BeanUtils.copyProperties(topicCreateOrUpdateRequest, topicConfig);
+        try {
+            ClusterInfo clusterInfo = mqAdminExt.examineBrokerClusterInfo();
+            for (String brokerName : changeToBrokerNameSet(clusterInfo.getClusterAddrTable(),
+                topicCreateOrUpdateRequest.getClusterNameList(), topicCreateOrUpdateRequest.getBrokerNameList())) {
+                mqAdminExt.createAndUpdateTopicConfig(clusterInfo.getBrokerAddrTable().get(brokerName).selectBrokerAddr(), topicConfig);
+            }
+        }
+        catch (Exception err) {
+            throw Throwables.propagate(err);
+        }
+    }
+
+    @Override
+    public TopicConfig examineTopicConfig(String topic, String brokerName) {
+        ClusterInfo clusterInfo = null;
+        try {
+            clusterInfo = mqAdminExt.examineBrokerClusterInfo();
+        }
+        catch (Exception e) {
+            throw Throwables.propagate(e);
+        }
+        return mqAdminExt.examineTopicConfig(clusterInfo.getBrokerAddrTable().get(brokerName).selectBrokerAddr(), topic);
+    }
+
+    @Override
+    public List<TopicConfigInfo> examineTopicConfig(String topic) {
+        List<TopicConfigInfo> topicConfigInfoList = Lists.newArrayList();
+        TopicRouteData topicRouteData = route(topic);
+        for (BrokerData brokerData : topicRouteData.getBrokerDatas()) {
+            TopicConfigInfo topicConfigInfo = new TopicConfigInfo();
+            TopicConfig topicConfig = examineTopicConfig(topic, brokerData.getBrokerName());
+            BeanUtils.copyProperties(topicConfig, topicConfigInfo);
+            topicConfigInfo.setBrokerNameList(Lists.newArrayList(brokerData.getBrokerName()));
+            topicConfigInfoList.add(topicConfigInfo);
+        }
+        return topicConfigInfoList;
+    }
+
+    @Override
+    public boolean deleteTopic(String topic, String clusterName) {
+        try {
+            if (StringUtils.isBlank(clusterName)) {
+                return deleteTopic(topic);
+            }
+            Set<String> masterSet = CommandUtil.fetchMasterAddrByClusterName(mqAdminExt, clusterName);
+            mqAdminExt.deleteTopicInBroker(masterSet, topic);
+            Set<String> nameServerSet = null;
+            if (StringUtils.isNotBlank(rMQConfigure.getNamesrvAddr())) {
+                String[] ns = rMQConfigure.getNamesrvAddr().split(";");
+                nameServerSet = new HashSet<String>(Arrays.asList(ns));
+            }
+            mqAdminExt.deleteTopicInNameServer(nameServerSet, topic);
+        }
+        catch (Exception err) {
+            throw Throwables.propagate(err);
+        }
+        return true;
+    }
+
+    @Override
+    public boolean deleteTopic(String topic) {
+        ClusterInfo clusterInfo = null;
+        try {
+            clusterInfo = mqAdminExt.examineBrokerClusterInfo();
+        }
+        catch (Exception err) {
+            throw Throwables.propagate(err);
+        }
+        for (String clusterName : clusterInfo.getClusterAddrTable().keySet()) {
+            deleteTopic(topic, clusterName);
+        }
+        return true;
+    }
+
+    @Override
+    public boolean deleteTopicInBroker(String brokerName, String topic) {
+
+        try {
+            ClusterInfo clusterInfo = null;
+            try {
+                clusterInfo = mqAdminExt.examineBrokerClusterInfo();
+            }
+            catch (Exception e) {
+                throw Throwables.propagate(e);
+            }
+            mqAdminExt.deleteTopicInBroker(Sets.newHashSet(clusterInfo.getBrokerAddrTable().get(brokerName).selectBrokerAddr()), topic);
+        }
+        catch (Exception e) {
+            throw Throwables.propagate(e);
+        }
+        return true;
+    }
+
+    @Override
+    public SendResult sendTopicMessageRequest(SendTopicMessageRequest sendTopicMessageRequest) {
+        DefaultMQProducer producer = new DefaultMQProducer(MixAll.SELF_TEST_PRODUCER_GROUP);
+        producer.setInstanceName(String.valueOf(System.currentTimeMillis()));
+        producer.setNamesrvAddr(rMQConfigure.getNamesrvAddr());
+        try {
+            producer.start();
+            Message msg = new Message(sendTopicMessageRequest.getTopic(),
+                sendTopicMessageRequest.getTag(),
+                sendTopicMessageRequest.getKey(),
+                sendTopicMessageRequest.getMessageBody().getBytes()
+            );
+            return producer.send(msg);
+        }
+        catch (Exception e) {
+            throw Throwables.propagate(e);
+        }
+        finally {
+            producer.shutdown();
+        }
+    }
+
+}



[17/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-bb.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-bb.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-bb.js
new file mode 100644
index 0000000..c1fba3a
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-bb.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-bb",
+  "localeID": "en_BB",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-be.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-be.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-be.js
new file mode 100644
index 0000000..6fe24e0
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-be.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "dd MMM y h:mm:ss a",
+    "mediumDate": "dd MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/yy h:mm a",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "en-be",
+  "localeID": "en_BE",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-bm.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-bm.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-bm.js
new file mode 100644
index 0000000..67d117f
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-bm.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-bm",
+  "localeID": "en_BM",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-bs.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-bs.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-bs.js
new file mode 100644
index 0000000..c60b8d8
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-bs.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-bs",
+  "localeID": "en_BS",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-bw.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-bw.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-bw.js
new file mode 100644
index 0000000..6ecf788
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-bw.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, dd MMMM y",
+    "longDate": "dd MMMM y",
+    "medium": "dd MMM y h:mm:ss a",
+    "mediumDate": "dd MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/yy h:mm a",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "P",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-bw",
+  "localeID": "en_BW",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-bz.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-bz.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-bz.js
new file mode 100644
index 0000000..3f7379c
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-bz.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, dd MMMM y",
+    "longDate": "dd MMMM y",
+    "medium": "dd-MMM-y HH:mm:ss",
+    "mediumDate": "dd-MMM-y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/yy HH:mm",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-bz",
+  "localeID": "en_BZ",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ca.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ca.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ca.js
new file mode 100644
index 0000000..0904d0d
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ca.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, MMMM d, y",
+    "longDate": "MMMM d, y",
+    "medium": "MMM d, y h:mm:ss a",
+    "mediumDate": "MMM d, y",
+    "mediumTime": "h:mm:ss a",
+    "short": "y-MM-dd h:mm a",
+    "shortDate": "y-MM-dd",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-ca",
+  "localeID": "en_CA",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-cc.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-cc.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-cc.js
new file mode 100644
index 0000000..f83123e
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-cc.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-cc",
+  "localeID": "en_CC",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ck.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ck.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ck.js
new file mode 100644
index 0000000..e374bab
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ck.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-ck",
+  "localeID": "en_CK",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-cm.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-cm.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-cm.js
new file mode 100644
index 0000000..775d998
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-cm.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFA",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-cm",
+  "localeID": "en_CM",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-cx.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-cx.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-cx.js
new file mode 100644
index 0000000..6b98f3c
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-cx.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-cx",
+  "localeID": "en_CX",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-dg.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-dg.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-dg.js
new file mode 100644
index 0000000..3364710
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-dg.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-dg",
+  "localeID": "en_DG",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-dm.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-dm.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-dm.js
new file mode 100644
index 0000000..9461a31
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-dm.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-dm",
+  "localeID": "en_DM",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-er.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-er.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-er.js
new file mode 100644
index 0000000..4a1296c
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-er.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Nfk",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-er",
+  "localeID": "en_ER",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-fj.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-fj.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-fj.js
new file mode 100644
index 0000000..5bf426b
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-fj.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-fj",
+  "localeID": "en_FJ",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-fk.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-fk.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-fk.js
new file mode 100644
index 0000000..ffb3818
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-fk.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u00a3",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-fk",
+  "localeID": "en_FK",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-fm.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-fm.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-fm.js
new file mode 100644
index 0000000..33e0e81
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-fm.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-fm",
+  "localeID": "en_FM",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-gb.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-gb.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-gb.js
new file mode 100644
index 0000000..a88c820
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-gb.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a.m.",
+      "p.m."
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u00a3",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-gb",
+  "localeID": "en_GB",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-gd.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-gd.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-gd.js
new file mode 100644
index 0000000..1afb4c7
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-gd.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-gd",
+  "localeID": "en_GD",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-gg.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-gg.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-gg.js
new file mode 100644
index 0000000..973cbc5
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-gg.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u00a3",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-gg",
+  "localeID": "en_GG",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-gh.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-gh.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-gh.js
new file mode 100644
index 0000000..cc33fe0
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-gh.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "GHS",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-gh",
+  "localeID": "en_GH",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-gi.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-gi.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-gi.js
new file mode 100644
index 0000000..97c4823
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-gi.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u00a3",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-gi",
+  "localeID": "en_GI",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-gm.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-gm.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-gm.js
new file mode 100644
index 0000000..e982df3
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-gm.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "GMD",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-gm",
+  "localeID": "en_GM",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-gu.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-gu.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-gu.js
new file mode 100644
index 0000000..d11933b
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-gu.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, MMMM d, y",
+    "longDate": "MMMM d, y",
+    "medium": "MMM d, y h:mm:ss a",
+    "mediumDate": "MMM d, y",
+    "mediumTime": "h:mm:ss a",
+    "short": "M/d/yy h:mm a",
+    "shortDate": "M/d/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-gu",
+  "localeID": "en_GU",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-gy.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-gy.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-gy.js
new file mode 100644
index 0000000..d3d543e
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-gy.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-gy",
+  "localeID": "en_GY",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-hk.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-hk.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-hk.js
new file mode 100644
index 0000000..f366c1a
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-hk.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/M/y h:mm a",
+    "shortDate": "d/M/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-hk",
+  "localeID": "en_HK",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);



[41/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-animate.min.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-animate.min.js b/rocketmq-console/src/main/resources/static/vendor/angular/angular-animate.min.js
new file mode 100644
index 0000000..615b588
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-animate.min.js
@@ -0,0 +1,56 @@
+/*
+ AngularJS v1.5.6
+ (c) 2010-2016 Google, Inc. http://angularjs.org
+ License: MIT
+*/
+(function(S,B){'use strict';function Aa(a,b,c){if(!a)throw Ma("areq",b||"?",c||"required");return a}function Ba(a,b){if(!a&&!b)return"";if(!a)return b;if(!b)return a;ca(a)&&(a=a.join(" "));ca(b)&&(b=b.join(" "));return a+" "+b}function Na(a){var b={};a&&(a.to||a.from)&&(b.to=a.to,b.from=a.from);return b}function Y(a,b,c){var d="";a=ca(a)?a:a&&P(a)&&a.length?a.split(/\s+/):[];s(a,function(a,l){a&&0<a.length&&(d+=0<l?" ":"",d+=c?b+a:a+b)});return d}function Oa(a){if(a instanceof E)switch(a.length){case 0:return a;
+case 1:if(1===a[0].nodeType)return a;break;default:return E(da(a))}if(1===a.nodeType)return E(a)}function da(a){if(!a[0])return a;for(var b=0;b<a.length;b++){var c=a[b];if(1==c.nodeType)return c}}function Pa(a,b,c){s(b,function(b){a.addClass(b,c)})}function Qa(a,b,c){s(b,function(b){a.removeClass(b,c)})}function V(a){return function(b,c){c.addClass&&(Pa(a,b,c.addClass),c.addClass=null);c.removeClass&&(Qa(a,b,c.removeClass),c.removeClass=null)}}function pa(a){a=a||{};if(!a.$$prepared){var b=a.domOperation||
+R;a.domOperation=function(){a.$$domOperationFired=!0;b();b=R};a.$$prepared=!0}return a}function ha(a,b){Ca(a,b);Da(a,b)}function Ca(a,b){b.from&&(a.css(b.from),b.from=null)}function Da(a,b){b.to&&(a.css(b.to),b.to=null)}function W(a,b,c){var d=b.options||{};c=c.options||{};var e=(d.addClass||"")+" "+(c.addClass||""),l=(d.removeClass||"")+" "+(c.removeClass||"");a=Ra(a.attr("class"),e,l);c.preparationClasses&&(d.preparationClasses=Z(c.preparationClasses,d.preparationClasses),delete c.preparationClasses);
+e=d.domOperation!==R?d.domOperation:null;Ea(d,c);e&&(d.domOperation=e);d.addClass=a.addClass?a.addClass:null;d.removeClass=a.removeClass?a.removeClass:null;b.addClass=d.addClass;b.removeClass=d.removeClass;return d}function Ra(a,b,c){function d(a){P(a)&&(a=a.split(" "));var b={};s(a,function(a){a.length&&(b[a]=!0)});return b}var e={};a=d(a);b=d(b);s(b,function(a,b){e[b]=1});c=d(c);s(c,function(a,b){e[b]=1===e[b]?null:-1});var l={addClass:"",removeClass:""};s(e,function(b,c){var d,e;1===b?(d="addClass",
+e=!a[c]):-1===b&&(d="removeClass",e=a[c]);e&&(l[d].length&&(l[d]+=" "),l[d]+=c)});return l}function z(a){return a instanceof B.element?a[0]:a}function Sa(a,b,c){var d="";b&&(d=Y(b,"ng-",!0));c.addClass&&(d=Z(d,Y(c.addClass,"-add")));c.removeClass&&(d=Z(d,Y(c.removeClass,"-remove")));d.length&&(c.preparationClasses=d,a.addClass(d))}function qa(a,b){var c=b?"-"+b+"s":"";la(a,[ma,c]);return[ma,c]}function ta(a,b){var c=b?"paused":"",d=$+"PlayState";la(a,[d,c]);return[d,c]}function la(a,b){a.style[b[0]]=
+b[1]}function Z(a,b){return a?b?a+" "+b:a:b}function Fa(a,b,c){var d=Object.create(null),e=a.getComputedStyle(b)||{};s(c,function(a,b){var c=e[a];if(c){var k=c.charAt(0);if("-"===k||"+"===k||0<=k)c=Ta(c);0===c&&(c=null);d[b]=c}});return d}function Ta(a){var b=0;a=a.split(/\s*,\s*/);s(a,function(a){"s"==a.charAt(a.length-1)&&(a=a.substring(0,a.length-1));a=parseFloat(a)||0;b=b?Math.max(a,b):a});return b}function ua(a){return 0===a||null!=a}function Ga(a,b){var c=T,d=a+"s";b?c+="Duration":d+=" linear all";
+return[c,d]}function Ha(){var a=Object.create(null);return{flush:function(){a=Object.create(null)},count:function(b){return(b=a[b])?b.total:0},get:function(b){return(b=a[b])&&b.value},put:function(b,c){a[b]?a[b].total++:a[b]={total:1,value:c}}}}function Ia(a,b,c){s(c,function(c){a[c]=ea(a[c])?a[c]:b.style.getPropertyValue(c)})}var R=B.noop,Ja=B.copy,Ea=B.extend,E=B.element,s=B.forEach,ca=B.isArray,P=B.isString,va=B.isObject,O=B.isUndefined,ea=B.isDefined,Ka=B.isFunction,wa=B.isElement,T,xa,$,ya;O(S.ontransitionend)&&
+ea(S.onwebkittransitionend)?(T="WebkitTransition",xa="webkitTransitionEnd transitionend"):(T="transition",xa="transitionend");O(S.onanimationend)&&ea(S.onwebkitanimationend)?($="WebkitAnimation",ya="webkitAnimationEnd animationend"):($="animation",ya="animationend");var ra=$+"Delay",za=$+"Duration",ma=T+"Delay",La=T+"Duration",Ma=B.$$minErr("ng"),Ua={transitionDuration:La,transitionDelay:ma,transitionProperty:T+"Property",animationDuration:za,animationDelay:ra,animationIterationCount:$+"IterationCount"},
+Va={transitionDuration:La,transitionDelay:ma,animationDuration:za,animationDelay:ra};B.module("ngAnimate",[]).directive("ngAnimateSwap",["$animate","$rootScope",function(a,b){return{restrict:"A",transclude:"element",terminal:!0,priority:600,link:function(b,d,e,l,m){var I,k;b.$watchCollection(e.ngAnimateSwap||e["for"],function(e){I&&a.leave(I);k&&(k.$destroy(),k=null);if(e||0===e)k=b.$new(),m(k,function(b){I=b;a.enter(b,null,d)})})}}}]).directive("ngAnimateChildren",["$interpolate",function(a){return{link:function(b,
+c,d){function e(a){c.data("$$ngAnimateChildren","on"===a||"true"===a)}var l=d.ngAnimateChildren;B.isString(l)&&0===l.length?c.data("$$ngAnimateChildren",!0):(e(a(l)(b)),d.$observe("ngAnimateChildren",e))}}}]).factory("$$rAFScheduler",["$$rAF",function(a){function b(a){d=d.concat(a);c()}function c(){if(d.length){for(var b=d.shift(),m=0;m<b.length;m++)b[m]();e||a(function(){e||c()})}}var d,e;d=b.queue=[];b.waitUntilQuiet=function(b){e&&e();e=a(function(){e=null;b();c()})};return b}]).provider("$$animateQueue",
+["$animateProvider",function(a){function b(a){if(!a)return null;a=a.split(" ");var b=Object.create(null);s(a,function(a){b[a]=!0});return b}function c(a,c){if(a&&c){var d=b(c);return a.split(" ").some(function(a){return d[a]})}}function d(a,b,c,d){return l[a].some(function(a){return a(b,c,d)})}function e(a,b){var c=0<(a.addClass||"").length,d=0<(a.removeClass||"").length;return b?c&&d:c||d}var l=this.rules={skip:[],cancel:[],join:[]};l.join.push(function(a,b,c){return!b.structural&&e(b)});l.skip.push(function(a,
+b,c){return!b.structural&&!e(b)});l.skip.push(function(a,b,c){return"leave"==c.event&&b.structural});l.skip.push(function(a,b,c){return c.structural&&2===c.state&&!b.structural});l.cancel.push(function(a,b,c){return c.structural&&b.structural});l.cancel.push(function(a,b,c){return 2===c.state&&b.structural});l.cancel.push(function(a,b,d){if(d.structural)return!1;a=b.addClass;b=b.removeClass;var e=d.addClass;d=d.removeClass;return O(a)&&O(b)||O(e)&&O(d)?!1:c(a,d)||c(b,e)});this.$get=["$$rAF","$rootScope",
+"$rootElement","$document","$$HashMap","$$animation","$$AnimateRunner","$templateRequest","$$jqLite","$$forceReflow",function(b,c,k,l,w,Wa,Q,u,F,n){function K(){var a=!1;return function(b){a?b():c.$$postDigest(function(){a=!0;b()})}}function J(a,b,c){var f=z(b),d=z(a),L=[];(a=h[c])&&s(a,function(a){y.call(a.node,f)?L.push(a.callback):"leave"===c&&y.call(a.node,d)&&L.push(a.callback)});return L}function r(a,b,c){var f=da(b);return a.filter(function(a){return!(a.node===f&&(!c||a.callback===c))})}function t(a,
+h,x){function r(c,f,d,h){H(function(){var c=J(oa,a,f);c.length?b(function(){s(c,function(b){b(a,d,h)});"close"!==d||a[0].parentNode||sa.off(a)}):"close"!==d||a[0].parentNode||sa.off(a)});c.progress(f,d,h)}function g(b){var c=a,f=p;f.preparationClasses&&(c.removeClass(f.preparationClasses),f.preparationClasses=null);f.activeClasses&&(c.removeClass(f.activeClasses),f.activeClasses=null);D(a,p);ha(a,p);p.domOperation();n.complete(!b)}var p=Ja(x),t,oa;if(a=Oa(a))t=z(a),oa=a.parent();var p=pa(p),n=new Q,
+H=K();ca(p.addClass)&&(p.addClass=p.addClass.join(" "));p.addClass&&!P(p.addClass)&&(p.addClass=null);ca(p.removeClass)&&(p.removeClass=p.removeClass.join(" "));p.removeClass&&!P(p.removeClass)&&(p.removeClass=null);p.from&&!va(p.from)&&(p.from=null);p.to&&!va(p.to)&&(p.to=null);if(!t)return g(),n;x=[t.className,p.addClass,p.removeClass].join(" ");if(!Xa(x))return g(),n;var k=0<=["enter","move","leave"].indexOf(h),y=l[0].hidden,u=!f||y||L.get(t);x=!u&&A.get(t)||{};var F=!!x.state;u||F&&1==x.state||
+(u=!N(a,oa,h));if(u)return y&&r(n,h,"start"),g(),y&&r(n,h,"close"),n;k&&M(a);y={structural:k,element:a,event:h,addClass:p.addClass,removeClass:p.removeClass,close:g,options:p,runner:n};if(F){if(d("skip",a,y,x)){if(2===x.state)return g(),n;W(a,x,y);return x.runner}if(d("cancel",a,y,x))if(2===x.state)x.runner.end();else if(x.structural)x.close();else return W(a,x,y),x.runner;else if(d("join",a,y,x))if(2===x.state)W(a,y,{});else return Sa(a,k?h:null,p),h=y.event=x.event,p=W(a,x,y),x.runner}else W(a,
+y,{});(F=y.structural)||(F="animate"===y.event&&0<Object.keys(y.options.to||{}).length||e(y));if(!F)return g(),ka(a),n;var w=(x.counter||0)+1;y.counter=w;G(a,1,y);c.$$postDigest(function(){var b=A.get(t),c=!b,b=b||{},f=0<(a.parent()||[]).length&&("animate"===b.event||b.structural||e(b));if(c||b.counter!==w||!f){c&&(D(a,p),ha(a,p));if(c||k&&b.event!==h)p.domOperation(),n.end();f||ka(a)}else h=!b.structural&&e(b,!0)?"setClass":b.event,G(a,2),b=Wa(a,h,b.options),n.setHost(b),r(n,h,"start",{}),b.done(function(b){g(!b);
+(b=A.get(t))&&b.counter===w&&ka(z(a));r(n,h,"close",{})})});return n}function M(a){a=z(a).querySelectorAll("[data-ng-animate]");s(a,function(a){var b=parseInt(a.getAttribute("data-ng-animate")),c=A.get(a);if(c)switch(b){case 2:c.runner.end();case 1:A.remove(a)}})}function ka(a){a=z(a);a.removeAttribute("data-ng-animate");A.remove(a)}function g(a,b){return z(a)===z(b)}function N(a,b,c){c=E(l[0].body);var f=g(a,c)||"HTML"===a[0].nodeName,d=g(a,k),h=!1,r,e=L.get(z(a));(a=E.data(a[0],"$ngAnimatePin"))&&
+(b=a);for(b=z(b);b;){d||(d=g(b,k));if(1!==b.nodeType)break;a=A.get(b)||{};if(!h){var n=L.get(b);if(!0===n&&!1!==e){e=!0;break}else!1===n&&(e=!1);h=a.structural}if(O(r)||!0===r)a=E.data(b,"$$ngAnimateChildren"),ea(a)&&(r=a);if(h&&!1===r)break;f||(f=g(b,c));if(f&&d)break;if(!d&&(a=E.data(b,"$ngAnimatePin"))){b=z(a);continue}b=b.parentNode}return(!h||r)&&!0!==e&&d&&f}function G(a,b,c){c=c||{};c.state=b;a=z(a);a.setAttribute("data-ng-animate",b);c=(b=A.get(a))?Ea(b,c):c;A.put(a,c)}var A=new w,L=new w,
+f=null,oa=c.$watch(function(){return 0===u.totalPendingRequests},function(a){a&&(oa(),c.$$postDigest(function(){c.$$postDigest(function(){null===f&&(f=!0)})}))}),h={},H=a.classNameFilter(),Xa=H?function(a){return H.test(a)}:function(){return!0},D=V(F),y=S.Node.prototype.contains||function(a){return this===a||!!(this.compareDocumentPosition(a)&16)},sa={on:function(a,b,c){var f=da(b);h[a]=h[a]||[];h[a].push({node:f,callback:c});E(b).on("$destroy",function(){A.get(f)||sa.off(a,b,c)})},off:function(a,
+b,c){if(1!==arguments.length||B.isString(arguments[0])){var f=h[a];f&&(h[a]=1===arguments.length?null:r(f,b,c))}else for(f in b=arguments[0],h)h[f]=r(h[f],b)},pin:function(a,b){Aa(wa(a),"element","not an element");Aa(wa(b),"parentElement","not an element");a.data("$ngAnimatePin",b)},push:function(a,b,c,f){c=c||{};c.domOperation=f;return t(a,b,c)},enabled:function(a,b){var c=arguments.length;if(0===c)b=!!f;else if(wa(a)){var d=z(a),h=L.get(d);1===c?b=!h:L.put(d,!b)}else b=f=!!a;return b}};return sa}]}]).provider("$$animation",
+["$animateProvider",function(a){var b=this.drivers=[];this.$get=["$$jqLite","$rootScope","$injector","$$AnimateRunner","$$HashMap","$$rAFScheduler",function(a,d,e,l,m,I){function k(a){function b(a){if(a.processed)return a;a.processed=!0;var d=a.domNode,t=d.parentNode;e.put(d,a);for(var M;t;){if(M=e.get(t)){M.processed||(M=b(M));break}t=t.parentNode}(M||c).children.push(a);return a}var c={children:[]},d,e=new m;for(d=0;d<a.length;d++){var k=a[d];e.put(k.domNode,a[d]={domNode:k.domNode,fn:k.fn,children:[]})}for(d=
+0;d<a.length;d++)b(a[d]);return function(a){var b=[],c=[],d;for(d=0;d<a.children.length;d++)c.push(a.children[d]);a=c.length;var e=0,g=[];for(d=0;d<c.length;d++){var n=c[d];0>=a&&(a=e,e=0,b.push(g),g=[]);g.push(n.fn);n.children.forEach(function(a){e++;c.push(a)});a--}g.length&&b.push(g);return b}(c)}var v=[],w=V(a);return function(m,Q,u){function F(a){a=a.hasAttribute("ng-animate-ref")?[a]:a.querySelectorAll("[ng-animate-ref]");var b=[];s(a,function(a){var c=a.getAttribute("ng-animate-ref");c&&c.length&&
+b.push(a)});return b}function n(a){var b=[],c={};s(a,function(a,d){var h=z(a.element),e=0<=["enter","move"].indexOf(a.event),h=a.structural?F(h):[];if(h.length){var g=e?"to":"from";s(h,function(a){var b=a.getAttribute("ng-animate-ref");c[b]=c[b]||{};c[b][g]={animationID:d,element:E(a)}})}else b.push(a)});var d={},e={};s(c,function(c,g){var r=c.from,n=c.to;if(r&&n){var A=a[r.animationID],t=a[n.animationID],m=r.animationID.toString();if(!e[m]){var k=e[m]={structural:!0,beforeStart:function(){A.beforeStart();
+t.beforeStart()},close:function(){A.close();t.close()},classes:K(A.classes,t.classes),from:A,to:t,anchors:[]};k.classes.length?b.push(k):(b.push(A),b.push(t))}e[m].anchors.push({out:r.element,"in":n.element})}else r=r?r.animationID:n.animationID,n=r.toString(),d[n]||(d[n]=!0,b.push(a[r]))});return b}function K(a,b){a=a.split(" ");b=b.split(" ");for(var c=[],d=0;d<a.length;d++){var e=a[d];if("ng-"!==e.substring(0,3))for(var r=0;r<b.length;r++)if(e===b[r]){c.push(e);break}}return c.join(" ")}function J(a){for(var c=
+b.length-1;0<=c;c--){var d=b[c];if(e.has(d)&&(d=e.get(d)(a)))return d}}function r(a,b){function c(a){(a=a.data("$$animationRunner"))&&a.setHost(b)}a.from&&a.to?(c(a.from.element),c(a.to.element)):c(a.element)}function t(){var a=m.data("$$animationRunner");!a||"leave"===Q&&u.$$domOperationFired||a.end()}function M(b){m.off("$destroy",t);m.removeData("$$animationRunner");w(m,u);ha(m,u);u.domOperation();G&&a.removeClass(m,G);m.removeClass("ng-animate");g.complete(!b)}u=pa(u);var ka=0<=["enter","move",
+"leave"].indexOf(Q),g=new l({end:function(){M()},cancel:function(){M(!0)}});if(!b.length)return M(),g;m.data("$$animationRunner",g);var N=Ba(m.attr("class"),Ba(u.addClass,u.removeClass)),G=u.tempClasses;G&&(N+=" "+G,u.tempClasses=null);var A;ka&&(A="ng-"+Q+"-prepare",a.addClass(m,A));v.push({element:m,classes:N,event:Q,structural:ka,options:u,beforeStart:function(){m.addClass("ng-animate");G&&a.addClass(m,G);A&&(a.removeClass(m,A),A=null)},close:M});m.on("$destroy",t);if(1<v.length)return g;d.$$postDigest(function(){var a=
+[];s(v,function(b){b.element.data("$$animationRunner")?a.push(b):b.close()});v.length=0;var b=n(a),c=[];s(b,function(a){c.push({domNode:z(a.from?a.from.element:a.element),fn:function(){a.beforeStart();var b,c=a.close;if((a.anchors?a.from.element||a.to.element:a.element).data("$$animationRunner")){var d=J(a);d&&(b=d.start)}b?(b=b(),b.done(function(a){c(!a)}),r(a,b)):c()}})});I(k(c))});return g}}]}]).provider("$animateCss",["$animateProvider",function(a){var b=Ha(),c=Ha();this.$get=["$window","$$jqLite",
+"$$AnimateRunner","$timeout","$$forceReflow","$sniffer","$$rAFScheduler","$$animateQueue",function(a,e,l,m,I,k,v,w){function B(a,b){var c=a.parentNode;return(c.$$ngAnimateParentKey||(c.$$ngAnimateParentKey=++K))+"-"+a.getAttribute("class")+"-"+b}function Q(r,n,m,k){var g;0<b.count(m)&&(g=c.get(m),g||(n=Y(n,"-stagger"),e.addClass(r,n),g=Fa(a,r,k),g.animationDuration=Math.max(g.animationDuration,0),g.transitionDuration=Math.max(g.transitionDuration,0),e.removeClass(r,n),c.put(m,g)));return g||{}}function u(a){J.push(a);
+v.waitUntilQuiet(function(){b.flush();c.flush();for(var a=I(),d=0;d<J.length;d++)J[d](a);J.length=0})}function F(c,e,n){e=b.get(n);e||(e=Fa(a,c,Ua),"infinite"===e.animationIterationCount&&(e.animationIterationCount=1));b.put(n,e);c=e;n=c.animationDelay;e=c.transitionDelay;c.maxDelay=n&&e?Math.max(n,e):n||e;c.maxDuration=Math.max(c.animationDuration*c.animationIterationCount,c.transitionDuration);return c}var n=V(e),K=0,J=[];return function(a,c){function d(){g()}function v(){g(!0)}function g(b){if(!(y||
+E&&K)){y=!0;K=!1;f.$$skipPreparationClasses||e.removeClass(a,ga);e.removeClass(a,ea);ta(h,!1);qa(h,!1);s(H,function(a){h.style[a[0]]=""});n(a,f);ha(a,f);Object.keys(J).length&&s(J,function(a,b){a?h.style.setProperty(b,a):h.style.removeProperty(b)});if(f.onDone)f.onDone();fa&&fa.length&&a.off(fa.join(" "),A);var c=a.data("$$animateCss");c&&(m.cancel(c[0].timer),a.removeData("$$animateCss"));O&&O.complete(!b)}}function N(a){q.blockTransition&&qa(h,a);q.blockKeyframeAnimation&&ta(h,!!a)}function G(){O=
+new l({end:d,cancel:v});u(R);g();return{$$willAnimate:!1,start:function(){return O},end:d}}function A(a){a.stopPropagation();var b=a.originalEvent||a;a=b.$manualTimeStamp||Date.now();b=parseFloat(b.elapsedTime.toFixed(3));Math.max(a-W,0)>=S&&b>=p&&(E=!0,g())}function L(){function b(){if(!y){N(!1);s(H,function(a){h.style[a[0]]=a[1]});n(a,f);e.addClass(a,ea);if(q.recalculateTimingStyles){na=h.className+" "+ga;ia=B(h,na);C=F(h,na,ia);aa=C.maxDelay;P=Math.max(aa,0);p=C.maxDuration;if(0===p){g();return}q.hasTransitions=
+0<C.transitionDuration;q.hasAnimations=0<C.animationDuration}q.applyAnimationDelay&&(aa="boolean"!==typeof f.delay&&ua(f.delay)?parseFloat(f.delay):aa,P=Math.max(aa,0),C.animationDelay=aa,ba=[ra,aa+"s"],H.push(ba),h.style[ba[0]]=ba[1]);S=1E3*P;V=1E3*p;if(f.easing){var d,k=f.easing;q.hasTransitions&&(d=T+"TimingFunction",H.push([d,k]),h.style[d]=k);q.hasAnimations&&(d=$+"TimingFunction",H.push([d,k]),h.style[d]=k)}C.transitionDuration&&fa.push(xa);C.animationDuration&&fa.push(ya);W=Date.now();var L=
+S+1.5*V;d=W+L;var k=a.data("$$animateCss")||[],l=!0;if(k.length){var G=k[0];(l=d>G.expectedEndTime)?m.cancel(G.timer):k.push(g)}l&&(L=m(c,L,!1),k[0]={timer:L,expectedEndTime:d},k.push(g),a.data("$$animateCss",k));if(fa.length)a.on(fa.join(" "),A);f.to&&(f.cleanupStyles&&Ia(J,h,Object.keys(f.to)),Da(a,f))}}function c(){var b=a.data("$$animateCss");if(b){for(var d=1;d<b.length;d++)b[d]();a.removeData("$$animateCss")}}if(!y)if(h.parentNode){var d=function(a){if(E)K&&a&&(K=!1,g());else if(K=!a,C.animationDuration)if(a=
+ta(h,K),K)H.push(a);else{var b=H,c=b.indexOf(a);0<=a&&b.splice(c,1)}},k=0<da&&(C.transitionDuration&&0===X.transitionDuration||C.animationDuration&&0===X.animationDuration)&&Math.max(X.animationDelay,X.transitionDelay);k?m(b,Math.floor(k*da*1E3),!1):b();x.resume=function(){d(!0)};x.pause=function(){d(!1)}}else g()}var f=c||{};f.$$prepared||(f=pa(Ja(f)));var J={},h=z(a);if(!h||!h.parentNode||!w.enabled())return G();var H=[],I=a.attr("class"),D=Na(f),y,K,E,O,x,P,S,p,V,W,fa=[];if(0===f.duration||!k.animations&&
+!k.transitions)return G();var ja=f.event&&ca(f.event)?f.event.join(" "):f.event,Z="",U="";ja&&f.structural?Z=Y(ja,"ng-",!0):ja&&(Z=ja);f.addClass&&(U+=Y(f.addClass,"-add"));f.removeClass&&(U.length&&(U+=" "),U+=Y(f.removeClass,"-remove"));f.applyClassesEarly&&U.length&&n(a,f);var ga=[Z,U].join(" ").trim(),na=I+" "+ga,ea=Y(ga,"-active"),I=D.to&&0<Object.keys(D.to).length;if(!(0<(f.keyframeStyle||"").length||I||ga))return G();var ia,X;0<f.stagger?(D=parseFloat(f.stagger),X={transitionDelay:D,animationDelay:D,
+transitionDuration:0,animationDuration:0}):(ia=B(h,na),X=Q(h,ga,ia,Va));f.$$skipPreparationClasses||e.addClass(a,ga);f.transitionStyle&&(D=[T,f.transitionStyle],la(h,D),H.push(D));0<=f.duration&&(D=0<h.style[T].length,D=Ga(f.duration,D),la(h,D),H.push(D));f.keyframeStyle&&(D=[$,f.keyframeStyle],la(h,D),H.push(D));var da=X?0<=f.staggerIndex?f.staggerIndex:b.count(ia):0;(ja=0===da)&&!f.skipBlocking&&qa(h,9999);var C=F(h,na,ia),aa=C.maxDelay;P=Math.max(aa,0);p=C.maxDuration;var q={};q.hasTransitions=
+0<C.transitionDuration;q.hasAnimations=0<C.animationDuration;q.hasTransitionAll=q.hasTransitions&&"all"==C.transitionProperty;q.applyTransitionDuration=I&&(q.hasTransitions&&!q.hasTransitionAll||q.hasAnimations&&!q.hasTransitions);q.applyAnimationDuration=f.duration&&q.hasAnimations;q.applyTransitionDelay=ua(f.delay)&&(q.applyTransitionDuration||q.hasTransitions);q.applyAnimationDelay=ua(f.delay)&&q.hasAnimations;q.recalculateTimingStyles=0<U.length;if(q.applyTransitionDuration||q.applyAnimationDuration)p=
+f.duration?parseFloat(f.duration):p,q.applyTransitionDuration&&(q.hasTransitions=!0,C.transitionDuration=p,D=0<h.style[T+"Property"].length,H.push(Ga(p,D))),q.applyAnimationDuration&&(q.hasAnimations=!0,C.animationDuration=p,H.push([za,p+"s"]));if(0===p&&!q.recalculateTimingStyles)return G();if(null!=f.delay){var ba;"boolean"!==typeof f.delay&&(ba=parseFloat(f.delay),P=Math.max(ba,0));q.applyTransitionDelay&&H.push([ma,ba+"s"]);q.applyAnimationDelay&&H.push([ra,ba+"s"])}null==f.duration&&0<C.transitionDuration&&
+(q.recalculateTimingStyles=q.recalculateTimingStyles||ja);S=1E3*P;V=1E3*p;f.skipBlocking||(q.blockTransition=0<C.transitionDuration,q.blockKeyframeAnimation=0<C.animationDuration&&0<X.animationDelay&&0===X.animationDuration);f.from&&(f.cleanupStyles&&Ia(J,h,Object.keys(f.from)),Ca(a,f));q.blockTransition||q.blockKeyframeAnimation?N(p):f.skipBlocking||qa(h,!1);return{$$willAnimate:!0,end:d,start:function(){if(!y)return x={end:d,cancel:v,resume:null,pause:null},O=new l(x),u(L),O}}}}]}]).provider("$$animateCssDriver",
+["$$animationProvider",function(a){a.drivers.push("$$animateCssDriver");this.$get=["$animateCss","$rootScope","$$AnimateRunner","$rootElement","$sniffer","$$jqLite","$document",function(a,c,d,e,l,m,I){function k(a){return a.replace(/\bng-\S+\b/g,"")}function v(a,b){P(a)&&(a=a.split(" "));P(b)&&(b=b.split(" "));return a.filter(function(a){return-1===b.indexOf(a)}).join(" ")}function w(c,e,m){function l(a){var b={},c=z(a).getBoundingClientRect();s(["width","height","top","left"],function(a){var d=c[a];
+switch(a){case "top":d+=u.scrollTop;break;case "left":d+=u.scrollLeft}b[a]=Math.floor(d)+"px"});return b}function t(){var c=k(m.attr("class")||""),d=v(c,g),c=v(g,c),d=a(w,{to:l(m),addClass:"ng-anchor-in "+d,removeClass:"ng-anchor-out "+c,delay:!0});return d.$$willAnimate?d:null}function I(){w.remove();e.removeClass("ng-animate-shim");m.removeClass("ng-animate-shim")}var w=E(z(e).cloneNode(!0)),g=k(w.attr("class")||"");e.addClass("ng-animate-shim");m.addClass("ng-animate-shim");w.addClass("ng-anchor");
+F.append(w);var N;c=function(){var c=a(w,{addClass:"ng-anchor-out",delay:!0,from:l(e)});return c.$$willAnimate?c:null}();if(!c&&(N=t(),!N))return I();var G=c||N;return{start:function(){function a(){c&&c.end()}var b,c=G.start();c.done(function(){c=null;if(!N&&(N=t()))return c=N.start(),c.done(function(){c=null;I();b.complete()}),c;I();b.complete()});return b=new d({end:a,cancel:a})}}}function B(a,b,c,e){var k=Q(a,R),m=Q(b,R),l=[];s(e,function(a){(a=w(c,a.out,a["in"]))&&l.push(a)});if(k||m||0!==l.length)return{start:function(){function a(){s(b,
+function(a){a.end()})}var b=[];k&&b.push(k.start());m&&b.push(m.start());s(l,function(a){b.push(a.start())});var c=new d({end:a,cancel:a});d.all(b,function(a){c.complete(a)});return c}}}function Q(c){var d=c.element,e=c.options||{};c.structural&&(e.event=c.event,e.structural=!0,e.applyClassesEarly=!0,"leave"===c.event&&(e.onDone=e.domOperation));e.preparationClasses&&(e.event=Z(e.event,e.preparationClasses));c=a(d,e);return c.$$willAnimate?c:null}if(!l.animations&&!l.transitions)return R;var u=I[0].body;
+c=z(e);var F=E(c.parentNode&&11===c.parentNode.nodeType||u.contains(c)?c:u);V(m);return function(a){return a.from&&a.to?B(a.from,a.to,a.classes,a.anchors):Q(a)}}]}]).provider("$$animateJs",["$animateProvider",function(a){this.$get=["$injector","$$AnimateRunner","$$jqLite",function(b,c,d){function e(c){c=ca(c)?c:c.split(" ");for(var d=[],e={},l=0;l<c.length;l++){var w=c[l],s=a.$$registeredAnimations[w];s&&!e[w]&&(d.push(b.get(s)),e[w]=!0)}return d}var l=V(d);return function(a,b,d,v){function w(){v.domOperation();
+l(a,v)}function B(a,b,d,e,f){switch(d){case "animate":b=[b,e.from,e.to,f];break;case "setClass":b=[b,n,K,f];break;case "addClass":b=[b,n,f];break;case "removeClass":b=[b,K,f];break;default:b=[b,f]}b.push(e);if(a=a.apply(a,b))if(Ka(a.start)&&(a=a.start()),a instanceof c)a.done(f);else if(Ka(a))return a;return R}function z(a,b,d,e,f){var g=[];s(e,function(e){var k=e[f];k&&g.push(function(){var e,f,h=!1,g=function(a){h||(h=!0,(f||R)(a),e.complete(!a))};e=new c({end:function(){g()},cancel:function(){g(!0)}});
+f=B(k,a,b,d,function(a){g(!1===a)});return e})});return g}function u(a,b,d,e,f){var g=z(a,b,d,e,f);if(0===g.length){var h,k;"beforeSetClass"===f?(h=z(a,"removeClass",d,e,"beforeRemoveClass"),k=z(a,"addClass",d,e,"beforeAddClass")):"setClass"===f&&(h=z(a,"removeClass",d,e,"removeClass"),k=z(a,"addClass",d,e,"addClass"));h&&(g=g.concat(h));k&&(g=g.concat(k))}if(0!==g.length)return function(a){var b=[];g.length&&s(g,function(a){b.push(a())});b.length?c.all(b,a):a();return function(a){s(b,function(b){a?
+b.cancel():b.end()})}}}var F=!1;3===arguments.length&&va(d)&&(v=d,d=null);v=pa(v);d||(d=a.attr("class")||"",v.addClass&&(d+=" "+v.addClass),v.removeClass&&(d+=" "+v.removeClass));var n=v.addClass,K=v.removeClass,J=e(d),r,t;if(J.length){var M,E;"leave"==b?(E="leave",M="afterLeave"):(E="before"+b.charAt(0).toUpperCase()+b.substr(1),M=b);"enter"!==b&&"move"!==b&&(r=u(a,b,v,J,E));t=u(a,b,v,J,M)}if(r||t){var g;return{$$willAnimate:!0,end:function(){g?g.end():(F=!0,w(),ha(a,v),g=new c,g.complete(!0));return g},
+start:function(){function b(c){F=!0;w();ha(a,v);g.complete(c)}if(g)return g;g=new c;var d,e=[];r&&e.push(function(a){d=r(a)});e.length?e.push(function(a){w();a(!0)}):w();t&&e.push(function(a){d=t(a)});g.setHost({end:function(){F||((d||R)(void 0),b(void 0))},cancel:function(){F||((d||R)(!0),b(!0))}});c.chain(e,b);return g}}}}}]}]).provider("$$animateJsDriver",["$$animationProvider",function(a){a.drivers.push("$$animateJsDriver");this.$get=["$$animateJs","$$AnimateRunner",function(a,c){function d(c){return a(c.element,
+c.event,c.classes,c.options)}return function(a){if(a.from&&a.to){var b=d(a.from),m=d(a.to);if(b||m)return{start:function(){function a(){return function(){s(d,function(a){a.end()})}}var d=[];b&&d.push(b.start());m&&d.push(m.start());c.all(d,function(a){e.complete(a)});var e=new c({end:a(),cancel:a()});return e}}}else return d(a)}}]}])})(window,window.angular);
+//# sourceMappingURL=angular-animate.min.js.map


[35/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-parse-ext.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-parse-ext.js b/rocketmq-console/src/main/resources/static/vendor/angular/angular-parse-ext.js
new file mode 100644
index 0000000..58d3f02
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-parse-ext.js
@@ -0,0 +1,1271 @@
+/**
+ * @license AngularJS v1.5.6
+ * (c) 2010-2016 Google, Inc. http://angularjs.org
+ * License: MIT
+ */
+(function(window, angular) {'use strict';
+
+/******************************************************
+ *         Generated file, do not modify              *
+ *                                                    *
+ *****************************************************/
+
+function IDS_Y(cp) {
+  if (0x0041 <= cp && cp <= 0x005A) return true;
+  if (0x0061 <= cp && cp <= 0x007A) return true;
+  if (cp === 0x00AA) return true;
+  if (cp === 0x00B5) return true;
+  if (cp === 0x00BA) return true;
+  if (0x00C0 <= cp && cp <= 0x00D6) return true;
+  if (0x00D8 <= cp && cp <= 0x00F6) return true;
+  if (0x00F8 <= cp && cp <= 0x02C1) return true;
+  if (0x02C6 <= cp && cp <= 0x02D1) return true;
+  if (0x02E0 <= cp && cp <= 0x02E4) return true;
+  if (cp === 0x02EC) return true;
+  if (cp === 0x02EE) return true;
+  if (0x0370 <= cp && cp <= 0x0374) return true;
+  if (0x0376 <= cp && cp <= 0x0377) return true;
+  if (0x037A <= cp && cp <= 0x037D) return true;
+  if (cp === 0x037F) return true;
+  if (cp === 0x0386) return true;
+  if (0x0388 <= cp && cp <= 0x038A) return true;
+  if (cp === 0x038C) return true;
+  if (0x038E <= cp && cp <= 0x03A1) return true;
+  if (0x03A3 <= cp && cp <= 0x03F5) return true;
+  if (0x03F7 <= cp && cp <= 0x0481) return true;
+  if (0x048A <= cp && cp <= 0x052F) return true;
+  if (0x0531 <= cp && cp <= 0x0556) return true;
+  if (cp === 0x0559) return true;
+  if (0x0561 <= cp && cp <= 0x0587) return true;
+  if (0x05D0 <= cp && cp <= 0x05EA) return true;
+  if (0x05F0 <= cp && cp <= 0x05F2) return true;
+  if (0x0620 <= cp && cp <= 0x064A) return true;
+  if (0x066E <= cp && cp <= 0x066F) return true;
+  if (0x0671 <= cp && cp <= 0x06D3) return true;
+  if (cp === 0x06D5) return true;
+  if (0x06E5 <= cp && cp <= 0x06E6) return true;
+  if (0x06EE <= cp && cp <= 0x06EF) return true;
+  if (0x06FA <= cp && cp <= 0x06FC) return true;
+  if (cp === 0x06FF) return true;
+  if (cp === 0x0710) return true;
+  if (0x0712 <= cp && cp <= 0x072F) return true;
+  if (0x074D <= cp && cp <= 0x07A5) return true;
+  if (cp === 0x07B1) return true;
+  if (0x07CA <= cp && cp <= 0x07EA) return true;
+  if (0x07F4 <= cp && cp <= 0x07F5) return true;
+  if (cp === 0x07FA) return true;
+  if (0x0800 <= cp && cp <= 0x0815) return true;
+  if (cp === 0x081A) return true;
+  if (cp === 0x0824) return true;
+  if (cp === 0x0828) return true;
+  if (0x0840 <= cp && cp <= 0x0858) return true;
+  if (0x08A0 <= cp && cp <= 0x08B4) return true;
+  if (0x0904 <= cp && cp <= 0x0939) return true;
+  if (cp === 0x093D) return true;
+  if (cp === 0x0950) return true;
+  if (0x0958 <= cp && cp <= 0x0961) return true;
+  if (0x0971 <= cp && cp <= 0x0980) return true;
+  if (0x0985 <= cp && cp <= 0x098C) return true;
+  if (0x098F <= cp && cp <= 0x0990) return true;
+  if (0x0993 <= cp && cp <= 0x09A8) return true;
+  if (0x09AA <= cp && cp <= 0x09B0) return true;
+  if (cp === 0x09B2) return true;
+  if (0x09B6 <= cp && cp <= 0x09B9) return true;
+  if (cp === 0x09BD) return true;
+  if (cp === 0x09CE) return true;
+  if (0x09DC <= cp && cp <= 0x09DD) return true;
+  if (0x09DF <= cp && cp <= 0x09E1) return true;
+  if (0x09F0 <= cp && cp <= 0x09F1) return true;
+  if (0x0A05 <= cp && cp <= 0x0A0A) return true;
+  if (0x0A0F <= cp && cp <= 0x0A10) return true;
+  if (0x0A13 <= cp && cp <= 0x0A28) return true;
+  if (0x0A2A <= cp && cp <= 0x0A30) return true;
+  if (0x0A32 <= cp && cp <= 0x0A33) return true;
+  if (0x0A35 <= cp && cp <= 0x0A36) return true;
+  if (0x0A38 <= cp && cp <= 0x0A39) return true;
+  if (0x0A59 <= cp && cp <= 0x0A5C) return true;
+  if (cp === 0x0A5E) return true;
+  if (0x0A72 <= cp && cp <= 0x0A74) return true;
+  if (0x0A85 <= cp && cp <= 0x0A8D) return true;
+  if (0x0A8F <= cp && cp <= 0x0A91) return true;
+  if (0x0A93 <= cp && cp <= 0x0AA8) return true;
+  if (0x0AAA <= cp && cp <= 0x0AB0) return true;
+  if (0x0AB2 <= cp && cp <= 0x0AB3) return true;
+  if (0x0AB5 <= cp && cp <= 0x0AB9) return true;
+  if (cp === 0x0ABD) return true;
+  if (cp === 0x0AD0) return true;
+  if (0x0AE0 <= cp && cp <= 0x0AE1) return true;
+  if (cp === 0x0AF9) return true;
+  if (0x0B05 <= cp && cp <= 0x0B0C) return true;
+  if (0x0B0F <= cp && cp <= 0x0B10) return true;
+  if (0x0B13 <= cp && cp <= 0x0B28) return true;
+  if (0x0B2A <= cp && cp <= 0x0B30) return true;
+  if (0x0B32 <= cp && cp <= 0x0B33) return true;
+  if (0x0B35 <= cp && cp <= 0x0B39) return true;
+  if (cp === 0x0B3D) return true;
+  if (0x0B5C <= cp && cp <= 0x0B5D) return true;
+  if (0x0B5F <= cp && cp <= 0x0B61) return true;
+  if (cp === 0x0B71) return true;
+  if (cp === 0x0B83) return true;
+  if (0x0B85 <= cp && cp <= 0x0B8A) return true;
+  if (0x0B8E <= cp && cp <= 0x0B90) return true;
+  if (0x0B92 <= cp && cp <= 0x0B95) return true;
+  if (0x0B99 <= cp && cp <= 0x0B9A) return true;
+  if (cp === 0x0B9C) return true;
+  if (0x0B9E <= cp && cp <= 0x0B9F) return true;
+  if (0x0BA3 <= cp && cp <= 0x0BA4) return true;
+  if (0x0BA8 <= cp && cp <= 0x0BAA) return true;
+  if (0x0BAE <= cp && cp <= 0x0BB9) return true;
+  if (cp === 0x0BD0) return true;
+  if (0x0C05 <= cp && cp <= 0x0C0C) return true;
+  if (0x0C0E <= cp && cp <= 0x0C10) return true;
+  if (0x0C12 <= cp && cp <= 0x0C28) return true;
+  if (0x0C2A <= cp && cp <= 0x0C39) return true;
+  if (cp === 0x0C3D) return true;
+  if (0x0C58 <= cp && cp <= 0x0C5A) return true;
+  if (0x0C60 <= cp && cp <= 0x0C61) return true;
+  if (0x0C85 <= cp && cp <= 0x0C8C) return true;
+  if (0x0C8E <= cp && cp <= 0x0C90) return true;
+  if (0x0C92 <= cp && cp <= 0x0CA8) return true;
+  if (0x0CAA <= cp && cp <= 0x0CB3) return true;
+  if (0x0CB5 <= cp && cp <= 0x0CB9) return true;
+  if (cp === 0x0CBD) return true;
+  if (cp === 0x0CDE) return true;
+  if (0x0CE0 <= cp && cp <= 0x0CE1) return true;
+  if (0x0CF1 <= cp && cp <= 0x0CF2) return true;
+  if (0x0D05 <= cp && cp <= 0x0D0C) return true;
+  if (0x0D0E <= cp && cp <= 0x0D10) return true;
+  if (0x0D12 <= cp && cp <= 0x0D3A) return true;
+  if (cp === 0x0D3D) return true;
+  if (cp === 0x0D4E) return true;
+  if (0x0D5F <= cp && cp <= 0x0D61) return true;
+  if (0x0D7A <= cp && cp <= 0x0D7F) return true;
+  if (0x0D85 <= cp && cp <= 0x0D96) return true;
+  if (0x0D9A <= cp && cp <= 0x0DB1) return true;
+  if (0x0DB3 <= cp && cp <= 0x0DBB) return true;
+  if (cp === 0x0DBD) return true;
+  if (0x0DC0 <= cp && cp <= 0x0DC6) return true;
+  if (0x0E01 <= cp && cp <= 0x0E30) return true;
+  if (0x0E32 <= cp && cp <= 0x0E33) return true;
+  if (0x0E40 <= cp && cp <= 0x0E46) return true;
+  if (0x0E81 <= cp && cp <= 0x0E82) return true;
+  if (cp === 0x0E84) return true;
+  if (0x0E87 <= cp && cp <= 0x0E88) return true;
+  if (cp === 0x0E8A) return true;
+  if (cp === 0x0E8D) return true;
+  if (0x0E94 <= cp && cp <= 0x0E97) return true;
+  if (0x0E99 <= cp && cp <= 0x0E9F) return true;
+  if (0x0EA1 <= cp && cp <= 0x0EA3) return true;
+  if (cp === 0x0EA5) return true;
+  if (cp === 0x0EA7) return true;
+  if (0x0EAA <= cp && cp <= 0x0EAB) return true;
+  if (0x0EAD <= cp && cp <= 0x0EB0) return true;
+  if (0x0EB2 <= cp && cp <= 0x0EB3) return true;
+  if (cp === 0x0EBD) return true;
+  if (0x0EC0 <= cp && cp <= 0x0EC4) return true;
+  if (cp === 0x0EC6) return true;
+  if (0x0EDC <= cp && cp <= 0x0EDF) return true;
+  if (cp === 0x0F00) return true;
+  if (0x0F40 <= cp && cp <= 0x0F47) return true;
+  if (0x0F49 <= cp && cp <= 0x0F6C) return true;
+  if (0x0F88 <= cp && cp <= 0x0F8C) return true;
+  if (0x1000 <= cp && cp <= 0x102A) return true;
+  if (cp === 0x103F) return true;
+  if (0x1050 <= cp && cp <= 0x1055) return true;
+  if (0x105A <= cp && cp <= 0x105D) return true;
+  if (cp === 0x1061) return true;
+  if (0x1065 <= cp && cp <= 0x1066) return true;
+  if (0x106E <= cp && cp <= 0x1070) return true;
+  if (0x1075 <= cp && cp <= 0x1081) return true;
+  if (cp === 0x108E) return true;
+  if (0x10A0 <= cp && cp <= 0x10C5) return true;
+  if (cp === 0x10C7) return true;
+  if (cp === 0x10CD) return true;
+  if (0x10D0 <= cp && cp <= 0x10FA) return true;
+  if (0x10FC <= cp && cp <= 0x1248) return true;
+  if (0x124A <= cp && cp <= 0x124D) return true;
+  if (0x1250 <= cp && cp <= 0x1256) return true;
+  if (cp === 0x1258) return true;
+  if (0x125A <= cp && cp <= 0x125D) return true;
+  if (0x1260 <= cp && cp <= 0x1288) return true;
+  if (0x128A <= cp && cp <= 0x128D) return true;
+  if (0x1290 <= cp && cp <= 0x12B0) return true;
+  if (0x12B2 <= cp && cp <= 0x12B5) return true;
+  if (0x12B8 <= cp && cp <= 0x12BE) return true;
+  if (cp === 0x12C0) return true;
+  if (0x12C2 <= cp && cp <= 0x12C5) return true;
+  if (0x12C8 <= cp && cp <= 0x12D6) return true;
+  if (0x12D8 <= cp && cp <= 0x1310) return true;
+  if (0x1312 <= cp && cp <= 0x1315) return true;
+  if (0x1318 <= cp && cp <= 0x135A) return true;
+  if (0x1380 <= cp && cp <= 0x138F) return true;
+  if (0x13A0 <= cp && cp <= 0x13F5) return true;
+  if (0x13F8 <= cp && cp <= 0x13FD) return true;
+  if (0x1401 <= cp && cp <= 0x166C) return true;
+  if (0x166F <= cp && cp <= 0x167F) return true;
+  if (0x1681 <= cp && cp <= 0x169A) return true;
+  if (0x16A0 <= cp && cp <= 0x16EA) return true;
+  if (0x16EE <= cp && cp <= 0x16F8) return true;
+  if (0x1700 <= cp && cp <= 0x170C) return true;
+  if (0x170E <= cp && cp <= 0x1711) return true;
+  if (0x1720 <= cp && cp <= 0x1731) return true;
+  if (0x1740 <= cp && cp <= 0x1751) return true;
+  if (0x1760 <= cp && cp <= 0x176C) return true;
+  if (0x176E <= cp && cp <= 0x1770) return true;
+  if (0x1780 <= cp && cp <= 0x17B3) return true;
+  if (cp === 0x17D7) return true;
+  if (cp === 0x17DC) return true;
+  if (0x1820 <= cp && cp <= 0x1877) return true;
+  if (0x1880 <= cp && cp <= 0x18A8) return true;
+  if (cp === 0x18AA) return true;
+  if (0x18B0 <= cp && cp <= 0x18F5) return true;
+  if (0x1900 <= cp && cp <= 0x191E) return true;
+  if (0x1950 <= cp && cp <= 0x196D) return true;
+  if (0x1970 <= cp && cp <= 0x1974) return true;
+  if (0x1980 <= cp && cp <= 0x19AB) return true;
+  if (0x19B0 <= cp && cp <= 0x19C9) return true;
+  if (0x1A00 <= cp && cp <= 0x1A16) return true;
+  if (0x1A20 <= cp && cp <= 0x1A54) return true;
+  if (cp === 0x1AA7) return true;
+  if (0x1B05 <= cp && cp <= 0x1B33) return true;
+  if (0x1B45 <= cp && cp <= 0x1B4B) return true;
+  if (0x1B83 <= cp && cp <= 0x1BA0) return true;
+  if (0x1BAE <= cp && cp <= 0x1BAF) return true;
+  if (0x1BBA <= cp && cp <= 0x1BE5) return true;
+  if (0x1C00 <= cp && cp <= 0x1C23) return true;
+  if (0x1C4D <= cp && cp <= 0x1C4F) return true;
+  if (0x1C5A <= cp && cp <= 0x1C7D) return true;
+  if (0x1CE9 <= cp && cp <= 0x1CEC) return true;
+  if (0x1CEE <= cp && cp <= 0x1CF1) return true;
+  if (0x1CF5 <= cp && cp <= 0x1CF6) return true;
+  if (0x1D00 <= cp && cp <= 0x1DBF) return true;
+  if (0x1E00 <= cp && cp <= 0x1F15) return true;
+  if (0x1F18 <= cp && cp <= 0x1F1D) return true;
+  if (0x1F20 <= cp && cp <= 0x1F45) return true;
+  if (0x1F48 <= cp && cp <= 0x1F4D) return true;
+  if (0x1F50 <= cp && cp <= 0x1F57) return true;
+  if (cp === 0x1F59) return true;
+  if (cp === 0x1F5B) return true;
+  if (cp === 0x1F5D) return true;
+  if (0x1F5F <= cp && cp <= 0x1F7D) return true;
+  if (0x1F80 <= cp && cp <= 0x1FB4) return true;
+  if (0x1FB6 <= cp && cp <= 0x1FBC) return true;
+  if (cp === 0x1FBE) return true;
+  if (0x1FC2 <= cp && cp <= 0x1FC4) return true;
+  if (0x1FC6 <= cp && cp <= 0x1FCC) return true;
+  if (0x1FD0 <= cp && cp <= 0x1FD3) return true;
+  if (0x1FD6 <= cp && cp <= 0x1FDB) return true;
+  if (0x1FE0 <= cp && cp <= 0x1FEC) return true;
+  if (0x1FF2 <= cp && cp <= 0x1FF4) return true;
+  if (0x1FF6 <= cp && cp <= 0x1FFC) return true;
+  if (cp === 0x2071) return true;
+  if (cp === 0x207F) return true;
+  if (0x2090 <= cp && cp <= 0x209C) return true;
+  if (cp === 0x2102) return true;
+  if (cp === 0x2107) return true;
+  if (0x210A <= cp && cp <= 0x2113) return true;
+  if (cp === 0x2115) return true;
+  if (0x2118 <= cp && cp <= 0x211D) return true;
+  if (cp === 0x2124) return true;
+  if (cp === 0x2126) return true;
+  if (cp === 0x2128) return true;
+  if (0x212A <= cp && cp <= 0x2139) return true;
+  if (0x213C <= cp && cp <= 0x213F) return true;
+  if (0x2145 <= cp && cp <= 0x2149) return true;
+  if (cp === 0x214E) return true;
+  if (0x2160 <= cp && cp <= 0x2188) return true;
+  if (0x2C00 <= cp && cp <= 0x2C2E) return true;
+  if (0x2C30 <= cp && cp <= 0x2C5E) return true;
+  if (0x2C60 <= cp && cp <= 0x2CE4) return true;
+  if (0x2CEB <= cp && cp <= 0x2CEE) return true;
+  if (0x2CF2 <= cp && cp <= 0x2CF3) return true;
+  if (0x2D00 <= cp && cp <= 0x2D25) return true;
+  if (cp === 0x2D27) return true;
+  if (cp === 0x2D2D) return true;
+  if (0x2D30 <= cp && cp <= 0x2D67) return true;
+  if (cp === 0x2D6F) return true;
+  if (0x2D80 <= cp && cp <= 0x2D96) return true;
+  if (0x2DA0 <= cp && cp <= 0x2DA6) return true;
+  if (0x2DA8 <= cp && cp <= 0x2DAE) return true;
+  if (0x2DB0 <= cp && cp <= 0x2DB6) return true;
+  if (0x2DB8 <= cp && cp <= 0x2DBE) return true;
+  if (0x2DC0 <= cp && cp <= 0x2DC6) return true;
+  if (0x2DC8 <= cp && cp <= 0x2DCE) return true;
+  if (0x2DD0 <= cp && cp <= 0x2DD6) return true;
+  if (0x2DD8 <= cp && cp <= 0x2DDE) return true;
+  if (0x3005 <= cp && cp <= 0x3007) return true;
+  if (0x3021 <= cp && cp <= 0x3029) return true;
+  if (0x3031 <= cp && cp <= 0x3035) return true;
+  if (0x3038 <= cp && cp <= 0x303C) return true;
+  if (0x3041 <= cp && cp <= 0x3096) return true;
+  if (0x309B <= cp && cp <= 0x309F) return true;
+  if (0x30A1 <= cp && cp <= 0x30FA) return true;
+  if (0x30FC <= cp && cp <= 0x30FF) return true;
+  if (0x3105 <= cp && cp <= 0x312D) return true;
+  if (0x3131 <= cp && cp <= 0x318E) return true;
+  if (0x31A0 <= cp && cp <= 0x31BA) return true;
+  if (0x31F0 <= cp && cp <= 0x31FF) return true;
+  if (0x3400 <= cp && cp <= 0x4DB5) return true;
+  if (0x4E00 <= cp && cp <= 0x9FD5) return true;
+  if (0xA000 <= cp && cp <= 0xA48C) return true;
+  if (0xA4D0 <= cp && cp <= 0xA4FD) return true;
+  if (0xA500 <= cp && cp <= 0xA60C) return true;
+  if (0xA610 <= cp && cp <= 0xA61F) return true;
+  if (0xA62A <= cp && cp <= 0xA62B) return true;
+  if (0xA640 <= cp && cp <= 0xA66E) return true;
+  if (0xA67F <= cp && cp <= 0xA69D) return true;
+  if (0xA6A0 <= cp && cp <= 0xA6EF) return true;
+  if (0xA717 <= cp && cp <= 0xA71F) return true;
+  if (0xA722 <= cp && cp <= 0xA788) return true;
+  if (0xA78B <= cp && cp <= 0xA7AD) return true;
+  if (0xA7B0 <= cp && cp <= 0xA7B7) return true;
+  if (0xA7F7 <= cp && cp <= 0xA801) return true;
+  if (0xA803 <= cp && cp <= 0xA805) return true;
+  if (0xA807 <= cp && cp <= 0xA80A) return true;
+  if (0xA80C <= cp && cp <= 0xA822) return true;
+  if (0xA840 <= cp && cp <= 0xA873) return true;
+  if (0xA882 <= cp && cp <= 0xA8B3) return true;
+  if (0xA8F2 <= cp && cp <= 0xA8F7) return true;
+  if (cp === 0xA8FB) return true;
+  if (cp === 0xA8FD) return true;
+  if (0xA90A <= cp && cp <= 0xA925) return true;
+  if (0xA930 <= cp && cp <= 0xA946) return true;
+  if (0xA960 <= cp && cp <= 0xA97C) return true;
+  if (0xA984 <= cp && cp <= 0xA9B2) return true;
+  if (cp === 0xA9CF) return true;
+  if (0xA9E0 <= cp && cp <= 0xA9E4) return true;
+  if (0xA9E6 <= cp && cp <= 0xA9EF) return true;
+  if (0xA9FA <= cp && cp <= 0xA9FE) return true;
+  if (0xAA00 <= cp && cp <= 0xAA28) return true;
+  if (0xAA40 <= cp && cp <= 0xAA42) return true;
+  if (0xAA44 <= cp && cp <= 0xAA4B) return true;
+  if (0xAA60 <= cp && cp <= 0xAA76) return true;
+  if (cp === 0xAA7A) return true;
+  if (0xAA7E <= cp && cp <= 0xAAAF) return true;
+  if (cp === 0xAAB1) return true;
+  if (0xAAB5 <= cp && cp <= 0xAAB6) return true;
+  if (0xAAB9 <= cp && cp <= 0xAABD) return true;
+  if (cp === 0xAAC0) return true;
+  if (cp === 0xAAC2) return true;
+  if (0xAADB <= cp && cp <= 0xAADD) return true;
+  if (0xAAE0 <= cp && cp <= 0xAAEA) return true;
+  if (0xAAF2 <= cp && cp <= 0xAAF4) return true;
+  if (0xAB01 <= cp && cp <= 0xAB06) return true;
+  if (0xAB09 <= cp && cp <= 0xAB0E) return true;
+  if (0xAB11 <= cp && cp <= 0xAB16) return true;
+  if (0xAB20 <= cp && cp <= 0xAB26) return true;
+  if (0xAB28 <= cp && cp <= 0xAB2E) return true;
+  if (0xAB30 <= cp && cp <= 0xAB5A) return true;
+  if (0xAB5C <= cp && cp <= 0xAB65) return true;
+  if (0xAB70 <= cp && cp <= 0xABE2) return true;
+  if (0xAC00 <= cp && cp <= 0xD7A3) return true;
+  if (0xD7B0 <= cp && cp <= 0xD7C6) return true;
+  if (0xD7CB <= cp && cp <= 0xD7FB) return true;
+  if (0xF900 <= cp && cp <= 0xFA6D) return true;
+  if (0xFA70 <= cp && cp <= 0xFAD9) return true;
+  if (0xFB00 <= cp && cp <= 0xFB06) return true;
+  if (0xFB13 <= cp && cp <= 0xFB17) return true;
+  if (cp === 0xFB1D) return true;
+  if (0xFB1F <= cp && cp <= 0xFB28) return true;
+  if (0xFB2A <= cp && cp <= 0xFB36) return true;
+  if (0xFB38 <= cp && cp <= 0xFB3C) return true;
+  if (cp === 0xFB3E) return true;
+  if (0xFB40 <= cp && cp <= 0xFB41) return true;
+  if (0xFB43 <= cp && cp <= 0xFB44) return true;
+  if (0xFB46 <= cp && cp <= 0xFBB1) return true;
+  if (0xFBD3 <= cp && cp <= 0xFD3D) return true;
+  if (0xFD50 <= cp && cp <= 0xFD8F) return true;
+  if (0xFD92 <= cp && cp <= 0xFDC7) return true;
+  if (0xFDF0 <= cp && cp <= 0xFDFB) return true;
+  if (0xFE70 <= cp && cp <= 0xFE74) return true;
+  if (0xFE76 <= cp && cp <= 0xFEFC) return true;
+  if (0xFF21 <= cp && cp <= 0xFF3A) return true;
+  if (0xFF41 <= cp && cp <= 0xFF5A) return true;
+  if (0xFF66 <= cp && cp <= 0xFFBE) return true;
+  if (0xFFC2 <= cp && cp <= 0xFFC7) return true;
+  if (0xFFCA <= cp && cp <= 0xFFCF) return true;
+  if (0xFFD2 <= cp && cp <= 0xFFD7) return true;
+  if (0xFFDA <= cp && cp <= 0xFFDC) return true;
+  if (0x10000 <= cp && cp <= 0x1000B) return true;
+  if (0x1000D <= cp && cp <= 0x10026) return true;
+  if (0x10028 <= cp && cp <= 0x1003A) return true;
+  if (0x1003C <= cp && cp <= 0x1003D) return true;
+  if (0x1003F <= cp && cp <= 0x1004D) return true;
+  if (0x10050 <= cp && cp <= 0x1005D) return true;
+  if (0x10080 <= cp && cp <= 0x100FA) return true;
+  if (0x10140 <= cp && cp <= 0x10174) return true;
+  if (0x10280 <= cp && cp <= 0x1029C) return true;
+  if (0x102A0 <= cp && cp <= 0x102D0) return true;
+  if (0x10300 <= cp && cp <= 0x1031F) return true;
+  if (0x10330 <= cp && cp <= 0x1034A) return true;
+  if (0x10350 <= cp && cp <= 0x10375) return true;
+  if (0x10380 <= cp && cp <= 0x1039D) return true;
+  if (0x103A0 <= cp && cp <= 0x103C3) return true;
+  if (0x103C8 <= cp && cp <= 0x103CF) return true;
+  if (0x103D1 <= cp && cp <= 0x103D5) return true;
+  if (0x10400 <= cp && cp <= 0x1049D) return true;
+  if (0x10500 <= cp && cp <= 0x10527) return true;
+  if (0x10530 <= cp && cp <= 0x10563) return true;
+  if (0x10600 <= cp && cp <= 0x10736) return true;
+  if (0x10740 <= cp && cp <= 0x10755) return true;
+  if (0x10760 <= cp && cp <= 0x10767) return true;
+  if (0x10800 <= cp && cp <= 0x10805) return true;
+  if (cp === 0x10808) return true;
+  if (0x1080A <= cp && cp <= 0x10835) return true;
+  if (0x10837 <= cp && cp <= 0x10838) return true;
+  if (cp === 0x1083C) return true;
+  if (0x1083F <= cp && cp <= 0x10855) return true;
+  if (0x10860 <= cp && cp <= 0x10876) return true;
+  if (0x10880 <= cp && cp <= 0x1089E) return true;
+  if (0x108E0 <= cp && cp <= 0x108F2) return true;
+  if (0x108F4 <= cp && cp <= 0x108F5) return true;
+  if (0x10900 <= cp && cp <= 0x10915) return true;
+  if (0x10920 <= cp && cp <= 0x10939) return true;
+  if (0x10980 <= cp && cp <= 0x109B7) return true;
+  if (0x109BE <= cp && cp <= 0x109BF) return true;
+  if (cp === 0x10A00) return true;
+  if (0x10A10 <= cp && cp <= 0x10A13) return true;
+  if (0x10A15 <= cp && cp <= 0x10A17) return true;
+  if (0x10A19 <= cp && cp <= 0x10A33) return true;
+  if (0x10A60 <= cp && cp <= 0x10A7C) return true;
+  if (0x10A80 <= cp && cp <= 0x10A9C) return true;
+  if (0x10AC0 <= cp && cp <= 0x10AC7) return true;
+  if (0x10AC9 <= cp && cp <= 0x10AE4) return true;
+  if (0x10B00 <= cp && cp <= 0x10B35) return true;
+  if (0x10B40 <= cp && cp <= 0x10B55) return true;
+  if (0x10B60 <= cp && cp <= 0x10B72) return true;
+  if (0x10B80 <= cp && cp <= 0x10B91) return true;
+  if (0x10C00 <= cp && cp <= 0x10C48) return true;
+  if (0x10C80 <= cp && cp <= 0x10CB2) return true;
+  if (0x10CC0 <= cp && cp <= 0x10CF2) return true;
+  if (0x11003 <= cp && cp <= 0x11037) return true;
+  if (0x11083 <= cp && cp <= 0x110AF) return true;
+  if (0x110D0 <= cp && cp <= 0x110E8) return true;
+  if (0x11103 <= cp && cp <= 0x11126) return true;
+  if (0x11150 <= cp && cp <= 0x11172) return true;
+  if (cp === 0x11176) return true;
+  if (0x11183 <= cp && cp <= 0x111B2) return true;
+  if (0x111C1 <= cp && cp <= 0x111C4) return true;
+  if (cp === 0x111DA) return true;
+  if (cp === 0x111DC) return true;
+  if (0x11200 <= cp && cp <= 0x11211) return true;
+  if (0x11213 <= cp && cp <= 0x1122B) return true;
+  if (0x11280 <= cp && cp <= 0x11286) return true;
+  if (cp === 0x11288) return true;
+  if (0x1128A <= cp && cp <= 0x1128D) return true;
+  if (0x1128F <= cp && cp <= 0x1129D) return true;
+  if (0x1129F <= cp && cp <= 0x112A8) return true;
+  if (0x112B0 <= cp && cp <= 0x112DE) return true;
+  if (0x11305 <= cp && cp <= 0x1130C) return true;
+  if (0x1130F <= cp && cp <= 0x11310) return true;
+  if (0x11313 <= cp && cp <= 0x11328) return true;
+  if (0x1132A <= cp && cp <= 0x11330) return true;
+  if (0x11332 <= cp && cp <= 0x11333) return true;
+  if (0x11335 <= cp && cp <= 0x11339) return true;
+  if (cp === 0x1133D) return true;
+  if (cp === 0x11350) return true;
+  if (0x1135D <= cp && cp <= 0x11361) return true;
+  if (0x11480 <= cp && cp <= 0x114AF) return true;
+  if (0x114C4 <= cp && cp <= 0x114C5) return true;
+  if (cp === 0x114C7) return true;
+  if (0x11580 <= cp && cp <= 0x115AE) return true;
+  if (0x115D8 <= cp && cp <= 0x115DB) return true;
+  if (0x11600 <= cp && cp <= 0x1162F) return true;
+  if (cp === 0x11644) return true;
+  if (0x11680 <= cp && cp <= 0x116AA) return true;
+  if (0x11700 <= cp && cp <= 0x11719) return true;
+  if (0x118A0 <= cp && cp <= 0x118DF) return true;
+  if (cp === 0x118FF) return true;
+  if (0x11AC0 <= cp && cp <= 0x11AF8) return true;
+  if (0x12000 <= cp && cp <= 0x12399) return true;
+  if (0x12400 <= cp && cp <= 0x1246E) return true;
+  if (0x12480 <= cp && cp <= 0x12543) return true;
+  if (0x13000 <= cp && cp <= 0x1342E) return true;
+  if (0x14400 <= cp && cp <= 0x14646) return true;
+  if (0x16800 <= cp && cp <= 0x16A38) return true;
+  if (0x16A40 <= cp && cp <= 0x16A5E) return true;
+  if (0x16AD0 <= cp && cp <= 0x16AED) return true;
+  if (0x16B00 <= cp && cp <= 0x16B2F) return true;
+  if (0x16B40 <= cp && cp <= 0x16B43) return true;
+  if (0x16B63 <= cp && cp <= 0x16B77) return true;
+  if (0x16B7D <= cp && cp <= 0x16B8F) return true;
+  if (0x16F00 <= cp && cp <= 0x16F44) return true;
+  if (cp === 0x16F50) return true;
+  if (0x16F93 <= cp && cp <= 0x16F9F) return true;
+  if (0x1B000 <= cp && cp <= 0x1B001) return true;
+  if (0x1BC00 <= cp && cp <= 0x1BC6A) return true;
+  if (0x1BC70 <= cp && cp <= 0x1BC7C) return true;
+  if (0x1BC80 <= cp && cp <= 0x1BC88) return true;
+  if (0x1BC90 <= cp && cp <= 0x1BC99) return true;
+  if (0x1D400 <= cp && cp <= 0x1D454) return true;
+  if (0x1D456 <= cp && cp <= 0x1D49C) return true;
+  if (0x1D49E <= cp && cp <= 0x1D49F) return true;
+  if (cp === 0x1D4A2) return true;
+  if (0x1D4A5 <= cp && cp <= 0x1D4A6) return true;
+  if (0x1D4A9 <= cp && cp <= 0x1D4AC) return true;
+  if (0x1D4AE <= cp && cp <= 0x1D4B9) return true;
+  if (cp === 0x1D4BB) return true;
+  if (0x1D4BD <= cp && cp <= 0x1D4C3) return true;
+  if (0x1D4C5 <= cp && cp <= 0x1D505) return true;
+  if (0x1D507 <= cp && cp <= 0x1D50A) return true;
+  if (0x1D50D <= cp && cp <= 0x1D514) return true;
+  if (0x1D516 <= cp && cp <= 0x1D51C) return true;
+  if (0x1D51E <= cp && cp <= 0x1D539) return true;
+  if (0x1D53B <= cp && cp <= 0x1D53E) return true;
+  if (0x1D540 <= cp && cp <= 0x1D544) return true;
+  if (cp === 0x1D546) return true;
+  if (0x1D54A <= cp && cp <= 0x1D550) return true;
+  if (0x1D552 <= cp && cp <= 0x1D6A5) return true;
+  if (0x1D6A8 <= cp && cp <= 0x1D6C0) return true;
+  if (0x1D6C2 <= cp && cp <= 0x1D6DA) return true;
+  if (0x1D6DC <= cp && cp <= 0x1D6FA) return true;
+  if (0x1D6FC <= cp && cp <= 0x1D714) return true;
+  if (0x1D716 <= cp && cp <= 0x1D734) return true;
+  if (0x1D736 <= cp && cp <= 0x1D74E) return true;
+  if (0x1D750 <= cp && cp <= 0x1D76E) return true;
+  if (0x1D770 <= cp && cp <= 0x1D788) return true;
+  if (0x1D78A <= cp && cp <= 0x1D7A8) return true;
+  if (0x1D7AA <= cp && cp <= 0x1D7C2) return true;
+  if (0x1D7C4 <= cp && cp <= 0x1D7CB) return true;
+  if (0x1E800 <= cp && cp <= 0x1E8C4) return true;
+  if (0x1EE00 <= cp && cp <= 0x1EE03) return true;
+  if (0x1EE05 <= cp && cp <= 0x1EE1F) return true;
+  if (0x1EE21 <= cp && cp <= 0x1EE22) return true;
+  if (cp === 0x1EE24) return true;
+  if (cp === 0x1EE27) return true;
+  if (0x1EE29 <= cp && cp <= 0x1EE32) return true;
+  if (0x1EE34 <= cp && cp <= 0x1EE37) return true;
+  if (cp === 0x1EE39) return true;
+  if (cp === 0x1EE3B) return true;
+  if (cp === 0x1EE42) return true;
+  if (cp === 0x1EE47) return true;
+  if (cp === 0x1EE49) return true;
+  if (cp === 0x1EE4B) return true;
+  if (0x1EE4D <= cp && cp <= 0x1EE4F) return true;
+  if (0x1EE51 <= cp && cp <= 0x1EE52) return true;
+  if (cp === 0x1EE54) return true;
+  if (cp === 0x1EE57) return true;
+  if (cp === 0x1EE59) return true;
+  if (cp === 0x1EE5B) return true;
+  if (cp === 0x1EE5D) return true;
+  if (cp === 0x1EE5F) return true;
+  if (0x1EE61 <= cp && cp <= 0x1EE62) return true;
+  if (cp === 0x1EE64) return true;
+  if (0x1EE67 <= cp && cp <= 0x1EE6A) return true;
+  if (0x1EE6C <= cp && cp <= 0x1EE72) return true;
+  if (0x1EE74 <= cp && cp <= 0x1EE77) return true;
+  if (0x1EE79 <= cp && cp <= 0x1EE7C) return true;
+  if (cp === 0x1EE7E) return true;
+  if (0x1EE80 <= cp && cp <= 0x1EE89) return true;
+  if (0x1EE8B <= cp && cp <= 0x1EE9B) return true;
+  if (0x1EEA1 <= cp && cp <= 0x1EEA3) return true;
+  if (0x1EEA5 <= cp && cp <= 0x1EEA9) return true;
+  if (0x1EEAB <= cp && cp <= 0x1EEBB) return true;
+  if (0x20000 <= cp && cp <= 0x2A6D6) return true;
+  if (0x2A700 <= cp && cp <= 0x2B734) return true;
+  if (0x2B740 <= cp && cp <= 0x2B81D) return true;
+  if (0x2B820 <= cp && cp <= 0x2CEA1) return true;
+  if (0x2F800 <= cp && cp <= 0x2FA1D) return true;
+  return false;
+}
+function IDC_Y(cp) {
+  if (0x0030 <= cp && cp <= 0x0039) return true;
+  if (0x0041 <= cp && cp <= 0x005A) return true;
+  if (cp === 0x005F) return true;
+  if (0x0061 <= cp && cp <= 0x007A) return true;
+  if (cp === 0x00AA) return true;
+  if (cp === 0x00B5) return true;
+  if (cp === 0x00B7) return true;
+  if (cp === 0x00BA) return true;
+  if (0x00C0 <= cp && cp <= 0x00D6) return true;
+  if (0x00D8 <= cp && cp <= 0x00F6) return true;
+  if (0x00F8 <= cp && cp <= 0x02C1) return true;
+  if (0x02C6 <= cp && cp <= 0x02D1) return true;
+  if (0x02E0 <= cp && cp <= 0x02E4) return true;
+  if (cp === 0x02EC) return true;
+  if (cp === 0x02EE) return true;
+  if (0x0300 <= cp && cp <= 0x0374) return true;
+  if (0x0376 <= cp && cp <= 0x0377) return true;
+  if (0x037A <= cp && cp <= 0x037D) return true;
+  if (cp === 0x037F) return true;
+  if (0x0386 <= cp && cp <= 0x038A) return true;
+  if (cp === 0x038C) return true;
+  if (0x038E <= cp && cp <= 0x03A1) return true;
+  if (0x03A3 <= cp && cp <= 0x03F5) return true;
+  if (0x03F7 <= cp && cp <= 0x0481) return true;
+  if (0x0483 <= cp && cp <= 0x0487) return true;
+  if (0x048A <= cp && cp <= 0x052F) return true;
+  if (0x0531 <= cp && cp <= 0x0556) return true;
+  if (cp === 0x0559) return true;
+  if (0x0561 <= cp && cp <= 0x0587) return true;
+  if (0x0591 <= cp && cp <= 0x05BD) return true;
+  if (cp === 0x05BF) return true;
+  if (0x05C1 <= cp && cp <= 0x05C2) return true;
+  if (0x05C4 <= cp && cp <= 0x05C5) return true;
+  if (cp === 0x05C7) return true;
+  if (0x05D0 <= cp && cp <= 0x05EA) return true;
+  if (0x05F0 <= cp && cp <= 0x05F2) return true;
+  if (0x0610 <= cp && cp <= 0x061A) return true;
+  if (0x0620 <= cp && cp <= 0x0669) return true;
+  if (0x066E <= cp && cp <= 0x06D3) return true;
+  if (0x06D5 <= cp && cp <= 0x06DC) return true;
+  if (0x06DF <= cp && cp <= 0x06E8) return true;
+  if (0x06EA <= cp && cp <= 0x06FC) return true;
+  if (cp === 0x06FF) return true;
+  if (0x0710 <= cp && cp <= 0x074A) return true;
+  if (0x074D <= cp && cp <= 0x07B1) return true;
+  if (0x07C0 <= cp && cp <= 0x07F5) return true;
+  if (cp === 0x07FA) return true;
+  if (0x0800 <= cp && cp <= 0x082D) return true;
+  if (0x0840 <= cp && cp <= 0x085B) return true;
+  if (0x08A0 <= cp && cp <= 0x08B4) return true;
+  if (0x08E3 <= cp && cp <= 0x0963) return true;
+  if (0x0966 <= cp && cp <= 0x096F) return true;
+  if (0x0971 <= cp && cp <= 0x0983) return true;
+  if (0x0985 <= cp && cp <= 0x098C) return true;
+  if (0x098F <= cp && cp <= 0x0990) return true;
+  if (0x0993 <= cp && cp <= 0x09A8) return true;
+  if (0x09AA <= cp && cp <= 0x09B0) return true;
+  if (cp === 0x09B2) return true;
+  if (0x09B6 <= cp && cp <= 0x09B9) return true;
+  if (0x09BC <= cp && cp <= 0x09C4) return true;
+  if (0x09C7 <= cp && cp <= 0x09C8) return true;
+  if (0x09CB <= cp && cp <= 0x09CE) return true;
+  if (cp === 0x09D7) return true;
+  if (0x09DC <= cp && cp <= 0x09DD) return true;
+  if (0x09DF <= cp && cp <= 0x09E3) return true;
+  if (0x09E6 <= cp && cp <= 0x09F1) return true;
+  if (0x0A01 <= cp && cp <= 0x0A03) return true;
+  if (0x0A05 <= cp && cp <= 0x0A0A) return true;
+  if (0x0A0F <= cp && cp <= 0x0A10) return true;
+  if (0x0A13 <= cp && cp <= 0x0A28) return true;
+  if (0x0A2A <= cp && cp <= 0x0A30) return true;
+  if (0x0A32 <= cp && cp <= 0x0A33) return true;
+  if (0x0A35 <= cp && cp <= 0x0A36) return true;
+  if (0x0A38 <= cp && cp <= 0x0A39) return true;
+  if (cp === 0x0A3C) return true;
+  if (0x0A3E <= cp && cp <= 0x0A42) return true;
+  if (0x0A47 <= cp && cp <= 0x0A48) return true;
+  if (0x0A4B <= cp && cp <= 0x0A4D) return true;
+  if (cp === 0x0A51) return true;
+  if (0x0A59 <= cp && cp <= 0x0A5C) return true;
+  if (cp === 0x0A5E) return true;
+  if (0x0A66 <= cp && cp <= 0x0A75) return true;
+  if (0x0A81 <= cp && cp <= 0x0A83) return true;
+  if (0x0A85 <= cp && cp <= 0x0A8D) return true;
+  if (0x0A8F <= cp && cp <= 0x0A91) return true;
+  if (0x0A93 <= cp && cp <= 0x0AA8) return true;
+  if (0x0AAA <= cp && cp <= 0x0AB0) return true;
+  if (0x0AB2 <= cp && cp <= 0x0AB3) return true;
+  if (0x0AB5 <= cp && cp <= 0x0AB9) return true;
+  if (0x0ABC <= cp && cp <= 0x0AC5) return true;
+  if (0x0AC7 <= cp && cp <= 0x0AC9) return true;
+  if (0x0ACB <= cp && cp <= 0x0ACD) return true;
+  if (cp === 0x0AD0) return true;
+  if (0x0AE0 <= cp && cp <= 0x0AE3) return true;
+  if (0x0AE6 <= cp && cp <= 0x0AEF) return true;
+  if (cp === 0x0AF9) return true;
+  if (0x0B01 <= cp && cp <= 0x0B03) return true;
+  if (0x0B05 <= cp && cp <= 0x0B0C) return true;
+  if (0x0B0F <= cp && cp <= 0x0B10) return true;
+  if (0x0B13 <= cp && cp <= 0x0B28) return true;
+  if (0x0B2A <= cp && cp <= 0x0B30) return true;
+  if (0x0B32 <= cp && cp <= 0x0B33) return true;
+  if (0x0B35 <= cp && cp <= 0x0B39) return true;
+  if (0x0B3C <= cp && cp <= 0x0B44) return true;
+  if (0x0B47 <= cp && cp <= 0x0B48) return true;
+  if (0x0B4B <= cp && cp <= 0x0B4D) return true;
+  if (0x0B56 <= cp && cp <= 0x0B57) return true;
+  if (0x0B5C <= cp && cp <= 0x0B5D) return true;
+  if (0x0B5F <= cp && cp <= 0x0B63) return true;
+  if (0x0B66 <= cp && cp <= 0x0B6F) return true;
+  if (cp === 0x0B71) return true;
+  if (0x0B82 <= cp && cp <= 0x0B83) return true;
+  if (0x0B85 <= cp && cp <= 0x0B8A) return true;
+  if (0x0B8E <= cp && cp <= 0x0B90) return true;
+  if (0x0B92 <= cp && cp <= 0x0B95) return true;
+  if (0x0B99 <= cp && cp <= 0x0B9A) return true;
+  if (cp === 0x0B9C) return true;
+  if (0x0B9E <= cp && cp <= 0x0B9F) return true;
+  if (0x0BA3 <= cp && cp <= 0x0BA4) return true;
+  if (0x0BA8 <= cp && cp <= 0x0BAA) return true;
+  if (0x0BAE <= cp && cp <= 0x0BB9) return true;
+  if (0x0BBE <= cp && cp <= 0x0BC2) return true;
+  if (0x0BC6 <= cp && cp <= 0x0BC8) return true;
+  if (0x0BCA <= cp && cp <= 0x0BCD) return true;
+  if (cp === 0x0BD0) return true;
+  if (cp === 0x0BD7) return true;
+  if (0x0BE6 <= cp && cp <= 0x0BEF) return true;
+  if (0x0C00 <= cp && cp <= 0x0C03) return true;
+  if (0x0C05 <= cp && cp <= 0x0C0C) return true;
+  if (0x0C0E <= cp && cp <= 0x0C10) return true;
+  if (0x0C12 <= cp && cp <= 0x0C28) return true;
+  if (0x0C2A <= cp && cp <= 0x0C39) return true;
+  if (0x0C3D <= cp && cp <= 0x0C44) return true;
+  if (0x0C46 <= cp && cp <= 0x0C48) return true;
+  if (0x0C4A <= cp && cp <= 0x0C4D) return true;
+  if (0x0C55 <= cp && cp <= 0x0C56) return true;
+  if (0x0C58 <= cp && cp <= 0x0C5A) return true;
+  if (0x0C60 <= cp && cp <= 0x0C63) return true;
+  if (0x0C66 <= cp && cp <= 0x0C6F) return true;
+  if (0x0C81 <= cp && cp <= 0x0C83) return true;
+  if (0x0C85 <= cp && cp <= 0x0C8C) return true;
+  if (0x0C8E <= cp && cp <= 0x0C90) return true;
+  if (0x0C92 <= cp && cp <= 0x0CA8) return true;
+  if (0x0CAA <= cp && cp <= 0x0CB3) return true;
+  if (0x0CB5 <= cp && cp <= 0x0CB9) return true;
+  if (0x0CBC <= cp && cp <= 0x0CC4) return true;
+  if (0x0CC6 <= cp && cp <= 0x0CC8) return true;
+  if (0x0CCA <= cp && cp <= 0x0CCD) return true;
+  if (0x0CD5 <= cp && cp <= 0x0CD6) return true;
+  if (cp === 0x0CDE) return true;
+  if (0x0CE0 <= cp && cp <= 0x0CE3) return true;
+  if (0x0CE6 <= cp && cp <= 0x0CEF) return true;
+  if (0x0CF1 <= cp && cp <= 0x0CF2) return true;
+  if (0x0D01 <= cp && cp <= 0x0D03) return true;
+  if (0x0D05 <= cp && cp <= 0x0D0C) return true;
+  if (0x0D0E <= cp && cp <= 0x0D10) return true;
+  if (0x0D12 <= cp && cp <= 0x0D3A) return true;
+  if (0x0D3D <= cp && cp <= 0x0D44) return true;
+  if (0x0D46 <= cp && cp <= 0x0D48) return true;
+  if (0x0D4A <= cp && cp <= 0x0D4E) return true;
+  if (cp === 0x0D57) return true;
+  if (0x0D5F <= cp && cp <= 0x0D63) return true;
+  if (0x0D66 <= cp && cp <= 0x0D6F) return true;
+  if (0x0D7A <= cp && cp <= 0x0D7F) return true;
+  if (0x0D82 <= cp && cp <= 0x0D83) return true;
+  if (0x0D85 <= cp && cp <= 0x0D96) return true;
+  if (0x0D9A <= cp && cp <= 0x0DB1) return true;
+  if (0x0DB3 <= cp && cp <= 0x0DBB) return true;
+  if (cp === 0x0DBD) return true;
+  if (0x0DC0 <= cp && cp <= 0x0DC6) return true;
+  if (cp === 0x0DCA) return true;
+  if (0x0DCF <= cp && cp <= 0x0DD4) return true;
+  if (cp === 0x0DD6) return true;
+  if (0x0DD8 <= cp && cp <= 0x0DDF) return true;
+  if (0x0DE6 <= cp && cp <= 0x0DEF) return true;
+  if (0x0DF2 <= cp && cp <= 0x0DF3) return true;
+  if (0x0E01 <= cp && cp <= 0x0E3A) return true;
+  if (0x0E40 <= cp && cp <= 0x0E4E) return true;
+  if (0x0E50 <= cp && cp <= 0x0E59) return true;
+  if (0x0E81 <= cp && cp <= 0x0E82) return true;
+  if (cp === 0x0E84) return true;
+  if (0x0E87 <= cp && cp <= 0x0E88) return true;
+  if (cp === 0x0E8A) return true;
+  if (cp === 0x0E8D) return true;
+  if (0x0E94 <= cp && cp <= 0x0E97) return true;
+  if (0x0E99 <= cp && cp <= 0x0E9F) return true;
+  if (0x0EA1 <= cp && cp <= 0x0EA3) return true;
+  if (cp === 0x0EA5) return true;
+  if (cp === 0x0EA7) return true;
+  if (0x0EAA <= cp && cp <= 0x0EAB) return true;
+  if (0x0EAD <= cp && cp <= 0x0EB9) return true;
+  if (0x0EBB <= cp && cp <= 0x0EBD) return true;
+  if (0x0EC0 <= cp && cp <= 0x0EC4) return true;
+  if (cp === 0x0EC6) return true;
+  if (0x0EC8 <= cp && cp <= 0x0ECD) return true;
+  if (0x0ED0 <= cp && cp <= 0x0ED9) return true;
+  if (0x0EDC <= cp && cp <= 0x0EDF) return true;
+  if (cp === 0x0F00) return true;
+  if (0x0F18 <= cp && cp <= 0x0F19) return true;
+  if (0x0F20 <= cp && cp <= 0x0F29) return true;
+  if (cp === 0x0F35) return true;
+  if (cp === 0x0F37) return true;
+  if (cp === 0x0F39) return true;
+  if (0x0F3E <= cp && cp <= 0x0F47) return true;
+  if (0x0F49 <= cp && cp <= 0x0F6C) return true;
+  if (0x0F71 <= cp && cp <= 0x0F84) return true;
+  if (0x0F86 <= cp && cp <= 0x0F97) return true;
+  if (0x0F99 <= cp && cp <= 0x0FBC) return true;
+  if (cp === 0x0FC6) return true;
+  if (0x1000 <= cp && cp <= 0x1049) return true;
+  if (0x1050 <= cp && cp <= 0x109D) return true;
+  if (0x10A0 <= cp && cp <= 0x10C5) return true;
+  if (cp === 0x10C7) return true;
+  if (cp === 0x10CD) return true;
+  if (0x10D0 <= cp && cp <= 0x10FA) return true;
+  if (0x10FC <= cp && cp <= 0x1248) return true;
+  if (0x124A <= cp && cp <= 0x124D) return true;
+  if (0x1250 <= cp && cp <= 0x1256) return true;
+  if (cp === 0x1258) return true;
+  if (0x125A <= cp && cp <= 0x125D) return true;
+  if (0x1260 <= cp && cp <= 0x1288) return true;
+  if (0x128A <= cp && cp <= 0x128D) return true;
+  if (0x1290 <= cp && cp <= 0x12B0) return true;
+  if (0x12B2 <= cp && cp <= 0x12B5) return true;
+  if (0x12B8 <= cp && cp <= 0x12BE) return true;
+  if (cp === 0x12C0) return true;
+  if (0x12C2 <= cp && cp <= 0x12C5) return true;
+  if (0x12C8 <= cp && cp <= 0x12D6) return true;
+  if (0x12D8 <= cp && cp <= 0x1310) return true;
+  if (0x1312 <= cp && cp <= 0x1315) return true;
+  if (0x1318 <= cp && cp <= 0x135A) return true;
+  if (0x135D <= cp && cp <= 0x135F) return true;
+  if (0x1369 <= cp && cp <= 0x1371) return true;
+  if (0x1380 <= cp && cp <= 0x138F) return true;
+  if (0x13A0 <= cp && cp <= 0x13F5) return true;
+  if (0x13F8 <= cp && cp <= 0x13FD) return true;
+  if (0x1401 <= cp && cp <= 0x166C) return true;
+  if (0x166F <= cp && cp <= 0x167F) return true;
+  if (0x1681 <= cp && cp <= 0x169A) return true;
+  if (0x16A0 <= cp && cp <= 0x16EA) return true;
+  if (0x16EE <= cp && cp <= 0x16F8) return true;
+  if (0x1700 <= cp && cp <= 0x170C) return true;
+  if (0x170E <= cp && cp <= 0x1714) return true;
+  if (0x1720 <= cp && cp <= 0x1734) return true;
+  if (0x1740 <= cp && cp <= 0x1753) return true;
+  if (0x1760 <= cp && cp <= 0x176C) return true;
+  if (0x176E <= cp && cp <= 0x1770) return true;
+  if (0x1772 <= cp && cp <= 0x1773) return true;
+  if (0x1780 <= cp && cp <= 0x17D3) return true;
+  if (cp === 0x17D7) return true;
+  if (0x17DC <= cp && cp <= 0x17DD) return true;
+  if (0x17E0 <= cp && cp <= 0x17E9) return true;
+  if (0x180B <= cp && cp <= 0x180D) return true;
+  if (0x1810 <= cp && cp <= 0x1819) return true;
+  if (0x1820 <= cp && cp <= 0x1877) return true;
+  if (0x1880 <= cp && cp <= 0x18AA) return true;
+  if (0x18B0 <= cp && cp <= 0x18F5) return true;
+  if (0x1900 <= cp && cp <= 0x191E) return true;
+  if (0x1920 <= cp && cp <= 0x192B) return true;
+  if (0x1930 <= cp && cp <= 0x193B) return true;
+  if (0x1946 <= cp && cp <= 0x196D) return true;
+  if (0x1970 <= cp && cp <= 0x1974) return true;
+  if (0x1980 <= cp && cp <= 0x19AB) return true;
+  if (0x19B0 <= cp && cp <= 0x19C9) return true;
+  if (0x19D0 <= cp && cp <= 0x19DA) return true;
+  if (0x1A00 <= cp && cp <= 0x1A1B) return true;
+  if (0x1A20 <= cp && cp <= 0x1A5E) return true;
+  if (0x1A60 <= cp && cp <= 0x1A7C) return true;
+  if (0x1A7F <= cp && cp <= 0x1A89) return true;
+  if (0x1A90 <= cp && cp <= 0x1A99) return true;
+  if (cp === 0x1AA7) return true;
+  if (0x1AB0 <= cp && cp <= 0x1ABD) return true;
+  if (0x1B00 <= cp && cp <= 0x1B4B) return true;
+  if (0x1B50 <= cp && cp <= 0x1B59) return true;
+  if (0x1B6B <= cp && cp <= 0x1B73) return true;
+  if (0x1B80 <= cp && cp <= 0x1BF3) return true;
+  if (0x1C00 <= cp && cp <= 0x1C37) return true;
+  if (0x1C40 <= cp && cp <= 0x1C49) return true;
+  if (0x1C4D <= cp && cp <= 0x1C7D) return true;
+  if (0x1CD0 <= cp && cp <= 0x1CD2) return true;
+  if (0x1CD4 <= cp && cp <= 0x1CF6) return true;
+  if (0x1CF8 <= cp && cp <= 0x1CF9) return true;
+  if (0x1D00 <= cp && cp <= 0x1DF5) return true;
+  if (0x1DFC <= cp && cp <= 0x1F15) return true;
+  if (0x1F18 <= cp && cp <= 0x1F1D) return true;
+  if (0x1F20 <= cp && cp <= 0x1F45) return true;
+  if (0x1F48 <= cp && cp <= 0x1F4D) return true;
+  if (0x1F50 <= cp && cp <= 0x1F57) return true;
+  if (cp === 0x1F59) return true;
+  if (cp === 0x1F5B) return true;
+  if (cp === 0x1F5D) return true;
+  if (0x1F5F <= cp && cp <= 0x1F7D) return true;
+  if (0x1F80 <= cp && cp <= 0x1FB4) return true;
+  if (0x1FB6 <= cp && cp <= 0x1FBC) return true;
+  if (cp === 0x1FBE) return true;
+  if (0x1FC2 <= cp && cp <= 0x1FC4) return true;
+  if (0x1FC6 <= cp && cp <= 0x1FCC) return true;
+  if (0x1FD0 <= cp && cp <= 0x1FD3) return true;
+  if (0x1FD6 <= cp && cp <= 0x1FDB) return true;
+  if (0x1FE0 <= cp && cp <= 0x1FEC) return true;
+  if (0x1FF2 <= cp && cp <= 0x1FF4) return true;
+  if (0x1FF6 <= cp && cp <= 0x1FFC) return true;
+  if (0x203F <= cp && cp <= 0x2040) return true;
+  if (cp === 0x2054) return true;
+  if (cp === 0x2071) return true;
+  if (cp === 0x207F) return true;
+  if (0x2090 <= cp && cp <= 0x209C) return true;
+  if (0x20D0 <= cp && cp <= 0x20DC) return true;
+  if (cp === 0x20E1) return true;
+  if (0x20E5 <= cp && cp <= 0x20F0) return true;
+  if (cp === 0x2102) return true;
+  if (cp === 0x2107) return true;
+  if (0x210A <= cp && cp <= 0x2113) return true;
+  if (cp === 0x2115) return true;
+  if (0x2118 <= cp && cp <= 0x211D) return true;
+  if (cp === 0x2124) return true;
+  if (cp === 0x2126) return true;
+  if (cp === 0x2128) return true;
+  if (0x212A <= cp && cp <= 0x2139) return true;
+  if (0x213C <= cp && cp <= 0x213F) return true;
+  if (0x2145 <= cp && cp <= 0x2149) return true;
+  if (cp === 0x214E) return true;
+  if (0x2160 <= cp && cp <= 0x2188) return true;
+  if (0x2C00 <= cp && cp <= 0x2C2E) return true;
+  if (0x2C30 <= cp && cp <= 0x2C5E) return true;
+  if (0x2C60 <= cp && cp <= 0x2CE4) return true;
+  if (0x2CEB <= cp && cp <= 0x2CF3) return true;
+  if (0x2D00 <= cp && cp <= 0x2D25) return true;
+  if (cp === 0x2D27) return true;
+  if (cp === 0x2D2D) return true;
+  if (0x2D30 <= cp && cp <= 0x2D67) return true;
+  if (cp === 0x2D6F) return true;
+  if (0x2D7F <= cp && cp <= 0x2D96) return true;
+  if (0x2DA0 <= cp && cp <= 0x2DA6) return true;
+  if (0x2DA8 <= cp && cp <= 0x2DAE) return true;
+  if (0x2DB0 <= cp && cp <= 0x2DB6) return true;
+  if (0x2DB8 <= cp && cp <= 0x2DBE) return true;
+  if (0x2DC0 <= cp && cp <= 0x2DC6) return true;
+  if (0x2DC8 <= cp && cp <= 0x2DCE) return true;
+  if (0x2DD0 <= cp && cp <= 0x2DD6) return true;
+  if (0x2DD8 <= cp && cp <= 0x2DDE) return true;
+  if (0x2DE0 <= cp && cp <= 0x2DFF) return true;
+  if (0x3005 <= cp && cp <= 0x3007) return true;
+  if (0x3021 <= cp && cp <= 0x302F) return true;
+  if (0x3031 <= cp && cp <= 0x3035) return true;
+  if (0x3038 <= cp && cp <= 0x303C) return true;
+  if (0x3041 <= cp && cp <= 0x3096) return true;
+  if (0x3099 <= cp && cp <= 0x309F) return true;
+  if (0x30A1 <= cp && cp <= 0x30FA) return true;
+  if (0x30FC <= cp && cp <= 0x30FF) return true;
+  if (0x3105 <= cp && cp <= 0x312D) return true;
+  if (0x3131 <= cp && cp <= 0x318E) return true;
+  if (0x31A0 <= cp && cp <= 0x31BA) return true;
+  if (0x31F0 <= cp && cp <= 0x31FF) return true;
+  if (0x3400 <= cp && cp <= 0x4DB5) return true;
+  if (0x4E00 <= cp && cp <= 0x9FD5) return true;
+  if (0xA000 <= cp && cp <= 0xA48C) return true;
+  if (0xA4D0 <= cp && cp <= 0xA4FD) return true;
+  if (0xA500 <= cp && cp <= 0xA60C) return true;
+  if (0xA610 <= cp && cp <= 0xA62B) return true;
+  if (0xA640 <= cp && cp <= 0xA66F) return true;
+  if (0xA674 <= cp && cp <= 0xA67D) return true;
+  if (0xA67F <= cp && cp <= 0xA6F1) return true;
+  if (0xA717 <= cp && cp <= 0xA71F) return true;
+  if (0xA722 <= cp && cp <= 0xA788) return true;
+  if (0xA78B <= cp && cp <= 0xA7AD) return true;
+  if (0xA7B0 <= cp && cp <= 0xA7B7) return true;
+  if (0xA7F7 <= cp && cp <= 0xA827) return true;
+  if (0xA840 <= cp && cp <= 0xA873) return true;
+  if (0xA880 <= cp && cp <= 0xA8C4) return true;
+  if (0xA8D0 <= cp && cp <= 0xA8D9) return true;
+  if (0xA8E0 <= cp && cp <= 0xA8F7) return true;
+  if (cp === 0xA8FB) return true;
+  if (cp === 0xA8FD) return true;
+  if (0xA900 <= cp && cp <= 0xA92D) return true;
+  if (0xA930 <= cp && cp <= 0xA953) return true;
+  if (0xA960 <= cp && cp <= 0xA97C) return true;
+  if (0xA980 <= cp && cp <= 0xA9C0) return true;
+  if (0xA9CF <= cp && cp <= 0xA9D9) return true;
+  if (0xA9E0 <= cp && cp <= 0xA9FE) return true;
+  if (0xAA00 <= cp && cp <= 0xAA36) return true;
+  if (0xAA40 <= cp && cp <= 0xAA4D) return true;
+  if (0xAA50 <= cp && cp <= 0xAA59) return true;
+  if (0xAA60 <= cp && cp <= 0xAA76) return true;
+  if (0xAA7A <= cp && cp <= 0xAAC2) return true;
+  if (0xAADB <= cp && cp <= 0xAADD) return true;
+  if (0xAAE0 <= cp && cp <= 0xAAEF) return true;
+  if (0xAAF2 <= cp && cp <= 0xAAF6) return true;
+  if (0xAB01 <= cp && cp <= 0xAB06) return true;
+  if (0xAB09 <= cp && cp <= 0xAB0E) return true;
+  if (0xAB11 <= cp && cp <= 0xAB16) return true;
+  if (0xAB20 <= cp && cp <= 0xAB26) return true;
+  if (0xAB28 <= cp && cp <= 0xAB2E) return true;
+  if (0xAB30 <= cp && cp <= 0xAB5A) return true;
+  if (0xAB5C <= cp && cp <= 0xAB65) return true;
+  if (0xAB70 <= cp && cp <= 0xABEA) return true;
+  if (0xABEC <= cp && cp <= 0xABED) return true;
+  if (0xABF0 <= cp && cp <= 0xABF9) return true;
+  if (0xAC00 <= cp && cp <= 0xD7A3) return true;
+  if (0xD7B0 <= cp && cp <= 0xD7C6) return true;
+  if (0xD7CB <= cp && cp <= 0xD7FB) return true;
+  if (0xF900 <= cp && cp <= 0xFA6D) return true;
+  if (0xFA70 <= cp && cp <= 0xFAD9) return true;
+  if (0xFB00 <= cp && cp <= 0xFB06) return true;
+  if (0xFB13 <= cp && cp <= 0xFB17) return true;
+  if (0xFB1D <= cp && cp <= 0xFB28) return true;
+  if (0xFB2A <= cp && cp <= 0xFB36) return true;
+  if (0xFB38 <= cp && cp <= 0xFB3C) return true;
+  if (cp === 0xFB3E) return true;
+  if (0xFB40 <= cp && cp <= 0xFB41) return true;
+  if (0xFB43 <= cp && cp <= 0xFB44) return true;
+  if (0xFB46 <= cp && cp <= 0xFBB1) return true;
+  if (0xFBD3 <= cp && cp <= 0xFD3D) return true;
+  if (0xFD50 <= cp && cp <= 0xFD8F) return true;
+  if (0xFD92 <= cp && cp <= 0xFDC7) return true;
+  if (0xFDF0 <= cp && cp <= 0xFDFB) return true;
+  if (0xFE00 <= cp && cp <= 0xFE0F) return true;
+  if (0xFE20 <= cp && cp <= 0xFE2F) return true;
+  if (0xFE33 <= cp && cp <= 0xFE34) return true;
+  if (0xFE4D <= cp && cp <= 0xFE4F) return true;
+  if (0xFE70 <= cp && cp <= 0xFE74) return true;
+  if (0xFE76 <= cp && cp <= 0xFEFC) return true;
+  if (0xFF10 <= cp && cp <= 0xFF19) return true;
+  if (0xFF21 <= cp && cp <= 0xFF3A) return true;
+  if (cp === 0xFF3F) return true;
+  if (0xFF41 <= cp && cp <= 0xFF5A) return true;
+  if (0xFF66 <= cp && cp <= 0xFFBE) return true;
+  if (0xFFC2 <= cp && cp <= 0xFFC7) return true;
+  if (0xFFCA <= cp && cp <= 0xFFCF) return true;
+  if (0xFFD2 <= cp && cp <= 0xFFD7) return true;
+  if (0xFFDA <= cp && cp <= 0xFFDC) return true;
+  if (0x10000 <= cp && cp <= 0x1000B) return true;
+  if (0x1000D <= cp && cp <= 0x10026) return true;
+  if (0x10028 <= cp && cp <= 0x1003A) return true;
+  if (0x1003C <= cp && cp <= 0x1003D) return true;
+  if (0x1003F <= cp && cp <= 0x1004D) return true;
+  if (0x10050 <= cp && cp <= 0x1005D) return true;
+  if (0x10080 <= cp && cp <= 0x100FA) return true;
+  if (0x10140 <= cp && cp <= 0x10174) return true;
+  if (cp === 0x101FD) return true;
+  if (0x10280 <= cp && cp <= 0x1029C) return true;
+  if (0x102A0 <= cp && cp <= 0x102D0) return true;
+  if (cp === 0x102E0) return true;
+  if (0x10300 <= cp && cp <= 0x1031F) return true;
+  if (0x10330 <= cp && cp <= 0x1034A) return true;
+  if (0x10350 <= cp && cp <= 0x1037A) return true;
+  if (0x10380 <= cp && cp <= 0x1039D) return true;
+  if (0x103A0 <= cp && cp <= 0x103C3) return true;
+  if (0x103C8 <= cp && cp <= 0x103CF) return true;
+  if (0x103D1 <= cp && cp <= 0x103D5) return true;
+  if (0x10400 <= cp && cp <= 0x1049D) return true;
+  if (0x104A0 <= cp && cp <= 0x104A9) return true;
+  if (0x10500 <= cp && cp <= 0x10527) return true;
+  if (0x10530 <= cp && cp <= 0x10563) return true;
+  if (0x10600 <= cp && cp <= 0x10736) return true;
+  if (0x10740 <= cp && cp <= 0x10755) return true;
+  if (0x10760 <= cp && cp <= 0x10767) return true;
+  if (0x10800 <= cp && cp <= 0x10805) return true;
+  if (cp === 0x10808) return true;
+  if (0x1080A <= cp && cp <= 0x10835) return true;
+  if (0x10837 <= cp && cp <= 0x10838) return true;
+  if (cp === 0x1083C) return true;
+  if (0x1083F <= cp && cp <= 0x10855) return true;
+  if (0x10860 <= cp && cp <= 0x10876) return true;
+  if (0x10880 <= cp && cp <= 0x1089E) return true;
+  if (0x108E0 <= cp && cp <= 0x108F2) return true;
+  if (0x108F4 <= cp && cp <= 0x108F5) return true;
+  if (0x10900 <= cp && cp <= 0x10915) return true;
+  if (0x10920 <= cp && cp <= 0x10939) return true;
+  if (0x10980 <= cp && cp <= 0x109B7) return true;
+  if (0x109BE <= cp && cp <= 0x109BF) return true;
+  if (0x10A00 <= cp && cp <= 0x10A03) return true;
+  if (0x10A05 <= cp && cp <= 0x10A06) return true;
+  if (0x10A0C <= cp && cp <= 0x10A13) return true;
+  if (0x10A15 <= cp && cp <= 0x10A17) return true;
+  if (0x10A19 <= cp && cp <= 0x10A33) return true;
+  if (0x10A38 <= cp && cp <= 0x10A3A) return true;
+  if (cp === 0x10A3F) return true;
+  if (0x10A60 <= cp && cp <= 0x10A7C) return true;
+  if (0x10A80 <= cp && cp <= 0x10A9C) return true;
+  if (0x10AC0 <= cp && cp <= 0x10AC7) return true;
+  if (0x10AC9 <= cp && cp <= 0x10AE6) return true;
+  if (0x10B00 <= cp && cp <= 0x10B35) return true;
+  if (0x10B40 <= cp && cp <= 0x10B55) return true;
+  if (0x10B60 <= cp && cp <= 0x10B72) return true;
+  if (0x10B80 <= cp && cp <= 0x10B91) return true;
+  if (0x10C00 <= cp && cp <= 0x10C48) return true;
+  if (0x10C80 <= cp && cp <= 0x10CB2) return true;
+  if (0x10CC0 <= cp && cp <= 0x10CF2) return true;
+  if (0x11000 <= cp && cp <= 0x11046) return true;
+  if (0x11066 <= cp && cp <= 0x1106F) return true;
+  if (0x1107F <= cp && cp <= 0x110BA) return true;
+  if (0x110D0 <= cp && cp <= 0x110E8) return true;
+  if (0x110F0 <= cp && cp <= 0x110F9) return true;
+  if (0x11100 <= cp && cp <= 0x11134) return true;
+  if (0x11136 <= cp && cp <= 0x1113F) return true;
+  if (0x11150 <= cp && cp <= 0x11173) return true;
+  if (cp === 0x11176) return true;
+  if (0x11180 <= cp && cp <= 0x111C4) return true;
+  if (0x111CA <= cp && cp <= 0x111CC) return true;
+  if (0x111D0 <= cp && cp <= 0x111DA) return true;
+  if (cp === 0x111DC) return true;
+  if (0x11200 <= cp && cp <= 0x11211) return true;
+  if (0x11213 <= cp && cp <= 0x11237) return true;
+  if (0x11280 <= cp && cp <= 0x11286) return true;
+  if (cp === 0x11288) return true;
+  if (0x1128A <= cp && cp <= 0x1128D) return true;
+  if (0x1128F <= cp && cp <= 0x1129D) return true;
+  if (0x1129F <= cp && cp <= 0x112A8) return true;
+  if (0x112B0 <= cp && cp <= 0x112EA) return true;
+  if (0x112F0 <= cp && cp <= 0x112F9) return true;
+  if (0x11300 <= cp && cp <= 0x11303) return true;
+  if (0x11305 <= cp && cp <= 0x1130C) return true;
+  if (0x1130F <= cp && cp <= 0x11310) return true;
+  if (0x11313 <= cp && cp <= 0x11328) return true;
+  if (0x1132A <= cp && cp <= 0x11330) return true;
+  if (0x11332 <= cp && cp <= 0x11333) return true;
+  if (0x11335 <= cp && cp <= 0x11339) return true;
+  if (0x1133C <= cp && cp <= 0x11344) return true;
+  if (0x11347 <= cp && cp <= 0x11348) return true;
+  if (0x1134B <= cp && cp <= 0x1134D) return true;
+  if (cp === 0x11350) return true;
+  if (cp === 0x11357) return true;
+  if (0x1135D <= cp && cp <= 0x11363) return true;
+  if (0x11366 <= cp && cp <= 0x1136C) return true;
+  if (0x11370 <= cp && cp <= 0x11374) return true;
+  if (0x11480 <= cp && cp <= 0x114C5) return true;
+  if (cp === 0x114C7) return true;
+  if (0x114D0 <= cp && cp <= 0x114D9) return true;
+  if (0x11580 <= cp && cp <= 0x115B5) return true;
+  if (0x115B8 <= cp && cp <= 0x115C0) return true;
+  if (0x115D8 <= cp && cp <= 0x115DD) return true;
+  if (0x11600 <= cp && cp <= 0x11640) return true;
+  if (cp === 0x11644) return true;
+  if (0x11650 <= cp && cp <= 0x11659) return true;
+  if (0x11680 <= cp && cp <= 0x116B7) return true;
+  if (0x116C0 <= cp && cp <= 0x116C9) return true;
+  if (0x11700 <= cp && cp <= 0x11719) return true;
+  if (0x1171D <= cp && cp <= 0x1172B) return true;
+  if (0x11730 <= cp && cp <= 0x11739) return true;
+  if (0x118A0 <= cp && cp <= 0x118E9) return true;
+  if (cp === 0x118FF) return true;
+  if (0x11AC0 <= cp && cp <= 0x11AF8) return true;
+  if (0x12000 <= cp && cp <= 0x12399) return true;
+  if (0x12400 <= cp && cp <= 0x1246E) return true;
+  if (0x12480 <= cp && cp <= 0x12543) return true;
+  if (0x13000 <= cp && cp <= 0x1342E) return true;
+  if (0x14400 <= cp && cp <= 0x14646) return true;
+  if (0x16800 <= cp && cp <= 0x16A38) return true;
+  if (0x16A40 <= cp && cp <= 0x16A5E) return true;
+  if (0x16A60 <= cp && cp <= 0x16A69) return true;
+  if (0x16AD0 <= cp && cp <= 0x16AED) return true;
+  if (0x16AF0 <= cp && cp <= 0x16AF4) return true;
+  if (0x16B00 <= cp && cp <= 0x16B36) return true;
+  if (0x16B40 <= cp && cp <= 0x16B43) return true;
+  if (0x16B50 <= cp && cp <= 0x16B59) return true;
+  if (0x16B63 <= cp && cp <= 0x16B77) return true;
+  if (0x16B7D <= cp && cp <= 0x16B8F) return true;
+  if (0x16F00 <= cp && cp <= 0x16F44) return true;
+  if (0x16F50 <= cp && cp <= 0x16F7E) return true;
+  if (0x16F8F <= cp && cp <= 0x16F9F) return true;
+  if (0x1B000 <= cp && cp <= 0x1B001) return true;
+  if (0x1BC00 <= cp && cp <= 0x1BC6A) return true;
+  if (0x1BC70 <= cp && cp <= 0x1BC7C) return true;
+  if (0x1BC80 <= cp && cp <= 0x1BC88) return true;
+  if (0x1BC90 <= cp && cp <= 0x1BC99) return true;
+  if (0x1BC9D <= cp && cp <= 0x1BC9E) return true;
+  if (0x1D165 <= cp && cp <= 0x1D169) return true;
+  if (0x1D16D <= cp && cp <= 0x1D172) return true;
+  if (0x1D17B <= cp && cp <= 0x1D182) return true;
+  if (0x1D185 <= cp && cp <= 0x1D18B) return true;
+  if (0x1D1AA <= cp && cp <= 0x1D1AD) return true;
+  if (0x1D242 <= cp && cp <= 0x1D244) return true;
+  if (0x1D400 <= cp && cp <= 0x1D454) return true;
+  if (0x1D456 <= cp && cp <= 0x1D49C) return true;
+  if (0x1D49E <= cp && cp <= 0x1D49F) return true;
+  if (cp === 0x1D4A2) return true;
+  if (0x1D4A5 <= cp && cp <= 0x1D4A6) return true;
+  if (0x1D4A9 <= cp && cp <= 0x1D4AC) return true;
+  if (0x1D4AE <= cp && cp <= 0x1D4B9) return true;
+  if (cp === 0x1D4BB) return true;
+  if (0x1D4BD <= cp && cp <= 0x1D4C3) return true;
+  if (0x1D4C5 <= cp && cp <= 0x1D505) return true;
+  if (0x1D507 <= cp && cp <= 0x1D50A) return true;
+  if (0x1D50D <= cp && cp <= 0x1D514) return true;
+  if (0x1D516 <= cp && cp <= 0x1D51C) return true;
+  if (0x1D51E <= cp && cp <= 0x1D539) return true;
+  if (0x1D53B <= cp && cp <= 0x1D53E) return true;
+  if (0x1D540 <= cp && cp <= 0x1D544) return true;
+  if (cp === 0x1D546) return true;
+  if (0x1D54A <= cp && cp <= 0x1D550) return true;
+  if (0x1D552 <= cp && cp <= 0x1D6A5) return true;
+  if (0x1D6A8 <= cp && cp <= 0x1D6C0) return true;
+  if (0x1D6C2 <= cp && cp <= 0x1D6DA) return true;
+  if (0x1D6DC <= cp && cp <= 0x1D6FA) return true;
+  if (0x1D6FC <= cp && cp <= 0x1D714) return true;
+  if (0x1D716 <= cp && cp <= 0x1D734) return true;
+  if (0x1D736 <= cp && cp <= 0x1D74E) return true;
+  if (0x1D750 <= cp && cp <= 0x1D76E) return true;
+  if (0x1D770 <= cp && cp <= 0x1D788) return true;
+  if (0x1D78A <= cp && cp <= 0x1D7A8) return true;
+  if (0x1D7AA <= cp && cp <= 0x1D7C2) return true;
+  if (0x1D7C4 <= cp && cp <= 0x1D7CB) return true;
+  if (0x1D7CE <= cp && cp <= 0x1D7FF) return true;
+  if (0x1DA00 <= cp && cp <= 0x1DA36) return true;
+  if (0x1DA3B <= cp && cp <= 0x1DA6C) return true;
+  if (cp === 0x1DA75) return true;
+  if (cp === 0x1DA84) return true;
+  if (0x1DA9B <= cp && cp <= 0x1DA9F) return true;
+  if (0x1DAA1 <= cp && cp <= 0x1DAAF) return true;
+  if (0x1E800 <= cp && cp <= 0x1E8C4) return true;
+  if (0x1E8D0 <= cp && cp <= 0x1E8D6) return true;
+  if (0x1EE00 <= cp && cp <= 0x1EE03) return true;
+  if (0x1EE05 <= cp && cp <= 0x1EE1F) return true;
+  if (0x1EE21 <= cp && cp <= 0x1EE22) return true;
+  if (cp === 0x1EE24) return true;
+  if (cp === 0x1EE27) return true;
+  if (0x1EE29 <= cp && cp <= 0x1EE32) return true;
+  if (0x1EE34 <= cp && cp <= 0x1EE37) return true;
+  if (cp === 0x1EE39) return true;
+  if (cp === 0x1EE3B) return true;
+  if (cp === 0x1EE42) return true;
+  if (cp === 0x1EE47) return true;
+  if (cp === 0x1EE49) return true;
+  if (cp === 0x1EE4B) return true;
+  if (0x1EE4D <= cp && cp <= 0x1EE4F) return true;
+  if (0x1EE51 <= cp && cp <= 0x1EE52) return true;
+  if (cp === 0x1EE54) return true;
+  if (cp === 0x1EE57) return true;
+  if (cp === 0x1EE59) return true;
+  if (cp === 0x1EE5B) return true;
+  if (cp === 0x1EE5D) return true;
+  if (cp === 0x1EE5F) return true;
+  if (0x1EE61 <= cp && cp <= 0x1EE62) return true;
+  if (cp === 0x1EE64) return true;
+  if (0x1EE67 <= cp && cp <= 0x1EE6A) return true;
+  if (0x1EE6C <= cp && cp <= 0x1EE72) return true;
+  if (0x1EE74 <= cp && cp <= 0x1EE77) return true;
+  if (0x1EE79 <= cp && cp <= 0x1EE7C) return true;
+  if (cp === 0x1EE7E) return true;
+  if (0x1EE80 <= cp && cp <= 0x1EE89) return true;
+  if (0x1EE8B <= cp && cp <= 0x1EE9B) return true;
+  if (0x1EEA1 <= cp && cp <= 0x1EEA3) return true;
+  if (0x1EEA5 <= cp && cp <= 0x1EEA9) return true;
+  if (0x1EEAB <= cp && cp <= 0x1EEBB) return true;
+  if (0x20000 <= cp && cp <= 0x2A6D6) return true;
+  if (0x2A700 <= cp && cp <= 0x2B734) return true;
+  if (0x2B740 <= cp && cp <= 0x2B81D) return true;
+  if (0x2B820 <= cp && cp <= 0x2CEA1) return true;
+  if (0x2F800 <= cp && cp <= 0x2FA1D) return true;
+  if (0xE0100 <= cp && cp <= 0xE01EF) return true;
+  return false;
+}
+
+/**
+ * @ngdoc module
+ * @name ngParseExt
+ * @packageName angular-parse-ext
+ * @description
+ *
+ * # ngParseExt
+ *
+ * The `ngParseExt` module provides functionality to allow Unicode characters in
+ * identifiers inside Angular expressions.
+ *
+ *
+ * <div doc-module-components="ngParseExt"></div>
+ *
+ * This module allows the usage of any identifier that follows ES6 identifier naming convention
+ * to be used as an identifier in an Angular expression. ES6 delegates some of the identifier
+ * rules definition to Unicode, this module uses ES6 and Unicode 8.0 identifiers convention.
+ *
+ */
+
+/* global angularParseExtModule: true,
+  IDS_Y,
+  IDC_Y
+*/
+
+function isValidIdentifierStart(ch, cp) {
+  return ch === '$' ||
+         ch === '_' ||
+         IDS_Y(cp);
+}
+
+function isValidIdentifierContinue(ch, cp) {
+  return ch === '$' ||
+         ch === '_' ||
+         cp === 0x200C || // <ZWNJ>
+         cp === 0x200D || // <ZWJ>
+         IDC_Y(cp);
+}
+
+angular.module('ngParseExt', [])
+  .config(['$parseProvider', function($parseProvider) {
+    $parseProvider.setIdentifierFns(isValidIdentifierStart, isValidIdentifierContinue);
+  }]);
+
+
+})(window, window.angular);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-parse-ext.min.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-parse-ext.min.js b/rocketmq-console/src/main/resources/static/vendor/angular/angular-parse-ext.min.js
new file mode 100644
index 0000000..2947742
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-parse-ext.min.js
@@ -0,0 +1,49 @@
+/*
+ AngularJS v1.5.6
+ (c) 2010-2016 Google, Inc. http://angularjs.org
+ License: MIT
+*/
+(function(f,c){'use strict';function d(b,a){return"$"===b||"_"===b||(65<=a&&90>=a||97<=a&&122>=a||170===a||181===a||186===a||192<=a&&214>=a||216<=a&&246>=a||248<=a&&705>=a||710<=a&&721>=a||736<=a&&740>=a||748===a||750===a||880<=a&&884>=a||886<=a&&887>=a||890<=a&&893>=a||895===a||902===a||904<=a&&906>=a||908===a||910<=a&&929>=a||931<=a&&1013>=a||1015<=a&&1153>=a||1162<=a&&1327>=a||1329<=a&&1366>=a||1369===a||1377<=a&&1415>=a||1488<=a&&1514>=a||1520<=a&&1522>=a||1568<=a&&1610>=a||1646<=a&&1647>=a||
+1649<=a&&1747>=a||1749===a||1765<=a&&1766>=a||1774<=a&&1775>=a||1786<=a&&1788>=a||1791===a||1808===a||1810<=a&&1839>=a||1869<=a&&1957>=a||1969===a||1994<=a&&2026>=a||2036<=a&&2037>=a||2042===a||2048<=a&&2069>=a||2074===a||2084===a||2088===a||2112<=a&&2136>=a||2208<=a&&2228>=a||2308<=a&&2361>=a||2365===a||2384===a||2392<=a&&2401>=a||2417<=a&&2432>=a||2437<=a&&2444>=a||2447<=a&&2448>=a||2451<=a&&2472>=a||2474<=a&&2480>=a||2482===a||2486<=a&&2489>=a||2493===a||2510===a||2524<=a&&2525>=a||2527<=a&&2529>=
+a||2544<=a&&2545>=a||2565<=a&&2570>=a||2575<=a&&2576>=a||2579<=a&&2600>=a||2602<=a&&2608>=a||2610<=a&&2611>=a||2613<=a&&2614>=a||2616<=a&&2617>=a||2649<=a&&2652>=a||2654===a||2674<=a&&2676>=a||2693<=a&&2701>=a||2703<=a&&2705>=a||2707<=a&&2728>=a||2730<=a&&2736>=a||2738<=a&&2739>=a||2741<=a&&2745>=a||2749===a||2768===a||2784<=a&&2785>=a||2809===a||2821<=a&&2828>=a||2831<=a&&2832>=a||2835<=a&&2856>=a||2858<=a&&2864>=a||2866<=a&&2867>=a||2869<=a&&2873>=a||2877===a||2908<=a&&2909>=a||2911<=a&&2913>=a||
+2929===a||2947===a||2949<=a&&2954>=a||2958<=a&&2960>=a||2962<=a&&2965>=a||2969<=a&&2970>=a||2972===a||2974<=a&&2975>=a||2979<=a&&2980>=a||2984<=a&&2986>=a||2990<=a&&3001>=a||3024===a||3077<=a&&3084>=a||3086<=a&&3088>=a||3090<=a&&3112>=a||3114<=a&&3129>=a||3133===a||3160<=a&&3162>=a||3168<=a&&3169>=a||3205<=a&&3212>=a||3214<=a&&3216>=a||3218<=a&&3240>=a||3242<=a&&3251>=a||3253<=a&&3257>=a||3261===a||3294===a||3296<=a&&3297>=a||3313<=a&&3314>=a||3333<=a&&3340>=a||3342<=a&&3344>=a||3346<=a&&3386>=a||
+3389===a||3406===a||3423<=a&&3425>=a||3450<=a&&3455>=a||3461<=a&&3478>=a||3482<=a&&3505>=a||3507<=a&&3515>=a||3517===a||3520<=a&&3526>=a||3585<=a&&3632>=a||3634<=a&&3635>=a||3648<=a&&3654>=a||3713<=a&&3714>=a||3716===a||3719<=a&&3720>=a||3722===a||3725===a||3732<=a&&3735>=a||3737<=a&&3743>=a||3745<=a&&3747>=a||3749===a||3751===a||3754<=a&&3755>=a||3757<=a&&3760>=a||3762<=a&&3763>=a||3773===a||3776<=a&&3780>=a||3782===a||3804<=a&&3807>=a||3840===a||3904<=a&&3911>=a||3913<=a&&3948>=a||3976<=a&&3980>=
+a||4096<=a&&4138>=a||4159===a||4176<=a&&4181>=a||4186<=a&&4189>=a||4193===a||4197<=a&&4198>=a||4206<=a&&4208>=a||4213<=a&&4225>=a||4238===a||4256<=a&&4293>=a||4295===a||4301===a||4304<=a&&4346>=a||4348<=a&&4680>=a||4682<=a&&4685>=a||4688<=a&&4694>=a||4696===a||4698<=a&&4701>=a||4704<=a&&4744>=a||4746<=a&&4749>=a||4752<=a&&4784>=a||4786<=a&&4789>=a||4792<=a&&4798>=a||4800===a||4802<=a&&4805>=a||4808<=a&&4822>=a||4824<=a&&4880>=a||4882<=a&&4885>=a||4888<=a&&4954>=a||4992<=a&&5007>=a||5024<=a&&5109>=
+a||5112<=a&&5117>=a||5121<=a&&5740>=a||5743<=a&&5759>=a||5761<=a&&5786>=a||5792<=a&&5866>=a||5870<=a&&5880>=a||5888<=a&&5900>=a||5902<=a&&5905>=a||5920<=a&&5937>=a||5952<=a&&5969>=a||5984<=a&&5996>=a||5998<=a&&6E3>=a||6016<=a&&6067>=a||6103===a||6108===a||6176<=a&&6263>=a||6272<=a&&6312>=a||6314===a||6320<=a&&6389>=a||6400<=a&&6430>=a||6480<=a&&6509>=a||6512<=a&&6516>=a||6528<=a&&6571>=a||6576<=a&&6601>=a||6656<=a&&6678>=a||6688<=a&&6740>=a||6823===a||6917<=a&&6963>=a||6981<=a&&6987>=a||7043<=a&&
+7072>=a||7086<=a&&7087>=a||7098<=a&&7141>=a||7168<=a&&7203>=a||7245<=a&&7247>=a||7258<=a&&7293>=a||7401<=a&&7404>=a||7406<=a&&7409>=a||7413<=a&&7414>=a||7424<=a&&7615>=a||7680<=a&&7957>=a||7960<=a&&7965>=a||7968<=a&&8005>=a||8008<=a&&8013>=a||8016<=a&&8023>=a||8025===a||8027===a||8029===a||8031<=a&&8061>=a||8064<=a&&8116>=a||8118<=a&&8124>=a||8126===a||8130<=a&&8132>=a||8134<=a&&8140>=a||8144<=a&&8147>=a||8150<=a&&8155>=a||8160<=a&&8172>=a||8178<=a&&8180>=a||8182<=a&&8188>=a||8305===a||8319===a||
+8336<=a&&8348>=a||8450===a||8455===a||8458<=a&&8467>=a||8469===a||8472<=a&&8477>=a||8484===a||8486===a||8488===a||8490<=a&&8505>=a||8508<=a&&8511>=a||8517<=a&&8521>=a||8526===a||8544<=a&&8584>=a||11264<=a&&11310>=a||11312<=a&&11358>=a||11360<=a&&11492>=a||11499<=a&&11502>=a||11506<=a&&11507>=a||11520<=a&&11557>=a||11559===a||11565===a||11568<=a&&11623>=a||11631===a||11648<=a&&11670>=a||11680<=a&&11686>=a||11688<=a&&11694>=a||11696<=a&&11702>=a||11704<=a&&11710>=a||11712<=a&&11718>=a||11720<=a&&11726>=
+a||11728<=a&&11734>=a||11736<=a&&11742>=a||12293<=a&&12295>=a||12321<=a&&12329>=a||12337<=a&&12341>=a||12344<=a&&12348>=a||12353<=a&&12438>=a||12443<=a&&12447>=a||12449<=a&&12538>=a||12540<=a&&12543>=a||12549<=a&&12589>=a||12593<=a&&12686>=a||12704<=a&&12730>=a||12784<=a&&12799>=a||13312<=a&&19893>=a||19968<=a&&40917>=a||40960<=a&&42124>=a||42192<=a&&42237>=a||42240<=a&&42508>=a||42512<=a&&42527>=a||42538<=a&&42539>=a||42560<=a&&42606>=a||42623<=a&&42653>=a||42656<=a&&42735>=a||42775<=a&&42783>=a||
+42786<=a&&42888>=a||42891<=a&&42925>=a||42928<=a&&42935>=a||42999<=a&&43009>=a||43011<=a&&43013>=a||43015<=a&&43018>=a||43020<=a&&43042>=a||43072<=a&&43123>=a||43138<=a&&43187>=a||43250<=a&&43255>=a||43259===a||43261===a||43274<=a&&43301>=a||43312<=a&&43334>=a||43360<=a&&43388>=a||43396<=a&&43442>=a||43471===a||43488<=a&&43492>=a||43494<=a&&43503>=a||43514<=a&&43518>=a||43520<=a&&43560>=a||43584<=a&&43586>=a||43588<=a&&43595>=a||43616<=a&&43638>=a||43642===a||43646<=a&&43695>=a||43697===a||43701<=
+a&&43702>=a||43705<=a&&43709>=a||43712===a||43714===a||43739<=a&&43741>=a||43744<=a&&43754>=a||43762<=a&&43764>=a||43777<=a&&43782>=a||43785<=a&&43790>=a||43793<=a&&43798>=a||43808<=a&&43814>=a||43816<=a&&43822>=a||43824<=a&&43866>=a||43868<=a&&43877>=a||43888<=a&&44002>=a||44032<=a&&55203>=a||55216<=a&&55238>=a||55243<=a&&55291>=a||63744<=a&&64109>=a||64112<=a&&64217>=a||64256<=a&&64262>=a||64275<=a&&64279>=a||64285===a||64287<=a&&64296>=a||64298<=a&&64310>=a||64312<=a&&64316>=a||64318===a||64320<=
+a&&64321>=a||64323<=a&&64324>=a||64326<=a&&64433>=a||64467<=a&&64829>=a||64848<=a&&64911>=a||64914<=a&&64967>=a||65008<=a&&65019>=a||65136<=a&&65140>=a||65142<=a&&65276>=a||65313<=a&&65338>=a||65345<=a&&65370>=a||65382<=a&&65470>=a||65474<=a&&65479>=a||65482<=a&&65487>=a||65490<=a&&65495>=a||65498<=a&&65500>=a||65536<=a&&65547>=a||65549<=a&&65574>=a||65576<=a&&65594>=a||65596<=a&&65597>=a||65599<=a&&65613>=a||65616<=a&&65629>=a||65664<=a&&65786>=a||65856<=a&&65908>=a||66176<=a&&66204>=a||66208<=a&&
+66256>=a||66304<=a&&66335>=a||66352<=a&&66378>=a||66384<=a&&66421>=a||66432<=a&&66461>=a||66464<=a&&66499>=a||66504<=a&&66511>=a||66513<=a&&66517>=a||66560<=a&&66717>=a||66816<=a&&66855>=a||66864<=a&&66915>=a||67072<=a&&67382>=a||67392<=a&&67413>=a||67424<=a&&67431>=a||67584<=a&&67589>=a||67592===a||67594<=a&&67637>=a||67639<=a&&67640>=a||67644===a||67647<=a&&67669>=a||67680<=a&&67702>=a||67712<=a&&67742>=a||67808<=a&&67826>=a||67828<=a&&67829>=a||67840<=a&&67861>=a||67872<=a&&67897>=a||67968<=a&&
+68023>=a||68030<=a&&68031>=a||68096===a||68112<=a&&68115>=a||68117<=a&&68119>=a||68121<=a&&68147>=a||68192<=a&&68220>=a||68224<=a&&68252>=a||68288<=a&&68295>=a||68297<=a&&68324>=a||68352<=a&&68405>=a||68416<=a&&68437>=a||68448<=a&&68466>=a||68480<=a&&68497>=a||68608<=a&&68680>=a||68736<=a&&68786>=a||68800<=a&&68850>=a||69635<=a&&69687>=a||69763<=a&&69807>=a||69840<=a&&69864>=a||69891<=a&&69926>=a||69968<=a&&70002>=a||70006===a||70019<=a&&70066>=a||70081<=a&&70084>=a||70106===a||70108===a||70144<=
+a&&70161>=a||70163<=a&&70187>=a||70272<=a&&70278>=a||70280===a||70282<=a&&70285>=a||70287<=a&&70301>=a||70303<=a&&70312>=a||70320<=a&&70366>=a||70405<=a&&70412>=a||70415<=a&&70416>=a||70419<=a&&70440>=a||70442<=a&&70448>=a||70450<=a&&70451>=a||70453<=a&&70457>=a||70461===a||70480===a||70493<=a&&70497>=a||70784<=a&&70831>=a||70852<=a&&70853>=a||70855===a||71040<=a&&71086>=a||71128<=a&&71131>=a||71168<=a&&71215>=a||71236===a||71296<=a&&71338>=a||71424<=a&&71449>=a||71840<=a&&71903>=a||71935===a||72384<=
+a&&72440>=a||73728<=a&&74649>=a||74752<=a&&74862>=a||74880<=a&&75075>=a||77824<=a&&78894>=a||82944<=a&&83526>=a||92160<=a&&92728>=a||92736<=a&&92766>=a||92880<=a&&92909>=a||92928<=a&&92975>=a||92992<=a&&92995>=a||93027<=a&&93047>=a||93053<=a&&93071>=a||93952<=a&&94020>=a||94032===a||94099<=a&&94111>=a||110592<=a&&110593>=a||113664<=a&&113770>=a||113776<=a&&113788>=a||113792<=a&&113800>=a||113808<=a&&113817>=a||119808<=a&&119892>=a||119894<=a&&119964>=a||119966<=a&&119967>=a||119970===a||119973<=a&&
+119974>=a||119977<=a&&119980>=a||119982<=a&&119993>=a||119995===a||119997<=a&&120003>=a||120005<=a&&120069>=a||120071<=a&&120074>=a||120077<=a&&120084>=a||120086<=a&&120092>=a||120094<=a&&120121>=a||120123<=a&&120126>=a||120128<=a&&120132>=a||120134===a||120138<=a&&120144>=a||120146<=a&&120485>=a||120488<=a&&120512>=a||120514<=a&&120538>=a||120540<=a&&120570>=a||120572<=a&&120596>=a||120598<=a&&120628>=a||120630<=a&&120654>=a||120656<=a&&120686>=a||120688<=a&&120712>=a||120714<=a&&120744>=a||120746<=
+a&&120770>=a||120772<=a&&120779>=a||124928<=a&&125124>=a||126464<=a&&126467>=a||126469<=a&&126495>=a||126497<=a&&126498>=a||126500===a||126503===a||126505<=a&&126514>=a||126516<=a&&126519>=a||126521===a||126523===a||126530===a||126535===a||126537===a||126539===a||126541<=a&&126543>=a||126545<=a&&126546>=a||126548===a||126551===a||126553===a||126555===a||126557===a||126559===a||126561<=a&&126562>=a||126564===a||126567<=a&&126570>=a||126572<=a&&126578>=a||126580<=a&&126583>=a||126585<=a&&126588>=a||
+126590===a||126592<=a&&126601>=a||126603<=a&&126619>=a||126625<=a&&126627>=a||126629<=a&&126633>=a||126635<=a&&126651>=a||131072<=a&&173782>=a||173824<=a&&177972>=a||177984<=a&&178205>=a||178208<=a&&183969>=a||194560<=a&&195101>=a?!0:!1)}function e(b,a){return"$"===b||"_"===b||8204===a||8205===a||(48<=a&&57>=a||65<=a&&90>=a||95===a||97<=a&&122>=a||170===a||181===a||183===a||186===a||192<=a&&214>=a||216<=a&&246>=a||248<=a&&705>=a||710<=a&&721>=a||736<=a&&740>=a||748===a||750===a||768<=a&&884>=a||886<=
+a&&887>=a||890<=a&&893>=a||895===a||902<=a&&906>=a||908===a||910<=a&&929>=a||931<=a&&1013>=a||1015<=a&&1153>=a||1155<=a&&1159>=a||1162<=a&&1327>=a||1329<=a&&1366>=a||1369===a||1377<=a&&1415>=a||1425<=a&&1469>=a||1471===a||1473<=a&&1474>=a||1476<=a&&1477>=a||1479===a||1488<=a&&1514>=a||1520<=a&&1522>=a||1552<=a&&1562>=a||1568<=a&&1641>=a||1646<=a&&1747>=a||1749<=a&&1756>=a||1759<=a&&1768>=a||1770<=a&&1788>=a||1791===a||1808<=a&&1866>=a||1869<=a&&1969>=a||1984<=a&&2037>=a||2042===a||2048<=a&&2093>=
+a||2112<=a&&2139>=a||2208<=a&&2228>=a||2275<=a&&2403>=a||2406<=a&&2415>=a||2417<=a&&2435>=a||2437<=a&&2444>=a||2447<=a&&2448>=a||2451<=a&&2472>=a||2474<=a&&2480>=a||2482===a||2486<=a&&2489>=a||2492<=a&&2500>=a||2503<=a&&2504>=a||2507<=a&&2510>=a||2519===a||2524<=a&&2525>=a||2527<=a&&2531>=a||2534<=a&&2545>=a||2561<=a&&2563>=a||2565<=a&&2570>=a||2575<=a&&2576>=a||2579<=a&&2600>=a||2602<=a&&2608>=a||2610<=a&&2611>=a||2613<=a&&2614>=a||2616<=a&&2617>=a||2620===a||2622<=a&&2626>=a||2631<=a&&2632>=a||
+2635<=a&&2637>=a||2641===a||2649<=a&&2652>=a||2654===a||2662<=a&&2677>=a||2689<=a&&2691>=a||2693<=a&&2701>=a||2703<=a&&2705>=a||2707<=a&&2728>=a||2730<=a&&2736>=a||2738<=a&&2739>=a||2741<=a&&2745>=a||2748<=a&&2757>=a||2759<=a&&2761>=a||2763<=a&&2765>=a||2768===a||2784<=a&&2787>=a||2790<=a&&2799>=a||2809===a||2817<=a&&2819>=a||2821<=a&&2828>=a||2831<=a&&2832>=a||2835<=a&&2856>=a||2858<=a&&2864>=a||2866<=a&&2867>=a||2869<=a&&2873>=a||2876<=a&&2884>=a||2887<=a&&2888>=a||2891<=a&&2893>=a||2902<=a&&2903>=
+a||2908<=a&&2909>=a||2911<=a&&2915>=a||2918<=a&&2927>=a||2929===a||2946<=a&&2947>=a||2949<=a&&2954>=a||2958<=a&&2960>=a||2962<=a&&2965>=a||2969<=a&&2970>=a||2972===a||2974<=a&&2975>=a||2979<=a&&2980>=a||2984<=a&&2986>=a||2990<=a&&3001>=a||3006<=a&&3010>=a||3014<=a&&3016>=a||3018<=a&&3021>=a||3024===a||3031===a||3046<=a&&3055>=a||3072<=a&&3075>=a||3077<=a&&3084>=a||3086<=a&&3088>=a||3090<=a&&3112>=a||3114<=a&&3129>=a||3133<=a&&3140>=a||3142<=a&&3144>=a||3146<=a&&3149>=a||3157<=a&&3158>=a||3160<=a&&
+3162>=a||3168<=a&&3171>=a||3174<=a&&3183>=a||3201<=a&&3203>=a||3205<=a&&3212>=a||3214<=a&&3216>=a||3218<=a&&3240>=a||3242<=a&&3251>=a||3253<=a&&3257>=a||3260<=a&&3268>=a||3270<=a&&3272>=a||3274<=a&&3277>=a||3285<=a&&3286>=a||3294===a||3296<=a&&3299>=a||3302<=a&&3311>=a||3313<=a&&3314>=a||3329<=a&&3331>=a||3333<=a&&3340>=a||3342<=a&&3344>=a||3346<=a&&3386>=a||3389<=a&&3396>=a||3398<=a&&3400>=a||3402<=a&&3406>=a||3415===a||3423<=a&&3427>=a||3430<=a&&3439>=a||3450<=a&&3455>=a||3458<=a&&3459>=a||3461<=
+a&&3478>=a||3482<=a&&3505>=a||3507<=a&&3515>=a||3517===a||3520<=a&&3526>=a||3530===a||3535<=a&&3540>=a||3542===a||3544<=a&&3551>=a||3558<=a&&3567>=a||3570<=a&&3571>=a||3585<=a&&3642>=a||3648<=a&&3662>=a||3664<=a&&3673>=a||3713<=a&&3714>=a||3716===a||3719<=a&&3720>=a||3722===a||3725===a||3732<=a&&3735>=a||3737<=a&&3743>=a||3745<=a&&3747>=a||3749===a||3751===a||3754<=a&&3755>=a||3757<=a&&3769>=a||3771<=a&&3773>=a||3776<=a&&3780>=a||3782===a||3784<=a&&3789>=a||3792<=a&&3801>=a||3804<=a&&3807>=a||3840===
+a||3864<=a&&3865>=a||3872<=a&&3881>=a||3893===a||3895===a||3897===a||3902<=a&&3911>=a||3913<=a&&3948>=a||3953<=a&&3972>=a||3974<=a&&3991>=a||3993<=a&&4028>=a||4038===a||4096<=a&&4169>=a||4176<=a&&4253>=a||4256<=a&&4293>=a||4295===a||4301===a||4304<=a&&4346>=a||4348<=a&&4680>=a||4682<=a&&4685>=a||4688<=a&&4694>=a||4696===a||4698<=a&&4701>=a||4704<=a&&4744>=a||4746<=a&&4749>=a||4752<=a&&4784>=a||4786<=a&&4789>=a||4792<=a&&4798>=a||4800===a||4802<=a&&4805>=a||4808<=a&&4822>=a||4824<=a&&4880>=a||4882<=
+a&&4885>=a||4888<=a&&4954>=a||4957<=a&&4959>=a||4969<=a&&4977>=a||4992<=a&&5007>=a||5024<=a&&5109>=a||5112<=a&&5117>=a||5121<=a&&5740>=a||5743<=a&&5759>=a||5761<=a&&5786>=a||5792<=a&&5866>=a||5870<=a&&5880>=a||5888<=a&&5900>=a||5902<=a&&5908>=a||5920<=a&&5940>=a||5952<=a&&5971>=a||5984<=a&&5996>=a||5998<=a&&6E3>=a||6002<=a&&6003>=a||6016<=a&&6099>=a||6103===a||6108<=a&&6109>=a||6112<=a&&6121>=a||6155<=a&&6157>=a||6160<=a&&6169>=a||6176<=a&&6263>=a||6272<=a&&6314>=a||6320<=a&&6389>=a||6400<=a&&6430>=
+a||6432<=a&&6443>=a||6448<=a&&6459>=a||6470<=a&&6509>=a||6512<=a&&6516>=a||6528<=a&&6571>=a||6576<=a&&6601>=a||6608<=a&&6618>=a||6656<=a&&6683>=a||6688<=a&&6750>=a||6752<=a&&6780>=a||6783<=a&&6793>=a||6800<=a&&6809>=a||6823===a||6832<=a&&6845>=a||6912<=a&&6987>=a||6992<=a&&7001>=a||7019<=a&&7027>=a||7040<=a&&7155>=a||7168<=a&&7223>=a||7232<=a&&7241>=a||7245<=a&&7293>=a||7376<=a&&7378>=a||7380<=a&&7414>=a||7416<=a&&7417>=a||7424<=a&&7669>=a||7676<=a&&7957>=a||7960<=a&&7965>=a||7968<=a&&8005>=a||8008<=
+a&&8013>=a||8016<=a&&8023>=a||8025===a||8027===a||8029===a||8031<=a&&8061>=a||8064<=a&&8116>=a||8118<=a&&8124>=a||8126===a||8130<=a&&8132>=a||8134<=a&&8140>=a||8144<=a&&8147>=a||8150<=a&&8155>=a||8160<=a&&8172>=a||8178<=a&&8180>=a||8182<=a&&8188>=a||8255<=a&&8256>=a||8276===a||8305===a||8319===a||8336<=a&&8348>=a||8400<=a&&8412>=a||8417===a||8421<=a&&8432>=a||8450===a||8455===a||8458<=a&&8467>=a||8469===a||8472<=a&&8477>=a||8484===a||8486===a||8488===a||8490<=a&&8505>=a||8508<=a&&8511>=a||8517<=a&&
+8521>=a||8526===a||8544<=a&&8584>=a||11264<=a&&11310>=a||11312<=a&&11358>=a||11360<=a&&11492>=a||11499<=a&&11507>=a||11520<=a&&11557>=a||11559===a||11565===a||11568<=a&&11623>=a||11631===a||11647<=a&&11670>=a||11680<=a&&11686>=a||11688<=a&&11694>=a||11696<=a&&11702>=a||11704<=a&&11710>=a||11712<=a&&11718>=a||11720<=a&&11726>=a||11728<=a&&11734>=a||11736<=a&&11742>=a||11744<=a&&11775>=a||12293<=a&&12295>=a||12321<=a&&12335>=a||12337<=a&&12341>=a||12344<=a&&12348>=a||12353<=a&&12438>=a||12441<=a&&12447>=
+a||12449<=a&&12538>=a||12540<=a&&12543>=a||12549<=a&&12589>=a||12593<=a&&12686>=a||12704<=a&&12730>=a||12784<=a&&12799>=a||13312<=a&&19893>=a||19968<=a&&40917>=a||40960<=a&&42124>=a||42192<=a&&42237>=a||42240<=a&&42508>=a||42512<=a&&42539>=a||42560<=a&&42607>=a||42612<=a&&42621>=a||42623<=a&&42737>=a||42775<=a&&42783>=a||42786<=a&&42888>=a||42891<=a&&42925>=a||42928<=a&&42935>=a||42999<=a&&43047>=a||43072<=a&&43123>=a||43136<=a&&43204>=a||43216<=a&&43225>=a||43232<=a&&43255>=a||43259===a||43261===
+a||43264<=a&&43309>=a||43312<=a&&43347>=a||43360<=a&&43388>=a||43392<=a&&43456>=a||43471<=a&&43481>=a||43488<=a&&43518>=a||43520<=a&&43574>=a||43584<=a&&43597>=a||43600<=a&&43609>=a||43616<=a&&43638>=a||43642<=a&&43714>=a||43739<=a&&43741>=a||43744<=a&&43759>=a||43762<=a&&43766>=a||43777<=a&&43782>=a||43785<=a&&43790>=a||43793<=a&&43798>=a||43808<=a&&43814>=a||43816<=a&&43822>=a||43824<=a&&43866>=a||43868<=a&&43877>=a||43888<=a&&44010>=a||44012<=a&&44013>=a||44016<=a&&44025>=a||44032<=a&&55203>=a||
+55216<=a&&55238>=a||55243<=a&&55291>=a||63744<=a&&64109>=a||64112<=a&&64217>=a||64256<=a&&64262>=a||64275<=a&&64279>=a||64285<=a&&64296>=a||64298<=a&&64310>=a||64312<=a&&64316>=a||64318===a||64320<=a&&64321>=a||64323<=a&&64324>=a||64326<=a&&64433>=a||64467<=a&&64829>=a||64848<=a&&64911>=a||64914<=a&&64967>=a||65008<=a&&65019>=a||65024<=a&&65039>=a||65056<=a&&65071>=a||65075<=a&&65076>=a||65101<=a&&65103>=a||65136<=a&&65140>=a||65142<=a&&65276>=a||65296<=a&&65305>=a||65313<=a&&65338>=a||65343===a||
+65345<=a&&65370>=a||65382<=a&&65470>=a||65474<=a&&65479>=a||65482<=a&&65487>=a||65490<=a&&65495>=a||65498<=a&&65500>=a||65536<=a&&65547>=a||65549<=a&&65574>=a||65576<=a&&65594>=a||65596<=a&&65597>=a||65599<=a&&65613>=a||65616<=a&&65629>=a||65664<=a&&65786>=a||65856<=a&&65908>=a||66045===a||66176<=a&&66204>=a||66208<=a&&66256>=a||66272===a||66304<=a&&66335>=a||66352<=a&&66378>=a||66384<=a&&66426>=a||66432<=a&&66461>=a||66464<=a&&66499>=a||66504<=a&&66511>=a||66513<=a&&66517>=a||66560<=a&&66717>=a||
+66720<=a&&66729>=a||66816<=a&&66855>=a||66864<=a&&66915>=a||67072<=a&&67382>=a||67392<=a&&67413>=a||67424<=a&&67431>=a||67584<=a&&67589>=a||67592===a||67594<=a&&67637>=a||67639<=a&&67640>=a||67644===a||67647<=a&&67669>=a||67680<=a&&67702>=a||67712<=a&&67742>=a||67808<=a&&67826>=a||67828<=a&&67829>=a||67840<=a&&67861>=a||67872<=a&&67897>=a||67968<=a&&68023>=a||68030<=a&&68031>=a||68096<=a&&68099>=a||68101<=a&&68102>=a||68108<=a&&68115>=a||68117<=a&&68119>=a||68121<=a&&68147>=a||68152<=a&&68154>=a||
+68159===a||68192<=a&&68220>=a||68224<=a&&68252>=a||68288<=a&&68295>=a||68297<=a&&68326>=a||68352<=a&&68405>=a||68416<=a&&68437>=a||68448<=a&&68466>=a||68480<=a&&68497>=a||68608<=a&&68680>=a||68736<=a&&68786>=a||68800<=a&&68850>=a||69632<=a&&69702>=a||69734<=a&&69743>=a||69759<=a&&69818>=a||69840<=a&&69864>=a||69872<=a&&69881>=a||69888<=a&&69940>=a||69942<=a&&69951>=a||69968<=a&&70003>=a||70006===a||70016<=a&&70084>=a||70090<=a&&70092>=a||70096<=a&&70106>=a||70108===a||70144<=a&&70161>=a||70163<=a&&
+70199>=a||70272<=a&&70278>=a||70280===a||70282<=a&&70285>=a||70287<=a&&70301>=a||70303<=a&&70312>=a||70320<=a&&70378>=a||70384<=a&&70393>=a||70400<=a&&70403>=a||70405<=a&&70412>=a||70415<=a&&70416>=a||70419<=a&&70440>=a||70442<=a&&70448>=a||70450<=a&&70451>=a||70453<=a&&70457>=a||70460<=a&&70468>=a||70471<=a&&70472>=a||70475<=a&&70477>=a||70480===a||70487===a||70493<=a&&70499>=a||70502<=a&&70508>=a||70512<=a&&70516>=a||70784<=a&&70853>=a||70855===a||70864<=a&&70873>=a||71040<=a&&71093>=a||71096<=
+a&&71104>=a||71128<=a&&71133>=a||71168<=a&&71232>=a||71236===a||71248<=a&&71257>=a||71296<=a&&71351>=a||71360<=a&&71369>=a||71424<=a&&71449>=a||71453<=a&&71467>=a||71472<=a&&71481>=a||71840<=a&&71913>=a||71935===a||72384<=a&&72440>=a||73728<=a&&74649>=a||74752<=a&&74862>=a||74880<=a&&75075>=a||77824<=a&&78894>=a||82944<=a&&83526>=a||92160<=a&&92728>=a||92736<=a&&92766>=a||92768<=a&&92777>=a||92880<=a&&92909>=a||92912<=a&&92916>=a||92928<=a&&92982>=a||92992<=a&&92995>=a||93008<=a&&93017>=a||93027<=
+a&&93047>=a||93053<=a&&93071>=a||93952<=a&&94020>=a||94032<=a&&94078>=a||94095<=a&&94111>=a||110592<=a&&110593>=a||113664<=a&&113770>=a||113776<=a&&113788>=a||113792<=a&&113800>=a||113808<=a&&113817>=a||113821<=a&&113822>=a||119141<=a&&119145>=a||119149<=a&&119154>=a||119163<=a&&119170>=a||119173<=a&&119179>=a||119210<=a&&119213>=a||119362<=a&&119364>=a||119808<=a&&119892>=a||119894<=a&&119964>=a||119966<=a&&119967>=a||119970===a||119973<=a&&119974>=a||119977<=a&&119980>=a||119982<=a&&119993>=a||
+119995===a||119997<=a&&120003>=a||120005<=a&&120069>=a||120071<=a&&120074>=a||120077<=a&&120084>=a||120086<=a&&120092>=a||120094<=a&&120121>=a||120123<=a&&120126>=a||120128<=a&&120132>=a||120134===a||120138<=a&&120144>=a||120146<=a&&120485>=a||120488<=a&&120512>=a||120514<=a&&120538>=a||120540<=a&&120570>=a||120572<=a&&120596>=a||120598<=a&&120628>=a||120630<=a&&120654>=a||120656<=a&&120686>=a||120688<=a&&120712>=a||120714<=a&&120744>=a||120746<=a&&120770>=a||120772<=a&&120779>=a||120782<=a&&120831>=
+a||121344<=a&&121398>=a||121403<=a&&121452>=a||121461===a||121476===a||121499<=a&&121503>=a||121505<=a&&121519>=a||124928<=a&&125124>=a||125136<=a&&125142>=a||126464<=a&&126467>=a||126469<=a&&126495>=a||126497<=a&&126498>=a||126500===a||126503===a||126505<=a&&126514>=a||126516<=a&&126519>=a||126521===a||126523===a||126530===a||126535===a||126537===a||126539===a||126541<=a&&126543>=a||126545<=a&&126546>=a||126548===a||126551===a||126553===a||126555===a||126557===a||126559===a||126561<=a&&126562>=a||
+126564===a||126567<=a&&126570>=a||126572<=a&&126578>=a||126580<=a&&126583>=a||126585<=a&&126588>=a||126590===a||126592<=a&&126601>=a||126603<=a&&126619>=a||126625<=a&&126627>=a||126629<=a&&126633>=a||126635<=a&&126651>=a||131072<=a&&173782>=a||173824<=a&&177972>=a||177984<=a&&178205>=a||178208<=a&&183969>=a||194560<=a&&195101>=a||917760<=a&&917999>=a?!0:!1)}c.module("ngParseExt",[]).config(["$parseProvider",function(b){b.setIdentifierFns(d,e)}])})(window,window.angular);
+//# sourceMappingURL=angular-parse-ext.min.js.map


[18/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dsb-de.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dsb-de.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dsb-de.js
new file mode 100644
index 0000000..43e3c7e
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dsb-de.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "dopo\u0142dnja",
+      "w\u00f3tpo\u0142dnja"
+    ],
+    "DAY": [
+      "nje\u017aela",
+      "p\u00f3nje\u017aele",
+      "wa\u0142tora",
+      "srjoda",
+      "stw\u00f3rtk",
+      "p\u011btk",
+      "sobota"
+    ],
+    "ERANAMES": [
+      "p\u015bed Kristusowym naro\u017aenim",
+      "p\u00f3 Kristusowem naro\u017aenju"
+    ],
+    "ERAS": [
+      "p\u015b.Chr.n.",
+      "p\u00f3 Chr.n."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "januara",
+      "februara",
+      "m\u011brca",
+      "apryla",
+      "maja",
+      "junija",
+      "julija",
+      "awgusta",
+      "septembra",
+      "oktobra",
+      "nowembra",
+      "decembra"
+    ],
+    "SHORTDAY": [
+      "nje",
+      "p\u00f3n",
+      "wa\u0142",
+      "srj",
+      "stw",
+      "p\u011bt",
+      "sob"
+    ],
+    "SHORTMONTH": [
+      "jan.",
+      "feb.",
+      "m\u011br.",
+      "apr.",
+      "maj.",
+      "jun.",
+      "jul.",
+      "awg.",
+      "sep.",
+      "okt.",
+      "now.",
+      "dec."
+    ],
+    "STANDALONEMONTH": [
+      "januar",
+      "februar",
+      "m\u011brc",
+      "apryl",
+      "maj",
+      "junij",
+      "julij",
+      "awgust",
+      "september",
+      "oktober",
+      "nowember",
+      "december"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "d.M.y H:mm:ss",
+    "mediumDate": "d.M.y",
+    "mediumTime": "H:mm:ss",
+    "short": "d.M.yy H:mm",
+    "shortDate": "d.M.yy",
+    "shortTime": "H:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "dsb-de",
+  "localeID": "dsb_DE",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dsb.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dsb.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dsb.js
new file mode 100644
index 0000000..01137da
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dsb.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "dopo\u0142dnja",
+      "w\u00f3tpo\u0142dnja"
+    ],
+    "DAY": [
+      "nje\u017aela",
+      "p\u00f3nje\u017aele",
+      "wa\u0142tora",
+      "srjoda",
+      "stw\u00f3rtk",
+      "p\u011btk",
+      "sobota"
+    ],
+    "ERANAMES": [
+      "p\u015bed Kristusowym naro\u017aenim",
+      "p\u00f3 Kristusowem naro\u017aenju"
+    ],
+    "ERAS": [
+      "p\u015b.Chr.n.",
+      "p\u00f3 Chr.n."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "januara",
+      "februara",
+      "m\u011brca",
+      "apryla",
+      "maja",
+      "junija",
+      "julija",
+      "awgusta",
+      "septembra",
+      "oktobra",
+      "nowembra",
+      "decembra"
+    ],
+    "SHORTDAY": [
+      "nje",
+      "p\u00f3n",
+      "wa\u0142",
+      "srj",
+      "stw",
+      "p\u011bt",
+      "sob"
+    ],
+    "SHORTMONTH": [
+      "jan.",
+      "feb.",
+      "m\u011br.",
+      "apr.",
+      "maj.",
+      "jun.",
+      "jul.",
+      "awg.",
+      "sep.",
+      "okt.",
+      "now.",
+      "dec."
+    ],
+    "STANDALONEMONTH": [
+      "januar",
+      "februar",
+      "m\u011brc",
+      "apryl",
+      "maj",
+      "junij",
+      "julij",
+      "awgust",
+      "september",
+      "oktober",
+      "nowember",
+      "december"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "d.M.y H:mm:ss",
+    "mediumDate": "d.M.y",
+    "mediumTime": "H:mm:ss",
+    "short": "d.M.yy H:mm",
+    "shortDate": "d.M.yy",
+    "shortTime": "H:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "dsb",
+  "localeID": "dsb",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dua-cm.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dua-cm.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dua-cm.js
new file mode 100644
index 0000000..eacb47f
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dua-cm.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "idi\u0253a",
+      "eby\u00e1mu"
+    ],
+    "DAY": [
+      "\u00e9ti",
+      "m\u0254\u0301s\u00fa",
+      "kwas\u00fa",
+      "muk\u0254\u0301s\u00fa",
+      "\u014bgis\u00fa",
+      "\u0257\u00f3n\u025bs\u00fa",
+      "esa\u0253as\u00fa"
+    ],
+    "ERANAMES": [
+      "\u0253oso \u0253w\u00e1 y\u00e1\u0253e l\u00e1",
+      "mb\u00fasa kw\u00e9di a Y\u00e9s"
+    ],
+    "ERAS": [
+      "\u0253.Ys",
+      "mb.Ys"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "dim\u0254\u0301di",
+      "\u014bg\u0254nd\u025b",
+      "s\u0254\u014b\u025b",
+      "di\u0253\u00e1\u0253\u00e1",
+      "emiasele",
+      "es\u0254p\u025bs\u0254p\u025b",
+      "madi\u0253\u025b\u0301d\u00ed\u0253\u025b\u0301",
+      "di\u014bgindi",
+      "ny\u025bt\u025bki",
+      "may\u00e9s\u025b\u0301",
+      "tin\u00edn\u00ed",
+      "el\u00e1\u014bg\u025b\u0301"
+    ],
+    "SHORTDAY": [
+      "\u00e9t",
+      "m\u0254\u0301s",
+      "kwa",
+      "muk",
+      "\u014bgi",
+      "\u0257\u00f3n",
+      "esa"
+    ],
+    "SHORTMONTH": [
+      "di",
+      "\u014bg\u0254n",
+      "s\u0254\u014b",
+      "di\u0253",
+      "emi",
+      "es\u0254",
+      "mad",
+      "di\u014b",
+      "ny\u025bt",
+      "may",
+      "tin",
+      "el\u00e1"
+    ],
+    "STANDALONEMONTH": [
+      "dim\u0254\u0301di",
+      "\u014bg\u0254nd\u025b",
+      "s\u0254\u014b\u025b",
+      "di\u0253\u00e1\u0253\u00e1",
+      "emiasele",
+      "es\u0254p\u025bs\u0254p\u025b",
+      "madi\u0253\u025b\u0301d\u00ed\u0253\u025b\u0301",
+      "di\u014bgindi",
+      "ny\u025bt\u025bki",
+      "may\u00e9s\u025b\u0301",
+      "tin\u00edn\u00ed",
+      "el\u00e1\u014bg\u025b\u0301"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "dua-cm",
+  "localeID": "dua_CM",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dua.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dua.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dua.js
new file mode 100644
index 0000000..cf31aef
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dua.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "idi\u0253a",
+      "eby\u00e1mu"
+    ],
+    "DAY": [
+      "\u00e9ti",
+      "m\u0254\u0301s\u00fa",
+      "kwas\u00fa",
+      "muk\u0254\u0301s\u00fa",
+      "\u014bgis\u00fa",
+      "\u0257\u00f3n\u025bs\u00fa",
+      "esa\u0253as\u00fa"
+    ],
+    "ERANAMES": [
+      "\u0253oso \u0253w\u00e1 y\u00e1\u0253e l\u00e1",
+      "mb\u00fasa kw\u00e9di a Y\u00e9s"
+    ],
+    "ERAS": [
+      "\u0253.Ys",
+      "mb.Ys"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "dim\u0254\u0301di",
+      "\u014bg\u0254nd\u025b",
+      "s\u0254\u014b\u025b",
+      "di\u0253\u00e1\u0253\u00e1",
+      "emiasele",
+      "es\u0254p\u025bs\u0254p\u025b",
+      "madi\u0253\u025b\u0301d\u00ed\u0253\u025b\u0301",
+      "di\u014bgindi",
+      "ny\u025bt\u025bki",
+      "may\u00e9s\u025b\u0301",
+      "tin\u00edn\u00ed",
+      "el\u00e1\u014bg\u025b\u0301"
+    ],
+    "SHORTDAY": [
+      "\u00e9t",
+      "m\u0254\u0301s",
+      "kwa",
+      "muk",
+      "\u014bgi",
+      "\u0257\u00f3n",
+      "esa"
+    ],
+    "SHORTMONTH": [
+      "di",
+      "\u014bg\u0254n",
+      "s\u0254\u014b",
+      "di\u0253",
+      "emi",
+      "es\u0254",
+      "mad",
+      "di\u014b",
+      "ny\u025bt",
+      "may",
+      "tin",
+      "el\u00e1"
+    ],
+    "STANDALONEMONTH": [
+      "dim\u0254\u0301di",
+      "\u014bg\u0254nd\u025b",
+      "s\u0254\u014b\u025b",
+      "di\u0253\u00e1\u0253\u00e1",
+      "emiasele",
+      "es\u0254p\u025bs\u0254p\u025b",
+      "madi\u0253\u025b\u0301d\u00ed\u0253\u025b\u0301",
+      "di\u014bgindi",
+      "ny\u025bt\u025bki",
+      "may\u00e9s\u025b\u0301",
+      "tin\u00edn\u00ed",
+      "el\u00e1\u014bg\u025b\u0301"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "dua",
+  "localeID": "dua",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dyo-sn.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dyo-sn.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dyo-sn.js
new file mode 100644
index 0000000..2e1c1fc
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dyo-sn.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Dimas",
+      "Tene\u014b",
+      "Talata",
+      "Alarbay",
+      "Aramisay",
+      "Arjuma",
+      "Sibiti"
+    ],
+    "ERANAMES": [
+      "Ari\u014buu Yeesu",
+      "Atoo\u014be Yeesu"
+    ],
+    "ERAS": [
+      "ArY",
+      "AtY"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Sanvie",
+      "F\u00e9birie",
+      "Mars",
+      "Aburil",
+      "Mee",
+      "Sue\u014b",
+      "S\u00fauyee",
+      "Ut",
+      "Settembar",
+      "Oktobar",
+      "Novembar",
+      "Disambar"
+    ],
+    "SHORTDAY": [
+      "Dim",
+      "Ten",
+      "Tal",
+      "Ala",
+      "Ara",
+      "Arj",
+      "Sib"
+    ],
+    "SHORTMONTH": [
+      "Sa",
+      "Fe",
+      "Ma",
+      "Ab",
+      "Me",
+      "Su",
+      "S\u00fa",
+      "Ut",
+      "Se",
+      "Ok",
+      "No",
+      "De"
+    ],
+    "STANDALONEMONTH": [
+      "Sanvie",
+      "F\u00e9birie",
+      "Mars",
+      "Aburil",
+      "Mee",
+      "Sue\u014b",
+      "S\u00fauyee",
+      "Ut",
+      "Settembar",
+      "Oktobar",
+      "Novembar",
+      "Disambar"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "CFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "dyo-sn",
+  "localeID": "dyo_SN",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dyo.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dyo.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dyo.js
new file mode 100644
index 0000000..7978c73
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dyo.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Dimas",
+      "Tene\u014b",
+      "Talata",
+      "Alarbay",
+      "Aramisay",
+      "Arjuma",
+      "Sibiti"
+    ],
+    "ERANAMES": [
+      "Ari\u014buu Yeesu",
+      "Atoo\u014be Yeesu"
+    ],
+    "ERAS": [
+      "ArY",
+      "AtY"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Sanvie",
+      "F\u00e9birie",
+      "Mars",
+      "Aburil",
+      "Mee",
+      "Sue\u014b",
+      "S\u00fauyee",
+      "Ut",
+      "Settembar",
+      "Oktobar",
+      "Novembar",
+      "Disambar"
+    ],
+    "SHORTDAY": [
+      "Dim",
+      "Ten",
+      "Tal",
+      "Ala",
+      "Ara",
+      "Arj",
+      "Sib"
+    ],
+    "SHORTMONTH": [
+      "Sa",
+      "Fe",
+      "Ma",
+      "Ab",
+      "Me",
+      "Su",
+      "S\u00fa",
+      "Ut",
+      "Se",
+      "Ok",
+      "No",
+      "De"
+    ],
+    "STANDALONEMONTH": [
+      "Sanvie",
+      "F\u00e9birie",
+      "Mars",
+      "Aburil",
+      "Mee",
+      "Sue\u014b",
+      "S\u00fauyee",
+      "Ut",
+      "Settembar",
+      "Oktobar",
+      "Novembar",
+      "Disambar"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "CFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "dyo",
+  "localeID": "dyo",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dz-bt.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dz-bt.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dz-bt.js
new file mode 100644
index 0000000..58d59ef
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dz-bt.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0f66\u0f94\u0f0b\u0f46\u0f0b",
+      "\u0f55\u0fb1\u0f72\u0f0b\u0f46\u0f0b"
+    ],
+    "DAY": [
+      "\u0f42\u0f5f\u0f60\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f0b",
+      "\u0f42\u0f5f\u0f60\u0f0b\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b",
+      "\u0f42\u0f5f\u0f60\u0f0b\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b",
+      "\u0f42\u0f5f\u0f60\u0f0b\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74\u0f0b",
+      "\u0f42\u0f5f\u0f60\u0f0b\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b",
+      "\u0f42\u0f5f\u0f60\u0f0b\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b",
+      "\u0f42\u0f5f\u0f60\u0f0b\u0f49\u0f72\u0f0b\u0f58\u0f0b"
+    ],
+    "ERANAMES": [
+      "BCE",
+      "CE"
+    ],
+    "ERAS": [
+      "BCE",
+      "CE"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u0f5f\u0fb3\u0f0b\u0f51\u0f44\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f42\u0f66\u0f74\u0f58\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f63\u0f94\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54\u0f0b"
+    ],
+    "SHORTDAY": [
+      "\u0f5f\u0fb3\u0f0b",
+      "\u0f58\u0f72\u0f62\u0f0b",
+      "\u0f63\u0fb7\u0f42\u0f0b",
+      "\u0f55\u0f74\u0f62\u0f0b",
+      "\u0f66\u0f44\u0f66\u0f0b",
+      "\u0f66\u0fa4\u0f7a\u0f53\u0f0b",
+      "\u0f49\u0f72\u0f0b"
+    ],
+    "SHORTMONTH": [
+      "\u0f21",
+      "\u0f22",
+      "\u0f23",
+      "\u0f24",
+      "\u0f25",
+      "\u0f26",
+      "\u0f27",
+      "\u0f28",
+      "\u0f29",
+      "\u0f21\u0f20",
+      "\u0f21\u0f21",
+      "12"
+    ],
+    "STANDALONEMONTH": [
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f5f\u0fb3\u0f0b\u0f51\u0f44\u0f54\u0f0b",
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f5f\u0fb3\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54\u0f0b",
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f5f\u0fb3\u0f0b\u0f42\u0f66\u0f74\u0f58\u0f0b\u0f54\u0f0b",
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54",
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f5f\u0fb3\u0f0b\u0f63\u0f94\u0f0b\u0f54\u0f0b",
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f5f\u0fb3\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54",
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54\u0f0b",
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54\u0f0b",
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f5f\u0fb3\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54\u0f0b",
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54\u0f0b",
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54\u0f0b",
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54\u0f0b"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, \u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0by MMMM \u0f5a\u0f7a\u0f66\u0f0bdd",
+    "longDate": "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0by MMMM \u0f5a\u0f7a\u0f66\u0f0b dd",
+    "medium": "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0by \u0f5f\u0fb3\u0f0bMMM \u0f5a\u0f7a\u0f66\u0f0bdd \u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0bh:mm:ss a",
+    "mediumDate": "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0by \u0f5f\u0fb3\u0f0bMMM \u0f5a\u0f7a\u0f66\u0f0bdd",
+    "mediumTime": "\u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0bh:mm:ss a",
+    "short": "y-MM-dd \u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0b h \u0f66\u0f90\u0f62\u0f0b\u0f58\u0f0b mm a",
+    "shortDate": "y-MM-dd",
+    "shortTime": "\u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0b h \u0f66\u0f90\u0f62\u0f0b\u0f58\u0f0b mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Nu.",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "dz-bt",
+  "localeID": "dz_BT",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dz.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dz.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dz.js
new file mode 100644
index 0000000..d1c2cc8
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_dz.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0f66\u0f94\u0f0b\u0f46\u0f0b",
+      "\u0f55\u0fb1\u0f72\u0f0b\u0f46\u0f0b"
+    ],
+    "DAY": [
+      "\u0f42\u0f5f\u0f60\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f0b",
+      "\u0f42\u0f5f\u0f60\u0f0b\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b",
+      "\u0f42\u0f5f\u0f60\u0f0b\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b",
+      "\u0f42\u0f5f\u0f60\u0f0b\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74\u0f0b",
+      "\u0f42\u0f5f\u0f60\u0f0b\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b",
+      "\u0f42\u0f5f\u0f60\u0f0b\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b",
+      "\u0f42\u0f5f\u0f60\u0f0b\u0f49\u0f72\u0f0b\u0f58\u0f0b"
+    ],
+    "ERANAMES": [
+      "BCE",
+      "CE"
+    ],
+    "ERAS": [
+      "BCE",
+      "CE"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u0f5f\u0fb3\u0f0b\u0f51\u0f44\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f42\u0f66\u0f74\u0f58\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f63\u0f94\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54\u0f0b",
+      "\u0f5f\u0fb3\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54\u0f0b"
+    ],
+    "SHORTDAY": [
+      "\u0f5f\u0fb3\u0f0b",
+      "\u0f58\u0f72\u0f62\u0f0b",
+      "\u0f63\u0fb7\u0f42\u0f0b",
+      "\u0f55\u0f74\u0f62\u0f0b",
+      "\u0f66\u0f44\u0f66\u0f0b",
+      "\u0f66\u0fa4\u0f7a\u0f53\u0f0b",
+      "\u0f49\u0f72\u0f0b"
+    ],
+    "SHORTMONTH": [
+      "\u0f21",
+      "\u0f22",
+      "\u0f23",
+      "\u0f24",
+      "\u0f25",
+      "\u0f26",
+      "\u0f27",
+      "\u0f28",
+      "\u0f29",
+      "\u0f21\u0f20",
+      "\u0f21\u0f21",
+      "12"
+    ],
+    "STANDALONEMONTH": [
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f5f\u0fb3\u0f0b\u0f51\u0f44\u0f54\u0f0b",
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f5f\u0fb3\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54\u0f0b",
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f5f\u0fb3\u0f0b\u0f42\u0f66\u0f74\u0f58\u0f0b\u0f54\u0f0b",
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54",
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f5f\u0fb3\u0f0b\u0f63\u0f94\u0f0b\u0f54\u0f0b",
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f5f\u0fb3\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54",
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54\u0f0b",
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54\u0f0b",
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f5f\u0fb3\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54\u0f0b",
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54\u0f0b",
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54\u0f0b",
+      "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54\u0f0b"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, \u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0by MMMM \u0f5a\u0f7a\u0f66\u0f0bdd",
+    "longDate": "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0by MMMM \u0f5a\u0f7a\u0f66\u0f0b dd",
+    "medium": "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0by \u0f5f\u0fb3\u0f0bMMM \u0f5a\u0f7a\u0f66\u0f0bdd \u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0bh:mm:ss a",
+    "mediumDate": "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0by \u0f5f\u0fb3\u0f0bMMM \u0f5a\u0f7a\u0f66\u0f0bdd",
+    "mediumTime": "\u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0bh:mm:ss a",
+    "short": "y-MM-dd \u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0b h \u0f66\u0f90\u0f62\u0f0b\u0f58\u0f0b mm a",
+    "shortDate": "y-MM-dd",
+    "shortTime": "\u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0b h \u0f66\u0f90\u0f62\u0f0b\u0f58\u0f0b mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Nu.",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "dz",
+  "localeID": "dz",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ebu-ke.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ebu-ke.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ebu-ke.js
new file mode 100644
index 0000000..28b3a89
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ebu-ke.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "KI",
+      "UT"
+    ],
+    "DAY": [
+      "Kiumia",
+      "Njumatatu",
+      "Njumaine",
+      "Njumatano",
+      "Aramithi",
+      "Njumaa",
+      "NJumamothii"
+    ],
+    "ERANAMES": [
+      "Mbere ya Kristo",
+      "Thutha wa Kristo"
+    ],
+    "ERAS": [
+      "MK",
+      "TK"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Mweri wa mbere",
+      "Mweri wa ka\u0129ri",
+      "Mweri wa kathat\u0169",
+      "Mweri wa kana",
+      "Mweri wa gatano",
+      "Mweri wa gatantat\u0169",
+      "Mweri wa m\u0169gwanja",
+      "Mweri wa kanana",
+      "Mweri wa kenda",
+      "Mweri wa ik\u0169mi",
+      "Mweri wa ik\u0169mi na \u0169mwe",
+      "Mweri wa ik\u0169mi na Ka\u0129r\u0129"
+    ],
+    "SHORTDAY": [
+      "Kma",
+      "Tat",
+      "Ine",
+      "Tan",
+      "Arm",
+      "Maa",
+      "NMM"
+    ],
+    "SHORTMONTH": [
+      "Mbe",
+      "Kai",
+      "Kat",
+      "Kan",
+      "Gat",
+      "Gan",
+      "Mug",
+      "Knn",
+      "Ken",
+      "Iku",
+      "Imw",
+      "Igi"
+    ],
+    "STANDALONEMONTH": [
+      "Mweri wa mbere",
+      "Mweri wa ka\u0129ri",
+      "Mweri wa kathat\u0169",
+      "Mweri wa kana",
+      "Mweri wa gatano",
+      "Mweri wa gatantat\u0169",
+      "Mweri wa m\u0169gwanja",
+      "Mweri wa kanana",
+      "Mweri wa kenda",
+      "Mweri wa ik\u0169mi",
+      "Mweri wa ik\u0169mi na \u0169mwe",
+      "Mweri wa ik\u0169mi na Ka\u0129r\u0129"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Ksh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ebu-ke",
+  "localeID": "ebu_KE",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ebu.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ebu.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ebu.js
new file mode 100644
index 0000000..3ccd086
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ebu.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "KI",
+      "UT"
+    ],
+    "DAY": [
+      "Kiumia",
+      "Njumatatu",
+      "Njumaine",
+      "Njumatano",
+      "Aramithi",
+      "Njumaa",
+      "NJumamothii"
+    ],
+    "ERANAMES": [
+      "Mbere ya Kristo",
+      "Thutha wa Kristo"
+    ],
+    "ERAS": [
+      "MK",
+      "TK"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Mweri wa mbere",
+      "Mweri wa ka\u0129ri",
+      "Mweri wa kathat\u0169",
+      "Mweri wa kana",
+      "Mweri wa gatano",
+      "Mweri wa gatantat\u0169",
+      "Mweri wa m\u0169gwanja",
+      "Mweri wa kanana",
+      "Mweri wa kenda",
+      "Mweri wa ik\u0169mi",
+      "Mweri wa ik\u0169mi na \u0169mwe",
+      "Mweri wa ik\u0169mi na Ka\u0129r\u0129"
+    ],
+    "SHORTDAY": [
+      "Kma",
+      "Tat",
+      "Ine",
+      "Tan",
+      "Arm",
+      "Maa",
+      "NMM"
+    ],
+    "SHORTMONTH": [
+      "Mbe",
+      "Kai",
+      "Kat",
+      "Kan",
+      "Gat",
+      "Gan",
+      "Mug",
+      "Knn",
+      "Ken",
+      "Iku",
+      "Imw",
+      "Igi"
+    ],
+    "STANDALONEMONTH": [
+      "Mweri wa mbere",
+      "Mweri wa ka\u0129ri",
+      "Mweri wa kathat\u0169",
+      "Mweri wa kana",
+      "Mweri wa gatano",
+      "Mweri wa gatantat\u0169",
+      "Mweri wa m\u0169gwanja",
+      "Mweri wa kanana",
+      "Mweri wa kenda",
+      "Mweri wa ik\u0169mi",
+      "Mweri wa ik\u0169mi na \u0169mwe",
+      "Mweri wa ik\u0169mi na Ka\u0129r\u0129"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Ksh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ebu",
+  "localeID": "ebu",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ee-gh.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ee-gh.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ee-gh.js
new file mode 100644
index 0000000..d89ffc6
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ee-gh.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u014bdi",
+      "\u0263etr\u0254"
+    ],
+    "DAY": [
+      "k\u0254si\u0256a",
+      "dzo\u0256a",
+      "bla\u0256a",
+      "ku\u0256a",
+      "yawo\u0256a",
+      "fi\u0256a",
+      "memle\u0256a"
+    ],
+    "ERANAMES": [
+      "Hafi Yesu Va Do \u014bg\u0254",
+      "Yesu \u014a\u0254li"
+    ],
+    "ERAS": [
+      "hY",
+      "Y\u014b"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "dzove",
+      "dzodze",
+      "tedoxe",
+      "af\u0254f\u0129e",
+      "dama",
+      "masa",
+      "siaml\u0254m",
+      "deasiamime",
+      "any\u0254ny\u0254",
+      "kele",
+      "ade\u025bmekp\u0254xe",
+      "dzome"
+    ],
+    "SHORTDAY": [
+      "k\u0254s",
+      "dzo",
+      "bla",
+      "ku\u0256",
+      "yaw",
+      "fi\u0256",
+      "mem"
+    ],
+    "SHORTMONTH": [
+      "dzv",
+      "dzd",
+      "ted",
+      "af\u0254",
+      "dam",
+      "mas",
+      "sia",
+      "dea",
+      "any",
+      "kel",
+      "ade",
+      "dzm"
+    ],
+    "STANDALONEMONTH": [
+      "dzove",
+      "dzodze",
+      "tedoxe",
+      "af\u0254f\u0129e",
+      "dama",
+      "masa",
+      "siaml\u0254m",
+      "deasiamime",
+      "any\u0254ny\u0254",
+      "kele",
+      "ade\u025bmekp\u0254xe",
+      "dzome"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, MMMM d 'lia' y",
+    "longDate": "MMMM d 'lia' y",
+    "medium": "MMM d 'lia', y a 'ga' h:mm:ss",
+    "mediumDate": "MMM d 'lia', y",
+    "mediumTime": "a 'ga' h:mm:ss",
+    "short": "M/d/yy a 'ga' h:mm",
+    "shortDate": "M/d/yy",
+    "shortTime": "a 'ga' h:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "GHS",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ee-gh",
+  "localeID": "ee_GH",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ee-tg.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ee-tg.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ee-tg.js
new file mode 100644
index 0000000..4fbc377
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ee-tg.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u014bdi",
+      "\u0263etr\u0254"
+    ],
+    "DAY": [
+      "k\u0254si\u0256a",
+      "dzo\u0256a",
+      "bla\u0256a",
+      "ku\u0256a",
+      "yawo\u0256a",
+      "fi\u0256a",
+      "memle\u0256a"
+    ],
+    "ERANAMES": [
+      "Hafi Yesu Va Do \u014bg\u0254",
+      "Yesu \u014a\u0254li"
+    ],
+    "ERAS": [
+      "hY",
+      "Y\u014b"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "dzove",
+      "dzodze",
+      "tedoxe",
+      "af\u0254f\u0129e",
+      "dama",
+      "masa",
+      "siaml\u0254m",
+      "deasiamime",
+      "any\u0254ny\u0254",
+      "kele",
+      "ade\u025bmekp\u0254xe",
+      "dzome"
+    ],
+    "SHORTDAY": [
+      "k\u0254s",
+      "dzo",
+      "bla",
+      "ku\u0256",
+      "yaw",
+      "fi\u0256",
+      "mem"
+    ],
+    "SHORTMONTH": [
+      "dzv",
+      "dzd",
+      "ted",
+      "af\u0254",
+      "dam",
+      "mas",
+      "sia",
+      "dea",
+      "any",
+      "kel",
+      "ade",
+      "dzm"
+    ],
+    "STANDALONEMONTH": [
+      "dzove",
+      "dzodze",
+      "tedoxe",
+      "af\u0254f\u0129e",
+      "dama",
+      "masa",
+      "siaml\u0254m",
+      "deasiamime",
+      "any\u0254ny\u0254",
+      "kele",
+      "ade\u025bmekp\u0254xe",
+      "dzome"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, MMMM d 'lia' y",
+    "longDate": "MMMM d 'lia' y",
+    "medium": "MMM d 'lia', y a 'ga' h:mm:ss",
+    "mediumDate": "MMM d 'lia', y",
+    "mediumTime": "a 'ga' h:mm:ss",
+    "short": "M/d/yy a 'ga' h:mm",
+    "shortDate": "M/d/yy",
+    "shortTime": "a 'ga' h:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "CFA",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ee-tg",
+  "localeID": "ee_TG",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ee.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ee.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ee.js
new file mode 100644
index 0000000..dbd4d3c
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ee.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u014bdi",
+      "\u0263etr\u0254"
+    ],
+    "DAY": [
+      "k\u0254si\u0256a",
+      "dzo\u0256a",
+      "bla\u0256a",
+      "ku\u0256a",
+      "yawo\u0256a",
+      "fi\u0256a",
+      "memle\u0256a"
+    ],
+    "ERANAMES": [
+      "Hafi Yesu Va Do \u014bg\u0254",
+      "Yesu \u014a\u0254li"
+    ],
+    "ERAS": [
+      "hY",
+      "Y\u014b"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "dzove",
+      "dzodze",
+      "tedoxe",
+      "af\u0254f\u0129e",
+      "dama",
+      "masa",
+      "siaml\u0254m",
+      "deasiamime",
+      "any\u0254ny\u0254",
+      "kele",
+      "ade\u025bmekp\u0254xe",
+      "dzome"
+    ],
+    "SHORTDAY": [
+      "k\u0254s",
+      "dzo",
+      "bla",
+      "ku\u0256",
+      "yaw",
+      "fi\u0256",
+      "mem"
+    ],
+    "SHORTMONTH": [
+      "dzv",
+      "dzd",
+      "ted",
+      "af\u0254",
+      "dam",
+      "mas",
+      "sia",
+      "dea",
+      "any",
+      "kel",
+      "ade",
+      "dzm"
+    ],
+    "STANDALONEMONTH": [
+      "dzove",
+      "dzodze",
+      "tedoxe",
+      "af\u0254f\u0129e",
+      "dama",
+      "masa",
+      "siaml\u0254m",
+      "deasiamime",
+      "any\u0254ny\u0254",
+      "kele",
+      "ade\u025bmekp\u0254xe",
+      "dzome"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, MMMM d 'lia' y",
+    "longDate": "MMMM d 'lia' y",
+    "medium": "MMM d 'lia', y a 'ga' h:mm:ss",
+    "mediumDate": "MMM d 'lia', y",
+    "mediumTime": "a 'ga' h:mm:ss",
+    "short": "M/d/yy a 'ga' h:mm",
+    "shortDate": "M/d/yy",
+    "shortTime": "a 'ga' h:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "GHS",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ee",
+  "localeID": "ee",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_el-cy.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_el-cy.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_el-cy.js
new file mode 100644
index 0000000..41b44d3
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_el-cy.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u03c0.\u03bc.",
+      "\u03bc.\u03bc."
+    ],
+    "DAY": [
+      "\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae",
+      "\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1",
+      "\u03a4\u03c1\u03af\u03c4\u03b7",
+      "\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7",
+      "\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7",
+      "\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae",
+      "\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf"
+    ],
+    "ERANAMES": [
+      "\u03c0\u03c1\u03bf \u03a7\u03c1\u03b9\u03c3\u03c4\u03bf\u03cd",
+      "\u03bc\u03b5\u03c4\u03ac \u03a7\u03c1\u03b9\u03c3\u03c4\u03cc\u03bd"
+    ],
+    "ERAS": [
+      "\u03c0.\u03a7.",
+      "\u03bc.\u03a7."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u0399\u03b1\u03bd\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5",
+      "\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5",
+      "\u039c\u03b1\u03c1\u03c4\u03af\u03bf\u03c5",
+      "\u0391\u03c0\u03c1\u03b9\u03bb\u03af\u03bf\u03c5",
+      "\u039c\u03b1\u0390\u03bf\u03c5",
+      "\u0399\u03bf\u03c5\u03bd\u03af\u03bf\u03c5",
+      "\u0399\u03bf\u03c5\u03bb\u03af\u03bf\u03c5",
+      "\u0391\u03c5\u03b3\u03bf\u03cd\u03c3\u03c4\u03bf\u03c5",
+      "\u03a3\u03b5\u03c0\u03c4\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5",
+      "\u039f\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5",
+      "\u039d\u03bf\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5",
+      "\u0394\u03b5\u03ba\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5"
+    ],
+    "SHORTDAY": [
+      "\u039a\u03c5\u03c1",
+      "\u0394\u03b5\u03c5",
+      "\u03a4\u03c1\u03af",
+      "\u03a4\u03b5\u03c4",
+      "\u03a0\u03ad\u03bc",
+      "\u03a0\u03b1\u03c1",
+      "\u03a3\u03ac\u03b2"
+    ],
+    "SHORTMONTH": [
+      "\u0399\u03b1\u03bd",
+      "\u03a6\u03b5\u03b2",
+      "\u039c\u03b1\u03c1",
+      "\u0391\u03c0\u03c1",
+      "\u039c\u03b1\u0390",
+      "\u0399\u03bf\u03c5\u03bd",
+      "\u0399\u03bf\u03c5\u03bb",
+      "\u0391\u03c5\u03b3",
+      "\u03a3\u03b5\u03c0",
+      "\u039f\u03ba\u03c4",
+      "\u039d\u03bf\u03b5",
+      "\u0394\u03b5\u03ba"
+    ],
+    "STANDALONEMONTH": [
+      "\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2",
+      "\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2",
+      "\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2",
+      "\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2",
+      "\u039c\u03ac\u03b9\u03bf\u03c2",
+      "\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2",
+      "\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2",
+      "\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2",
+      "\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2",
+      "\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2",
+      "\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2",
+      "\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/M/yy h:mm a",
+    "shortDate": "d/M/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "el-cy",
+  "localeID": "el_CY",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_el-gr.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_el-gr.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_el-gr.js
new file mode 100644
index 0000000..775d3fb
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_el-gr.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u03c0.\u03bc.",
+      "\u03bc.\u03bc."
+    ],
+    "DAY": [
+      "\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae",
+      "\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1",
+      "\u03a4\u03c1\u03af\u03c4\u03b7",
+      "\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7",
+      "\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7",
+      "\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae",
+      "\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf"
+    ],
+    "ERANAMES": [
+      "\u03c0\u03c1\u03bf \u03a7\u03c1\u03b9\u03c3\u03c4\u03bf\u03cd",
+      "\u03bc\u03b5\u03c4\u03ac \u03a7\u03c1\u03b9\u03c3\u03c4\u03cc\u03bd"
+    ],
+    "ERAS": [
+      "\u03c0.\u03a7.",
+      "\u03bc.\u03a7."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u0399\u03b1\u03bd\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5",
+      "\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5",
+      "\u039c\u03b1\u03c1\u03c4\u03af\u03bf\u03c5",
+      "\u0391\u03c0\u03c1\u03b9\u03bb\u03af\u03bf\u03c5",
+      "\u039c\u03b1\u0390\u03bf\u03c5",
+      "\u0399\u03bf\u03c5\u03bd\u03af\u03bf\u03c5",
+      "\u0399\u03bf\u03c5\u03bb\u03af\u03bf\u03c5",
+      "\u0391\u03c5\u03b3\u03bf\u03cd\u03c3\u03c4\u03bf\u03c5",
+      "\u03a3\u03b5\u03c0\u03c4\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5",
+      "\u039f\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5",
+      "\u039d\u03bf\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5",
+      "\u0394\u03b5\u03ba\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5"
+    ],
+    "SHORTDAY": [
+      "\u039a\u03c5\u03c1",
+      "\u0394\u03b5\u03c5",
+      "\u03a4\u03c1\u03af",
+      "\u03a4\u03b5\u03c4",
+      "\u03a0\u03ad\u03bc",
+      "\u03a0\u03b1\u03c1",
+      "\u03a3\u03ac\u03b2"
+    ],
+    "SHORTMONTH": [
+      "\u0399\u03b1\u03bd",
+      "\u03a6\u03b5\u03b2",
+      "\u039c\u03b1\u03c1",
+      "\u0391\u03c0\u03c1",
+      "\u039c\u03b1\u0390",
+      "\u0399\u03bf\u03c5\u03bd",
+      "\u0399\u03bf\u03c5\u03bb",
+      "\u0391\u03c5\u03b3",
+      "\u03a3\u03b5\u03c0",
+      "\u039f\u03ba\u03c4",
+      "\u039d\u03bf\u03b5",
+      "\u0394\u03b5\u03ba"
+    ],
+    "STANDALONEMONTH": [
+      "\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2",
+      "\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2",
+      "\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2",
+      "\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2",
+      "\u039c\u03ac\u03b9\u03bf\u03c2",
+      "\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2",
+      "\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2",
+      "\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2",
+      "\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2",
+      "\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2",
+      "\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2",
+      "\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/M/yy h:mm a",
+    "shortDate": "d/M/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "el-gr",
+  "localeID": "el_GR",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_el.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_el.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_el.js
new file mode 100644
index 0000000..0cfa775
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_el.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u03c0.\u03bc.",
+      "\u03bc.\u03bc."
+    ],
+    "DAY": [
+      "\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae",
+      "\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1",
+      "\u03a4\u03c1\u03af\u03c4\u03b7",
+      "\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7",
+      "\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7",
+      "\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae",
+      "\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf"
+    ],
+    "ERANAMES": [
+      "\u03c0\u03c1\u03bf \u03a7\u03c1\u03b9\u03c3\u03c4\u03bf\u03cd",
+      "\u03bc\u03b5\u03c4\u03ac \u03a7\u03c1\u03b9\u03c3\u03c4\u03cc\u03bd"
+    ],
+    "ERAS": [
+      "\u03c0.\u03a7.",
+      "\u03bc.\u03a7."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u0399\u03b1\u03bd\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5",
+      "\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5",
+      "\u039c\u03b1\u03c1\u03c4\u03af\u03bf\u03c5",
+      "\u0391\u03c0\u03c1\u03b9\u03bb\u03af\u03bf\u03c5",
+      "\u039c\u03b1\u0390\u03bf\u03c5",
+      "\u0399\u03bf\u03c5\u03bd\u03af\u03bf\u03c5",
+      "\u0399\u03bf\u03c5\u03bb\u03af\u03bf\u03c5",
+      "\u0391\u03c5\u03b3\u03bf\u03cd\u03c3\u03c4\u03bf\u03c5",
+      "\u03a3\u03b5\u03c0\u03c4\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5",
+      "\u039f\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5",
+      "\u039d\u03bf\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5",
+      "\u0394\u03b5\u03ba\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5"
+    ],
+    "SHORTDAY": [
+      "\u039a\u03c5\u03c1",
+      "\u0394\u03b5\u03c5",
+      "\u03a4\u03c1\u03af",
+      "\u03a4\u03b5\u03c4",
+      "\u03a0\u03ad\u03bc",
+      "\u03a0\u03b1\u03c1",
+      "\u03a3\u03ac\u03b2"
+    ],
+    "SHORTMONTH": [
+      "\u0399\u03b1\u03bd",
+      "\u03a6\u03b5\u03b2",
+      "\u039c\u03b1\u03c1",
+      "\u0391\u03c0\u03c1",
+      "\u039c\u03b1\u0390",
+      "\u0399\u03bf\u03c5\u03bd",
+      "\u0399\u03bf\u03c5\u03bb",
+      "\u0391\u03c5\u03b3",
+      "\u03a3\u03b5\u03c0",
+      "\u039f\u03ba\u03c4",
+      "\u039d\u03bf\u03b5",
+      "\u0394\u03b5\u03ba"
+    ],
+    "STANDALONEMONTH": [
+      "\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2",
+      "\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2",
+      "\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2",
+      "\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2",
+      "\u039c\u03ac\u03b9\u03bf\u03c2",
+      "\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2",
+      "\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2",
+      "\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2",
+      "\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2",
+      "\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2",
+      "\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2",
+      "\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/M/yy h:mm a",
+    "shortDate": "d/M/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "el",
+  "localeID": "el",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-001.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-001.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-001.js
new file mode 100644
index 0000000..568867f
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-001.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-001",
+  "localeID": "en_001",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-150.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-150.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-150.js
new file mode 100644
index 0000000..0768eb8
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-150.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "dd MMM y h:mm:ss a",
+    "mediumDate": "dd MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/yy h:mm a",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "en-150",
+  "localeID": "en_150",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ag.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ag.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ag.js
new file mode 100644
index 0000000..756d6f2
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ag.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-ag",
+  "localeID": "en_AG",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ai.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ai.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ai.js
new file mode 100644
index 0000000..b400589
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ai.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-ai",
+  "localeID": "en_AI",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-as.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-as.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-as.js
new file mode 100644
index 0000000..4939e01
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-as.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, MMMM d, y",
+    "longDate": "MMMM d, y",
+    "medium": "MMM d, y h:mm:ss a",
+    "mediumDate": "MMM d, y",
+    "mediumTime": "h:mm:ss a",
+    "short": "M/d/yy h:mm a",
+    "shortDate": "M/d/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-as",
+  "localeID": "en_AS",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-au.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-au.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-au.js
new file mode 100644
index 0000000..7414041
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-au.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/MM/y h:mm a",
+    "shortDate": "d/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-au",
+  "localeID": "en_AU",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);



[08/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_is-is.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_is-is.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_is-is.js
new file mode 100644
index 0000000..a8266d1
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_is-is.js
@@ -0,0 +1,156 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+function getWT(v, f) {
+  if (f === 0) {
+    return {w: 0, t: 0};
+  }
+
+  while ((f % 10) === 0) {
+    f /= 10;
+    v--;
+  }
+
+  return {w: v, t: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "f.h.",
+      "e.h."
+    ],
+    "DAY": [
+      "sunnudagur",
+      "m\u00e1nudagur",
+      "\u00feri\u00f0judagur",
+      "mi\u00f0vikudagur",
+      "fimmtudagur",
+      "f\u00f6studagur",
+      "laugardagur"
+    ],
+    "ERANAMES": [
+      "fyrir Krist",
+      "eftir Krist"
+    ],
+    "ERAS": [
+      "f.Kr.",
+      "e.Kr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "jan\u00faar",
+      "febr\u00faar",
+      "mars",
+      "apr\u00edl",
+      "ma\u00ed",
+      "j\u00fan\u00ed",
+      "j\u00fal\u00ed",
+      "\u00e1g\u00fast",
+      "september",
+      "okt\u00f3ber",
+      "n\u00f3vember",
+      "desember"
+    ],
+    "SHORTDAY": [
+      "sun.",
+      "m\u00e1n.",
+      "\u00feri.",
+      "mi\u00f0.",
+      "fim.",
+      "f\u00f6s.",
+      "lau."
+    ],
+    "SHORTMONTH": [
+      "jan.",
+      "feb.",
+      "mar.",
+      "apr.",
+      "ma\u00ed",
+      "j\u00fan.",
+      "j\u00fal.",
+      "\u00e1g\u00fa.",
+      "sep.",
+      "okt.",
+      "n\u00f3v.",
+      "des."
+    ],
+    "STANDALONEMONTH": [
+      "jan\u00faar",
+      "febr\u00faar",
+      "mars",
+      "apr\u00edl",
+      "ma\u00ed",
+      "j\u00fan\u00ed",
+      "j\u00fal\u00ed",
+      "\u00e1g\u00fast",
+      "september",
+      "okt\u00f3ber",
+      "n\u00f3vember",
+      "desember"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "d. MMM y HH:mm:ss",
+    "mediumDate": "d. MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d.M.y HH:mm",
+    "shortDate": "d.M.y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "kr",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "is-is",
+  "localeID": "is_IS",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  var wt = getWT(vf.v, vf.f);  if (wt.t == 0 && i % 10 == 1 && i % 100 != 11 || wt.t != 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_is.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_is.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_is.js
new file mode 100644
index 0000000..8a602c2
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_is.js
@@ -0,0 +1,156 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+function getWT(v, f) {
+  if (f === 0) {
+    return {w: 0, t: 0};
+  }
+
+  while ((f % 10) === 0) {
+    f /= 10;
+    v--;
+  }
+
+  return {w: v, t: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "f.h.",
+      "e.h."
+    ],
+    "DAY": [
+      "sunnudagur",
+      "m\u00e1nudagur",
+      "\u00feri\u00f0judagur",
+      "mi\u00f0vikudagur",
+      "fimmtudagur",
+      "f\u00f6studagur",
+      "laugardagur"
+    ],
+    "ERANAMES": [
+      "fyrir Krist",
+      "eftir Krist"
+    ],
+    "ERAS": [
+      "f.Kr.",
+      "e.Kr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "jan\u00faar",
+      "febr\u00faar",
+      "mars",
+      "apr\u00edl",
+      "ma\u00ed",
+      "j\u00fan\u00ed",
+      "j\u00fal\u00ed",
+      "\u00e1g\u00fast",
+      "september",
+      "okt\u00f3ber",
+      "n\u00f3vember",
+      "desember"
+    ],
+    "SHORTDAY": [
+      "sun.",
+      "m\u00e1n.",
+      "\u00feri.",
+      "mi\u00f0.",
+      "fim.",
+      "f\u00f6s.",
+      "lau."
+    ],
+    "SHORTMONTH": [
+      "jan.",
+      "feb.",
+      "mar.",
+      "apr.",
+      "ma\u00ed",
+      "j\u00fan.",
+      "j\u00fal.",
+      "\u00e1g\u00fa.",
+      "sep.",
+      "okt.",
+      "n\u00f3v.",
+      "des."
+    ],
+    "STANDALONEMONTH": [
+      "jan\u00faar",
+      "febr\u00faar",
+      "mars",
+      "apr\u00edl",
+      "ma\u00ed",
+      "j\u00fan\u00ed",
+      "j\u00fal\u00ed",
+      "\u00e1g\u00fast",
+      "september",
+      "okt\u00f3ber",
+      "n\u00f3vember",
+      "desember"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "d. MMM y HH:mm:ss",
+    "mediumDate": "d. MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d.M.y HH:mm",
+    "shortDate": "d.M.y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "kr",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "is",
+  "localeID": "is",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  var wt = getWT(vf.v, vf.f);  if (wt.t == 0 && i % 10 == 1 && i % 100 != 11 || wt.t != 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_it-ch.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_it-ch.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_it-ch.js
new file mode 100644
index 0000000..7c82748
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_it-ch.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "domenica",
+      "luned\u00ec",
+      "marted\u00ec",
+      "mercoled\u00ec",
+      "gioved\u00ec",
+      "venerd\u00ec",
+      "sabato"
+    ],
+    "ERANAMES": [
+      "a.C.",
+      "d.C."
+    ],
+    "ERAS": [
+      "aC",
+      "dC"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "gennaio",
+      "febbraio",
+      "marzo",
+      "aprile",
+      "maggio",
+      "giugno",
+      "luglio",
+      "agosto",
+      "settembre",
+      "ottobre",
+      "novembre",
+      "dicembre"
+    ],
+    "SHORTDAY": [
+      "dom",
+      "lun",
+      "mar",
+      "mer",
+      "gio",
+      "ven",
+      "sab"
+    ],
+    "SHORTMONTH": [
+      "gen",
+      "feb",
+      "mar",
+      "apr",
+      "mag",
+      "giu",
+      "lug",
+      "ago",
+      "set",
+      "ott",
+      "nov",
+      "dic"
+    ],
+    "STANDALONEMONTH": [
+      "Gennaio",
+      "Febbraio",
+      "Marzo",
+      "Aprile",
+      "Maggio",
+      "Giugno",
+      "Luglio",
+      "Agosto",
+      "Settembre",
+      "Ottobre",
+      "Novembre",
+      "Dicembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d-MMM-y HH:mm:ss",
+    "mediumDate": "d-MMM-y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.yy HH:mm",
+    "shortDate": "dd.MM.yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "CHF",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": "'",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4-",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "it-ch",
+  "localeID": "it_CH",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_it-it.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_it-it.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_it-it.js
new file mode 100644
index 0000000..cc68abe
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_it-it.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "domenica",
+      "luned\u00ec",
+      "marted\u00ec",
+      "mercoled\u00ec",
+      "gioved\u00ec",
+      "venerd\u00ec",
+      "sabato"
+    ],
+    "ERANAMES": [
+      "a.C.",
+      "d.C."
+    ],
+    "ERAS": [
+      "aC",
+      "dC"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "gennaio",
+      "febbraio",
+      "marzo",
+      "aprile",
+      "maggio",
+      "giugno",
+      "luglio",
+      "agosto",
+      "settembre",
+      "ottobre",
+      "novembre",
+      "dicembre"
+    ],
+    "SHORTDAY": [
+      "dom",
+      "lun",
+      "mar",
+      "mer",
+      "gio",
+      "ven",
+      "sab"
+    ],
+    "SHORTMONTH": [
+      "gen",
+      "feb",
+      "mar",
+      "apr",
+      "mag",
+      "giu",
+      "lug",
+      "ago",
+      "set",
+      "ott",
+      "nov",
+      "dic"
+    ],
+    "STANDALONEMONTH": [
+      "Gennaio",
+      "Febbraio",
+      "Marzo",
+      "Aprile",
+      "Maggio",
+      "Giugno",
+      "Luglio",
+      "Agosto",
+      "Settembre",
+      "Ottobre",
+      "Novembre",
+      "Dicembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "dd MMM y HH:mm:ss",
+    "mediumDate": "dd MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/yy HH:mm",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "it-it",
+  "localeID": "it_IT",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_it-sm.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_it-sm.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_it-sm.js
new file mode 100644
index 0000000..49fe7c1
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_it-sm.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "domenica",
+      "luned\u00ec",
+      "marted\u00ec",
+      "mercoled\u00ec",
+      "gioved\u00ec",
+      "venerd\u00ec",
+      "sabato"
+    ],
+    "ERANAMES": [
+      "a.C.",
+      "d.C."
+    ],
+    "ERAS": [
+      "aC",
+      "dC"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "gennaio",
+      "febbraio",
+      "marzo",
+      "aprile",
+      "maggio",
+      "giugno",
+      "luglio",
+      "agosto",
+      "settembre",
+      "ottobre",
+      "novembre",
+      "dicembre"
+    ],
+    "SHORTDAY": [
+      "dom",
+      "lun",
+      "mar",
+      "mer",
+      "gio",
+      "ven",
+      "sab"
+    ],
+    "SHORTMONTH": [
+      "gen",
+      "feb",
+      "mar",
+      "apr",
+      "mag",
+      "giu",
+      "lug",
+      "ago",
+      "set",
+      "ott",
+      "nov",
+      "dic"
+    ],
+    "STANDALONEMONTH": [
+      "Gennaio",
+      "Febbraio",
+      "Marzo",
+      "Aprile",
+      "Maggio",
+      "Giugno",
+      "Luglio",
+      "Agosto",
+      "Settembre",
+      "Ottobre",
+      "Novembre",
+      "Dicembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "dd MMM y HH:mm:ss",
+    "mediumDate": "dd MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/yy HH:mm",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "it-sm",
+  "localeID": "it_SM",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_it.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_it.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_it.js
new file mode 100644
index 0000000..9b6a662
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_it.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "domenica",
+      "luned\u00ec",
+      "marted\u00ec",
+      "mercoled\u00ec",
+      "gioved\u00ec",
+      "venerd\u00ec",
+      "sabato"
+    ],
+    "ERANAMES": [
+      "a.C.",
+      "d.C."
+    ],
+    "ERAS": [
+      "aC",
+      "dC"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "gennaio",
+      "febbraio",
+      "marzo",
+      "aprile",
+      "maggio",
+      "giugno",
+      "luglio",
+      "agosto",
+      "settembre",
+      "ottobre",
+      "novembre",
+      "dicembre"
+    ],
+    "SHORTDAY": [
+      "dom",
+      "lun",
+      "mar",
+      "mer",
+      "gio",
+      "ven",
+      "sab"
+    ],
+    "SHORTMONTH": [
+      "gen",
+      "feb",
+      "mar",
+      "apr",
+      "mag",
+      "giu",
+      "lug",
+      "ago",
+      "set",
+      "ott",
+      "nov",
+      "dic"
+    ],
+    "STANDALONEMONTH": [
+      "Gennaio",
+      "Febbraio",
+      "Marzo",
+      "Aprile",
+      "Maggio",
+      "Giugno",
+      "Luglio",
+      "Agosto",
+      "Settembre",
+      "Ottobre",
+      "Novembre",
+      "Dicembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "dd MMM y HH:mm:ss",
+    "mediumDate": "dd MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/yy HH:mm",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "it",
+  "localeID": "it",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_iw.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_iw.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_iw.js
new file mode 100644
index 0000000..d4e5cfa
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_iw.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u05dc\u05e4\u05e0\u05d4\u05f4\u05e6",
+      "\u05d0\u05d7\u05d4\u05f4\u05e6"
+    ],
+    "DAY": [
+      "\u05d9\u05d5\u05dd \u05e8\u05d0\u05e9\u05d5\u05df",
+      "\u05d9\u05d5\u05dd \u05e9\u05e0\u05d9",
+      "\u05d9\u05d5\u05dd \u05e9\u05dc\u05d9\u05e9\u05d9",
+      "\u05d9\u05d5\u05dd \u05e8\u05d1\u05d9\u05e2\u05d9",
+      "\u05d9\u05d5\u05dd \u05d7\u05de\u05d9\u05e9\u05d9",
+      "\u05d9\u05d5\u05dd \u05e9\u05d9\u05e9\u05d9",
+      "\u05d9\u05d5\u05dd \u05e9\u05d1\u05ea"
+    ],
+    "ERANAMES": [
+      "\u05dc\u05e4\u05e0\u05d9 \u05d4\u05e1\u05e4\u05d9\u05e8\u05d4",
+      "\u05dc\u05e1\u05e4\u05d9\u05e8\u05d4"
+    ],
+    "ERAS": [
+      "\u05dc\u05e4\u05e0\u05d4\u05f4\u05e1",
+      "\u05dc\u05e1\u05e4\u05d9\u05e8\u05d4"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u05d9\u05e0\u05d5\u05d0\u05e8",
+      "\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8",
+      "\u05de\u05e8\u05e5",
+      "\u05d0\u05e4\u05e8\u05d9\u05dc",
+      "\u05de\u05d0\u05d9",
+      "\u05d9\u05d5\u05e0\u05d9",
+      "\u05d9\u05d5\u05dc\u05d9",
+      "\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8",
+      "\u05e1\u05e4\u05d8\u05de\u05d1\u05e8",
+      "\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8",
+      "\u05e0\u05d5\u05d1\u05de\u05d1\u05e8",
+      "\u05d3\u05e6\u05de\u05d1\u05e8"
+    ],
+    "SHORTDAY": [
+      "\u05d9\u05d5\u05dd \u05d0\u05f3",
+      "\u05d9\u05d5\u05dd \u05d1\u05f3",
+      "\u05d9\u05d5\u05dd \u05d2\u05f3",
+      "\u05d9\u05d5\u05dd \u05d3\u05f3",
+      "\u05d9\u05d5\u05dd \u05d4\u05f3",
+      "\u05d9\u05d5\u05dd \u05d5\u05f3",
+      "\u05e9\u05d1\u05ea"
+    ],
+    "SHORTMONTH": [
+      "\u05d9\u05e0\u05d5\u05f3",
+      "\u05e4\u05d1\u05e8\u05f3",
+      "\u05de\u05e8\u05e5",
+      "\u05d0\u05e4\u05e8\u05f3",
+      "\u05de\u05d0\u05d9",
+      "\u05d9\u05d5\u05e0\u05d9",
+      "\u05d9\u05d5\u05dc\u05d9",
+      "\u05d0\u05d5\u05d2\u05f3",
+      "\u05e1\u05e4\u05d8\u05f3",
+      "\u05d0\u05d5\u05e7\u05f3",
+      "\u05e0\u05d5\u05d1\u05f3",
+      "\u05d3\u05e6\u05de\u05f3"
+    ],
+    "STANDALONEMONTH": [
+      "\u05d9\u05e0\u05d5\u05d0\u05e8",
+      "\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8",
+      "\u05de\u05e8\u05e5",
+      "\u05d0\u05e4\u05e8\u05d9\u05dc",
+      "\u05de\u05d0\u05d9",
+      "\u05d9\u05d5\u05e0\u05d9",
+      "\u05d9\u05d5\u05dc\u05d9",
+      "\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8",
+      "\u05e1\u05e4\u05d8\u05de\u05d1\u05e8",
+      "\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8",
+      "\u05e0\u05d5\u05d1\u05de\u05d1\u05e8",
+      "\u05d3\u05e6\u05de\u05d1\u05e8"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      5
+    ],
+    "fullDate": "EEEE, d \u05d1MMMM y",
+    "longDate": "d \u05d1MMMM y",
+    "medium": "d \u05d1MMM y H:mm:ss",
+    "mediumDate": "d \u05d1MMM y",
+    "mediumTime": "H:mm:ss",
+    "short": "d.M.y H:mm",
+    "shortDate": "d.M.y",
+    "shortTime": "H:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20aa",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "iw",
+  "localeID": "iw",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  if (i == 2 && vf.v == 0) {    return PLURAL_CATEGORY.TWO;  }  if (vf.v == 0 && (n < 0 || n > 10) && n % 10 == 0) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ja-jp.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ja-jp.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ja-jp.js
new file mode 100644
index 0000000..daaede0
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ja-jp.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u5348\u524d",
+      "\u5348\u5f8c"
+    ],
+    "DAY": [
+      "\u65e5\u66dc\u65e5",
+      "\u6708\u66dc\u65e5",
+      "\u706b\u66dc\u65e5",
+      "\u6c34\u66dc\u65e5",
+      "\u6728\u66dc\u65e5",
+      "\u91d1\u66dc\u65e5",
+      "\u571f\u66dc\u65e5"
+    ],
+    "ERANAMES": [
+      "\u7d00\u5143\u524d",
+      "\u897f\u66a6"
+    ],
+    "ERAS": [
+      "\u7d00\u5143\u524d",
+      "\u897f\u66a6"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "1\u6708",
+      "2\u6708",
+      "3\u6708",
+      "4\u6708",
+      "5\u6708",
+      "6\u6708",
+      "7\u6708",
+      "8\u6708",
+      "9\u6708",
+      "10\u6708",
+      "11\u6708",
+      "12\u6708"
+    ],
+    "SHORTDAY": [
+      "\u65e5",
+      "\u6708",
+      "\u706b",
+      "\u6c34",
+      "\u6728",
+      "\u91d1",
+      "\u571f"
+    ],
+    "SHORTMONTH": [
+      "1\u6708",
+      "2\u6708",
+      "3\u6708",
+      "4\u6708",
+      "5\u6708",
+      "6\u6708",
+      "7\u6708",
+      "8\u6708",
+      "9\u6708",
+      "10\u6708",
+      "11\u6708",
+      "12\u6708"
+    ],
+    "STANDALONEMONTH": [
+      "1\u6708",
+      "2\u6708",
+      "3\u6708",
+      "4\u6708",
+      "5\u6708",
+      "6\u6708",
+      "7\u6708",
+      "8\u6708",
+      "9\u6708",
+      "10\u6708",
+      "11\u6708",
+      "12\u6708"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "y\u5e74M\u6708d\u65e5EEEE",
+    "longDate": "y\u5e74M\u6708d\u65e5",
+    "medium": "y/MM/dd H:mm:ss",
+    "mediumDate": "y/MM/dd",
+    "mediumTime": "H:mm:ss",
+    "short": "y/MM/dd H:mm",
+    "shortDate": "y/MM/dd",
+    "shortTime": "H:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u00a5",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ja-jp",
+  "localeID": "ja_JP",
+  "pluralCat": function(n, opt_precision) {  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ja.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ja.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ja.js
new file mode 100644
index 0000000..f528314
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ja.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u5348\u524d",
+      "\u5348\u5f8c"
+    ],
+    "DAY": [
+      "\u65e5\u66dc\u65e5",
+      "\u6708\u66dc\u65e5",
+      "\u706b\u66dc\u65e5",
+      "\u6c34\u66dc\u65e5",
+      "\u6728\u66dc\u65e5",
+      "\u91d1\u66dc\u65e5",
+      "\u571f\u66dc\u65e5"
+    ],
+    "ERANAMES": [
+      "\u7d00\u5143\u524d",
+      "\u897f\u66a6"
+    ],
+    "ERAS": [
+      "\u7d00\u5143\u524d",
+      "\u897f\u66a6"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "1\u6708",
+      "2\u6708",
+      "3\u6708",
+      "4\u6708",
+      "5\u6708",
+      "6\u6708",
+      "7\u6708",
+      "8\u6708",
+      "9\u6708",
+      "10\u6708",
+      "11\u6708",
+      "12\u6708"
+    ],
+    "SHORTDAY": [
+      "\u65e5",
+      "\u6708",
+      "\u706b",
+      "\u6c34",
+      "\u6728",
+      "\u91d1",
+      "\u571f"
+    ],
+    "SHORTMONTH": [
+      "1\u6708",
+      "2\u6708",
+      "3\u6708",
+      "4\u6708",
+      "5\u6708",
+      "6\u6708",
+      "7\u6708",
+      "8\u6708",
+      "9\u6708",
+      "10\u6708",
+      "11\u6708",
+      "12\u6708"
+    ],
+    "STANDALONEMONTH": [
+      "1\u6708",
+      "2\u6708",
+      "3\u6708",
+      "4\u6708",
+      "5\u6708",
+      "6\u6708",
+      "7\u6708",
+      "8\u6708",
+      "9\u6708",
+      "10\u6708",
+      "11\u6708",
+      "12\u6708"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "y\u5e74M\u6708d\u65e5EEEE",
+    "longDate": "y\u5e74M\u6708d\u65e5",
+    "medium": "y/MM/dd H:mm:ss",
+    "mediumDate": "y/MM/dd",
+    "mediumTime": "H:mm:ss",
+    "short": "y/MM/dd H:mm",
+    "shortDate": "y/MM/dd",
+    "shortTime": "H:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u00a5",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ja",
+  "localeID": "ja",
+  "pluralCat": function(n, opt_precision) {  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_jgo-cm.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_jgo-cm.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_jgo-cm.js
new file mode 100644
index 0000000..0365a68
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_jgo-cm.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "mba\ua78cmba\ua78c",
+      "\u014bka mb\u0254\u0301t nji"
+    ],
+    "DAY": [
+      "S\u0254\u0301ndi",
+      "M\u0254\u0301ndi",
+      "\u00c1pta M\u0254\u0301ndi",
+      "W\u025b\u0301n\u025bs\u025bd\u025b",
+      "T\u0254\u0301s\u025bd\u025b",
+      "F\u025bl\u00e2y\u025bd\u025b",
+      "S\u00e1sid\u025b"
+    ],
+    "ERANAMES": [
+      "ts\u025btts\u025bt m\u025b\u014bgu\ua78c mi \u025b\u0301 l\u025b\u025bn\u025b K\u025bl\u00eds\u025bt\u0254 g\u0254 \u0144\u0254\u0301",
+      "ts\u025btts\u025bt m\u025b\u014bgu\ua78c mi \u025b\u0301 f\u00fan\u025b K\u025bl\u00eds\u025bt\u0254 t\u0254\u0301 m\u0254\u0301"
+    ],
+    "ERAS": [
+      "ts\u025btts\u025bt m\u025b\u014bgu\ua78c mi \u025b\u0301 l\u025b\u025bn\u025b K\u025bl\u00eds\u025bt\u0254 g\u0254 \u0144\u0254\u0301",
+      "ts\u025btts\u025bt m\u025b\u014bgu\ua78c mi \u025b\u0301 f\u00fan\u025b K\u025bl\u00eds\u025bt\u0254 t\u0254\u0301 m\u0254\u0301"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Ndu\u014bmbi Sa\u014b",
+      "P\u025bsa\u014b P\u025b\u0301p\u00e1",
+      "P\u025bsa\u014b P\u025b\u0301t\u00e1t",
+      "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301kwa",
+      "P\u025bsa\u014b Pataa",
+      "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301nt\u00fak\u00fa",
+      "P\u025bsa\u014b Saamb\u00e1",
+      "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301f\u0254m",
+      "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301pf\u00fa\ua78b\u00fa",
+      "P\u025bsa\u014b N\u025bg\u025b\u0301m",
+      "P\u025bsa\u014b Nts\u0254\u030cpm\u0254\u0301",
+      "P\u025bsa\u014b Nts\u0254\u030cpp\u00e1"
+    ],
+    "SHORTDAY": [
+      "S\u0254\u0301ndi",
+      "M\u0254\u0301ndi",
+      "\u00c1pta M\u0254\u0301ndi",
+      "W\u025b\u0301n\u025bs\u025bd\u025b",
+      "T\u0254\u0301s\u025bd\u025b",
+      "F\u025bl\u00e2y\u025bd\u025b",
+      "S\u00e1sid\u025b"
+    ],
+    "SHORTMONTH": [
+      "Ndu\u014bmbi Sa\u014b",
+      "P\u025bsa\u014b P\u025b\u0301p\u00e1",
+      "P\u025bsa\u014b P\u025b\u0301t\u00e1t",
+      "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301kwa",
+      "P\u025bsa\u014b Pataa",
+      "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301nt\u00fak\u00fa",
+      "P\u025bsa\u014b Saamb\u00e1",
+      "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301f\u0254m",
+      "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301pf\u00fa\ua78b\u00fa",
+      "P\u025bsa\u014b N\u025bg\u025b\u0301m",
+      "P\u025bsa\u014b Nts\u0254\u030cpm\u0254\u0301",
+      "P\u025bsa\u014b Nts\u0254\u030cpp\u00e1"
+    ],
+    "STANDALONEMONTH": [
+      "Ndu\u014bmbi Sa\u014b",
+      "P\u025bsa\u014b P\u025b\u0301p\u00e1",
+      "P\u025bsa\u014b P\u025b\u0301t\u00e1t",
+      "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301kwa",
+      "P\u025bsa\u014b Pataa",
+      "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301nt\u00fak\u00fa",
+      "P\u025bsa\u014b Saamb\u00e1",
+      "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301f\u0254m",
+      "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301pf\u00fa\ua78b\u00fa",
+      "P\u025bsa\u014b N\u025bg\u025b\u0301m",
+      "P\u025bsa\u014b Nts\u0254\u030cpm\u0254\u0301",
+      "P\u025bsa\u014b Nts\u0254\u030cpp\u00e1"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, y MMMM dd",
+    "longDate": "y MMMM d",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "y-MM-dd HH:mm",
+    "shortDate": "y-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "jgo-cm",
+  "localeID": "jgo_CM",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_jgo.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_jgo.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_jgo.js
new file mode 100644
index 0000000..a50b9b8
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_jgo.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "mba\ua78cmba\ua78c",
+      "\u014bka mb\u0254\u0301t nji"
+    ],
+    "DAY": [
+      "S\u0254\u0301ndi",
+      "M\u0254\u0301ndi",
+      "\u00c1pta M\u0254\u0301ndi",
+      "W\u025b\u0301n\u025bs\u025bd\u025b",
+      "T\u0254\u0301s\u025bd\u025b",
+      "F\u025bl\u00e2y\u025bd\u025b",
+      "S\u00e1sid\u025b"
+    ],
+    "ERANAMES": [
+      "ts\u025btts\u025bt m\u025b\u014bgu\ua78c mi \u025b\u0301 l\u025b\u025bn\u025b K\u025bl\u00eds\u025bt\u0254 g\u0254 \u0144\u0254\u0301",
+      "ts\u025btts\u025bt m\u025b\u014bgu\ua78c mi \u025b\u0301 f\u00fan\u025b K\u025bl\u00eds\u025bt\u0254 t\u0254\u0301 m\u0254\u0301"
+    ],
+    "ERAS": [
+      "ts\u025btts\u025bt m\u025b\u014bgu\ua78c mi \u025b\u0301 l\u025b\u025bn\u025b K\u025bl\u00eds\u025bt\u0254 g\u0254 \u0144\u0254\u0301",
+      "ts\u025btts\u025bt m\u025b\u014bgu\ua78c mi \u025b\u0301 f\u00fan\u025b K\u025bl\u00eds\u025bt\u0254 t\u0254\u0301 m\u0254\u0301"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Ndu\u014bmbi Sa\u014b",
+      "P\u025bsa\u014b P\u025b\u0301p\u00e1",
+      "P\u025bsa\u014b P\u025b\u0301t\u00e1t",
+      "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301kwa",
+      "P\u025bsa\u014b Pataa",
+      "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301nt\u00fak\u00fa",
+      "P\u025bsa\u014b Saamb\u00e1",
+      "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301f\u0254m",
+      "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301pf\u00fa\ua78b\u00fa",
+      "P\u025bsa\u014b N\u025bg\u025b\u0301m",
+      "P\u025bsa\u014b Nts\u0254\u030cpm\u0254\u0301",
+      "P\u025bsa\u014b Nts\u0254\u030cpp\u00e1"
+    ],
+    "SHORTDAY": [
+      "S\u0254\u0301ndi",
+      "M\u0254\u0301ndi",
+      "\u00c1pta M\u0254\u0301ndi",
+      "W\u025b\u0301n\u025bs\u025bd\u025b",
+      "T\u0254\u0301s\u025bd\u025b",
+      "F\u025bl\u00e2y\u025bd\u025b",
+      "S\u00e1sid\u025b"
+    ],
+    "SHORTMONTH": [
+      "Ndu\u014bmbi Sa\u014b",
+      "P\u025bsa\u014b P\u025b\u0301p\u00e1",
+      "P\u025bsa\u014b P\u025b\u0301t\u00e1t",
+      "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301kwa",
+      "P\u025bsa\u014b Pataa",
+      "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301nt\u00fak\u00fa",
+      "P\u025bsa\u014b Saamb\u00e1",
+      "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301f\u0254m",
+      "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301pf\u00fa\ua78b\u00fa",
+      "P\u025bsa\u014b N\u025bg\u025b\u0301m",
+      "P\u025bsa\u014b Nts\u0254\u030cpm\u0254\u0301",
+      "P\u025bsa\u014b Nts\u0254\u030cpp\u00e1"
+    ],
+    "STANDALONEMONTH": [
+      "Ndu\u014bmbi Sa\u014b",
+      "P\u025bsa\u014b P\u025b\u0301p\u00e1",
+      "P\u025bsa\u014b P\u025b\u0301t\u00e1t",
+      "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301kwa",
+      "P\u025bsa\u014b Pataa",
+      "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301nt\u00fak\u00fa",
+      "P\u025bsa\u014b Saamb\u00e1",
+      "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301f\u0254m",
+      "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301pf\u00fa\ua78b\u00fa",
+      "P\u025bsa\u014b N\u025bg\u025b\u0301m",
+      "P\u025bsa\u014b Nts\u0254\u030cpm\u0254\u0301",
+      "P\u025bsa\u014b Nts\u0254\u030cpp\u00e1"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, y MMMM dd",
+    "longDate": "y MMMM d",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "y-MM-dd HH:mm",
+    "shortDate": "y-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "jgo",
+  "localeID": "jgo",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_jmc-tz.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_jmc-tz.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_jmc-tz.js
new file mode 100644
index 0000000..d8b9a39
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_jmc-tz.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "utuko",
+      "kyiukonyi"
+    ],
+    "DAY": [
+      "Jumapilyi",
+      "Jumatatuu",
+      "Jumanne",
+      "Jumatanu",
+      "Alhamisi",
+      "Ijumaa",
+      "Jumamosi"
+    ],
+    "ERANAMES": [
+      "Kabla ya Kristu",
+      "Baada ya Kristu"
+    ],
+    "ERAS": [
+      "KK",
+      "BK"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Januari",
+      "Februari",
+      "Machi",
+      "Aprilyi",
+      "Mei",
+      "Junyi",
+      "Julyai",
+      "Agusti",
+      "Septemba",
+      "Oktoba",
+      "Novemba",
+      "Desemba"
+    ],
+    "SHORTDAY": [
+      "Jpi",
+      "Jtt",
+      "Jnn",
+      "Jtn",
+      "Alh",
+      "Iju",
+      "Jmo"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mac",
+      "Apr",
+      "Mei",
+      "Jun",
+      "Jul",
+      "Ago",
+      "Sep",
+      "Okt",
+      "Nov",
+      "Des"
+    ],
+    "STANDALONEMONTH": [
+      "Januari",
+      "Februari",
+      "Machi",
+      "Aprilyi",
+      "Mei",
+      "Junyi",
+      "Julyai",
+      "Agusti",
+      "Septemba",
+      "Oktoba",
+      "Novemba",
+      "Desemba"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "TSh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "jmc-tz",
+  "localeID": "jmc_TZ",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_jmc.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_jmc.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_jmc.js
new file mode 100644
index 0000000..f081fdd
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_jmc.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "utuko",
+      "kyiukonyi"
+    ],
+    "DAY": [
+      "Jumapilyi",
+      "Jumatatuu",
+      "Jumanne",
+      "Jumatanu",
+      "Alhamisi",
+      "Ijumaa",
+      "Jumamosi"
+    ],
+    "ERANAMES": [
+      "Kabla ya Kristu",
+      "Baada ya Kristu"
+    ],
+    "ERAS": [
+      "KK",
+      "BK"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Januari",
+      "Februari",
+      "Machi",
+      "Aprilyi",
+      "Mei",
+      "Junyi",
+      "Julyai",
+      "Agusti",
+      "Septemba",
+      "Oktoba",
+      "Novemba",
+      "Desemba"
+    ],
+    "SHORTDAY": [
+      "Jpi",
+      "Jtt",
+      "Jnn",
+      "Jtn",
+      "Alh",
+      "Iju",
+      "Jmo"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mac",
+      "Apr",
+      "Mei",
+      "Jun",
+      "Jul",
+      "Ago",
+      "Sep",
+      "Okt",
+      "Nov",
+      "Des"
+    ],
+    "STANDALONEMONTH": [
+      "Januari",
+      "Februari",
+      "Machi",
+      "Aprilyi",
+      "Mei",
+      "Junyi",
+      "Julyai",
+      "Agusti",
+      "Septemba",
+      "Oktoba",
+      "Novemba",
+      "Desemba"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "TSh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "jmc",
+  "localeID": "jmc",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ka-ge.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ka-ge.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ka-ge.js
new file mode 100644
index 0000000..24894af
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ka-ge.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "\u10d9\u10d5\u10d8\u10e0\u10d0",
+      "\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8",
+      "\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8",
+      "\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8",
+      "\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8",
+      "\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10d8",
+      "\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8"
+    ],
+    "ERANAMES": [
+      "\u10eb\u10d5\u10d4\u10da\u10d8 \u10ec\u10d4\u10da\u10d7\u10d0\u10e6\u10e0\u10d8\u10ea\u10ee\u10d5\u10d8\u10d7",
+      "\u10d0\u10ee\u10d0\u10da\u10d8 \u10ec\u10d4\u10da\u10d7\u10d0\u10e6\u10e0\u10d8\u10ea\u10ee\u10d5\u10d8\u10d7"
+    ],
+    "ERAS": [
+      "\u10eb\u10d5. \u10ec.",
+      "\u10d0\u10ee. \u10ec."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10d8",
+      "\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10d8",
+      "\u10db\u10d0\u10e0\u10e2\u10d8",
+      "\u10d0\u10de\u10e0\u10d8\u10da\u10d8",
+      "\u10db\u10d0\u10d8\u10e1\u10d8",
+      "\u10d8\u10d5\u10dc\u10d8\u10e1\u10d8",
+      "\u10d8\u10d5\u10da\u10d8\u10e1\u10d8",
+      "\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10dd",
+      "\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10d8",
+      "\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10d8",
+      "\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10d8",
+      "\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10d8"
+    ],
+    "SHORTDAY": [
+      "\u10d9\u10d5\u10d8",
+      "\u10dd\u10e0\u10e8",
+      "\u10e1\u10d0\u10db",
+      "\u10dd\u10d7\u10ee",
+      "\u10ee\u10e3\u10d7",
+      "\u10de\u10d0\u10e0",
+      "\u10e8\u10d0\u10d1"
+    ],
+    "SHORTMONTH": [
+      "\u10d8\u10d0\u10dc",
+      "\u10d7\u10d4\u10d1",
+      "\u10db\u10d0\u10e0",
+      "\u10d0\u10de\u10e0",
+      "\u10db\u10d0\u10d8",
+      "\u10d8\u10d5\u10dc",
+      "\u10d8\u10d5\u10da",
+      "\u10d0\u10d2\u10d5",
+      "\u10e1\u10d4\u10e5",
+      "\u10dd\u10e5\u10e2",
+      "\u10dc\u10dd\u10d4",
+      "\u10d3\u10d4\u10d9"
+    ],
+    "STANDALONEMONTH": [
+      "\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10d8",
+      "\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10d8",
+      "\u10db\u10d0\u10e0\u10e2\u10d8",
+      "\u10d0\u10de\u10e0\u10d8\u10da\u10d8",
+      "\u10db\u10d0\u10d8\u10e1\u10d8",
+      "\u10d8\u10d5\u10dc\u10d8\u10e1\u10d8",
+      "\u10d8\u10d5\u10da\u10d8\u10e1\u10d8",
+      "\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10dd",
+      "\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10d8",
+      "\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10d8",
+      "\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10d8",
+      "\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10d8"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, dd MMMM, y",
+    "longDate": "d MMMM, y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.yy HH:mm",
+    "shortDate": "dd.MM.yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "GEL",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "ka-ge",
+  "localeID": "ka_GE",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ka.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ka.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ka.js
new file mode 100644
index 0000000..f70ade8
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ka.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "\u10d9\u10d5\u10d8\u10e0\u10d0",
+      "\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8",
+      "\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8",
+      "\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8",
+      "\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8",
+      "\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10d8",
+      "\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8"
+    ],
+    "ERANAMES": [
+      "\u10eb\u10d5\u10d4\u10da\u10d8 \u10ec\u10d4\u10da\u10d7\u10d0\u10e6\u10e0\u10d8\u10ea\u10ee\u10d5\u10d8\u10d7",
+      "\u10d0\u10ee\u10d0\u10da\u10d8 \u10ec\u10d4\u10da\u10d7\u10d0\u10e6\u10e0\u10d8\u10ea\u10ee\u10d5\u10d8\u10d7"
+    ],
+    "ERAS": [
+      "\u10eb\u10d5. \u10ec.",
+      "\u10d0\u10ee. \u10ec."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10d8",
+      "\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10d8",
+      "\u10db\u10d0\u10e0\u10e2\u10d8",
+      "\u10d0\u10de\u10e0\u10d8\u10da\u10d8",
+      "\u10db\u10d0\u10d8\u10e1\u10d8",
+      "\u10d8\u10d5\u10dc\u10d8\u10e1\u10d8",
+      "\u10d8\u10d5\u10da\u10d8\u10e1\u10d8",
+      "\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10dd",
+      "\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10d8",
+      "\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10d8",
+      "\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10d8",
+      "\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10d8"
+    ],
+    "SHORTDAY": [
+      "\u10d9\u10d5\u10d8",
+      "\u10dd\u10e0\u10e8",
+      "\u10e1\u10d0\u10db",
+      "\u10dd\u10d7\u10ee",
+      "\u10ee\u10e3\u10d7",
+      "\u10de\u10d0\u10e0",
+      "\u10e8\u10d0\u10d1"
+    ],
+    "SHORTMONTH": [
+      "\u10d8\u10d0\u10dc",
+      "\u10d7\u10d4\u10d1",
+      "\u10db\u10d0\u10e0",
+      "\u10d0\u10de\u10e0",
+      "\u10db\u10d0\u10d8",
+      "\u10d8\u10d5\u10dc",
+      "\u10d8\u10d5\u10da",
+      "\u10d0\u10d2\u10d5",
+      "\u10e1\u10d4\u10e5",
+      "\u10dd\u10e5\u10e2",
+      "\u10dc\u10dd\u10d4",
+      "\u10d3\u10d4\u10d9"
+    ],
+    "STANDALONEMONTH": [
+      "\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10d8",
+      "\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10d8",
+      "\u10db\u10d0\u10e0\u10e2\u10d8",
+      "\u10d0\u10de\u10e0\u10d8\u10da\u10d8",
+      "\u10db\u10d0\u10d8\u10e1\u10d8",
+      "\u10d8\u10d5\u10dc\u10d8\u10e1\u10d8",
+      "\u10d8\u10d5\u10da\u10d8\u10e1\u10d8",
+      "\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10dd",
+      "\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10d8",
+      "\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10d8",
+      "\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10d8",
+      "\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10d8"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, dd MMMM, y",
+    "longDate": "d MMMM, y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.yy HH:mm",
+    "shortDate": "dd.MM.yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "GEL",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "ka",
+  "localeID": "ka",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kab-dz.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kab-dz.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kab-dz.js
new file mode 100644
index 0000000..feb2436
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kab-dz.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "n tufat",
+      "n tmeddit"
+    ],
+    "DAY": [
+      "Yanass",
+      "Sanass",
+      "Kra\u1e0dass",
+      "Ku\u1e93ass",
+      "Samass",
+      "S\u1e0disass",
+      "Sayass"
+    ],
+    "ERANAMES": [
+      "send talalit n \u0190isa",
+      "seld talalit n \u0190isa"
+    ],
+    "ERAS": [
+      "snd. T.\u0190",
+      "sld. T.\u0190"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Yennayer",
+      "Fu\u1e5bar",
+      "Me\u0263res",
+      "Yebrir",
+      "Mayyu",
+      "Yunyu",
+      "Yulyu",
+      "\u0194uct",
+      "Ctembe\u1e5b",
+      "Tube\u1e5b",
+      "Nunembe\u1e5b",
+      "Du\u01e7embe\u1e5b"
+    ],
+    "SHORTDAY": [
+      "Yan",
+      "San",
+      "Kra\u1e0d",
+      "Ku\u1e93",
+      "Sam",
+      "S\u1e0dis",
+      "Say"
+    ],
+    "SHORTMONTH": [
+      "Yen",
+      "Fur",
+      "Me\u0263",
+      "Yeb",
+      "May",
+      "Yun",
+      "Yul",
+      "\u0194uc",
+      "Cte",
+      "Tub",
+      "Nun",
+      "Du\u01e7"
+    ],
+    "STANDALONEMONTH": [
+      "Yennayer",
+      "Fu\u1e5bar",
+      "Me\u0263res",
+      "Yebrir",
+      "Mayyu",
+      "Yunyu",
+      "Yulyu",
+      "\u0194uct",
+      "Ctembe\u1e5b",
+      "Tube\u1e5b",
+      "Nunembe\u1e5b",
+      "Du\u01e7embe\u1e5b"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "din",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a4"
+      }
+    ]
+  },
+  "id": "kab-dz",
+  "localeID": "kab_DZ",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kab.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kab.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kab.js
new file mode 100644
index 0000000..0c07e72
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kab.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "n tufat",
+      "n tmeddit"
+    ],
+    "DAY": [
+      "Yanass",
+      "Sanass",
+      "Kra\u1e0dass",
+      "Ku\u1e93ass",
+      "Samass",
+      "S\u1e0disass",
+      "Sayass"
+    ],
+    "ERANAMES": [
+      "send talalit n \u0190isa",
+      "seld talalit n \u0190isa"
+    ],
+    "ERAS": [
+      "snd. T.\u0190",
+      "sld. T.\u0190"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Yennayer",
+      "Fu\u1e5bar",
+      "Me\u0263res",
+      "Yebrir",
+      "Mayyu",
+      "Yunyu",
+      "Yulyu",
+      "\u0194uct",
+      "Ctembe\u1e5b",
+      "Tube\u1e5b",
+      "Nunembe\u1e5b",
+      "Du\u01e7embe\u1e5b"
+    ],
+    "SHORTDAY": [
+      "Yan",
+      "San",
+      "Kra\u1e0d",
+      "Ku\u1e93",
+      "Sam",
+      "S\u1e0dis",
+      "Say"
+    ],
+    "SHORTMONTH": [
+      "Yen",
+      "Fur",
+      "Me\u0263",
+      "Yeb",
+      "May",
+      "Yun",
+      "Yul",
+      "\u0194uc",
+      "Cte",
+      "Tub",
+      "Nun",
+      "Du\u01e7"
+    ],
+    "STANDALONEMONTH": [
+      "Yennayer",
+      "Fu\u1e5bar",
+      "Me\u0263res",
+      "Yebrir",
+      "Mayyu",
+      "Yunyu",
+      "Yulyu",
+      "\u0194uct",
+      "Ctembe\u1e5b",
+      "Tube\u1e5b",
+      "Nunembe\u1e5b",
+      "Du\u01e7embe\u1e5b"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "din",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a4"
+      }
+    ]
+  },
+  "id": "kab",
+  "localeID": "kab",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kam-ke.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kam-ke.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kam-ke.js
new file mode 100644
index 0000000..4b8adc5
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kam-ke.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0128yakwakya",
+      "\u0128yaw\u0129oo"
+    ],
+    "DAY": [
+      "Wa kyumwa",
+      "Wa kwamb\u0129l\u0129lya",
+      "Wa kel\u0129",
+      "Wa katat\u0169",
+      "Wa kana",
+      "Wa katano",
+      "Wa thanthat\u0169"
+    ],
+    "ERANAMES": [
+      "Mbee wa Yes\u0169",
+      "\u0128tina wa Yes\u0169"
+    ],
+    "ERAS": [
+      "MY",
+      "IY"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Mwai wa mbee",
+      "Mwai wa kel\u0129",
+      "Mwai wa katat\u0169",
+      "Mwai wa kana",
+      "Mwai wa katano",
+      "Mwai wa thanthat\u0169",
+      "Mwai wa muonza",
+      "Mwai wa nyaanya",
+      "Mwai wa kenda",
+      "Mwai wa \u0129kumi",
+      "Mwai wa \u0129kumi na \u0129mwe",
+      "Mwai wa \u0129kumi na il\u0129"
+    ],
+    "SHORTDAY": [
+      "Wky",
+      "Wkw",
+      "Wkl",
+      "Wt\u0169",
+      "Wkn",
+      "Wtn",
+      "Wth"
+    ],
+    "SHORTMONTH": [
+      "Mbe",
+      "Kel",
+      "Kt\u0169",
+      "Kan",
+      "Ktn",
+      "Tha",
+      "Moo",
+      "Nya",
+      "Knd",
+      "\u0128ku",
+      "\u0128km",
+      "\u0128kl"
+    ],
+    "STANDALONEMONTH": [
+      "Mwai wa mbee",
+      "Mwai wa kel\u0129",
+      "Mwai wa katat\u0169",
+      "Mwai wa kana",
+      "Mwai wa katano",
+      "Mwai wa thanthat\u0169",
+      "Mwai wa muonza",
+      "Mwai wa nyaanya",
+      "Mwai wa kenda",
+      "Mwai wa \u0129kumi",
+      "Mwai wa \u0129kumi na \u0129mwe",
+      "Mwai wa \u0129kumi na il\u0129"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Ksh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "kam-ke",
+  "localeID": "kam_KE",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kam.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kam.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kam.js
new file mode 100644
index 0000000..ad16d67
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kam.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0128yakwakya",
+      "\u0128yaw\u0129oo"
+    ],
+    "DAY": [
+      "Wa kyumwa",
+      "Wa kwamb\u0129l\u0129lya",
+      "Wa kel\u0129",
+      "Wa katat\u0169",
+      "Wa kana",
+      "Wa katano",
+      "Wa thanthat\u0169"
+    ],
+    "ERANAMES": [
+      "Mbee wa Yes\u0169",
+      "\u0128tina wa Yes\u0169"
+    ],
+    "ERAS": [
+      "MY",
+      "IY"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Mwai wa mbee",
+      "Mwai wa kel\u0129",
+      "Mwai wa katat\u0169",
+      "Mwai wa kana",
+      "Mwai wa katano",
+      "Mwai wa thanthat\u0169",
+      "Mwai wa muonza",
+      "Mwai wa nyaanya",
+      "Mwai wa kenda",
+      "Mwai wa \u0129kumi",
+      "Mwai wa \u0129kumi na \u0129mwe",
+      "Mwai wa \u0129kumi na il\u0129"
+    ],
+    "SHORTDAY": [
+      "Wky",
+      "Wkw",
+      "Wkl",
+      "Wt\u0169",
+      "Wkn",
+      "Wtn",
+      "Wth"
+    ],
+    "SHORTMONTH": [
+      "Mbe",
+      "Kel",
+      "Kt\u0169",
+      "Kan",
+      "Ktn",
+      "Tha",
+      "Moo",
+      "Nya",
+      "Knd",
+      "\u0128ku",
+      "\u0128km",
+      "\u0128kl"
+    ],
+    "STANDALONEMONTH": [
+      "Mwai wa mbee",
+      "Mwai wa kel\u0129",
+      "Mwai wa katat\u0169",
+      "Mwai wa kana",
+      "Mwai wa katano",
+      "Mwai wa thanthat\u0169",
+      "Mwai wa muonza",
+      "Mwai wa nyaanya",
+      "Mwai wa kenda",
+      "Mwai wa \u0129kumi",
+      "Mwai wa \u0129kumi na \u0129mwe",
+      "Mwai wa \u0129kumi na il\u0129"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Ksh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "kam",
+  "localeID": "kam",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kde-tz.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kde-tz.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kde-tz.js
new file mode 100644
index 0000000..2a0de5b
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kde-tz.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "Muhi",
+      "Chilo"
+    ],
+    "DAY": [
+      "Liduva lyapili",
+      "Liduva lyatatu",
+      "Liduva lyanchechi",
+      "Liduva lyannyano",
+      "Liduva lyannyano na linji",
+      "Liduva lyannyano na mavili",
+      "Liduva litandi"
+    ],
+    "ERANAMES": [
+      "Akanapawa Yesu",
+      "Nankuida Yesu"
+    ],
+    "ERAS": [
+      "AY",
+      "NY"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Mwedi Ntandi",
+      "Mwedi wa Pili",
+      "Mwedi wa Tatu",
+      "Mwedi wa Nchechi",
+      "Mwedi wa Nnyano",
+      "Mwedi wa Nnyano na Umo",
+      "Mwedi wa Nnyano na Mivili",
+      "Mwedi wa Nnyano na Mitatu",
+      "Mwedi wa Nnyano na Nchechi",
+      "Mwedi wa Nnyano na Nnyano",
+      "Mwedi wa Nnyano na Nnyano na U",
+      "Mwedi wa Nnyano na Nnyano na M"
+    ],
+    "SHORTDAY": [
+      "Ll2",
+      "Ll3",
+      "Ll4",
+      "Ll5",
+      "Ll6",
+      "Ll7",
+      "Ll1"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mac",
+      "Apr",
+      "Mei",
+      "Jun",
+      "Jul",
+      "Ago",
+      "Sep",
+      "Okt",
+      "Nov",
+      "Des"
+    ],
+    "STANDALONEMONTH": [
+      "Mwedi Ntandi",
+      "Mwedi wa Pili",
+      "Mwedi wa Tatu",
+      "Mwedi wa Nchechi",
+      "Mwedi wa Nnyano",
+      "Mwedi wa Nnyano na Umo",
+      "Mwedi wa Nnyano na Mivili",
+      "Mwedi wa Nnyano na Mitatu",
+      "Mwedi wa Nnyano na Nchechi",
+      "Mwedi wa Nnyano na Nnyano",
+      "Mwedi wa Nnyano na Nnyano na U",
+      "Mwedi wa Nnyano na Nnyano na M"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "TSh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "kde-tz",
+  "localeID": "kde_TZ",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kde.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kde.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kde.js
new file mode 100644
index 0000000..184e030
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kde.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "Muhi",
+      "Chilo"
+    ],
+    "DAY": [
+      "Liduva lyapili",
+      "Liduva lyatatu",
+      "Liduva lyanchechi",
+      "Liduva lyannyano",
+      "Liduva lyannyano na linji",
+      "Liduva lyannyano na mavili",
+      "Liduva litandi"
+    ],
+    "ERANAMES": [
+      "Akanapawa Yesu",
+      "Nankuida Yesu"
+    ],
+    "ERAS": [
+      "AY",
+      "NY"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Mwedi Ntandi",
+      "Mwedi wa Pili",
+      "Mwedi wa Tatu",
+      "Mwedi wa Nchechi",
+      "Mwedi wa Nnyano",
+      "Mwedi wa Nnyano na Umo",
+      "Mwedi wa Nnyano na Mivili",
+      "Mwedi wa Nnyano na Mitatu",
+      "Mwedi wa Nnyano na Nchechi",
+      "Mwedi wa Nnyano na Nnyano",
+      "Mwedi wa Nnyano na Nnyano na U",
+      "Mwedi wa Nnyano na Nnyano na M"
+    ],
+    "SHORTDAY": [
+      "Ll2",
+      "Ll3",
+      "Ll4",
+      "Ll5",
+      "Ll6",
+      "Ll7",
+      "Ll1"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mac",
+      "Apr",
+      "Mei",
+      "Jun",
+      "Jul",
+      "Ago",
+      "Sep",
+      "Okt",
+      "Nov",
+      "Des"
+    ],
+    "STANDALONEMONTH": [
+      "Mwedi Ntandi",
+      "Mwedi wa Pili",
+      "Mwedi wa Tatu",
+      "Mwedi wa Nchechi",
+      "Mwedi wa Nnyano",
+      "Mwedi wa Nnyano na Umo",
+      "Mwedi wa Nnyano na Mivili",
+      "Mwedi wa Nnyano na Mitatu",
+      "Mwedi wa Nnyano na Nchechi",
+      "Mwedi wa Nnyano na Nnyano",
+      "Mwedi wa Nnyano na Nnyano na U",
+      "Mwedi wa Nnyano na Nnyano na M"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "TSh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "kde",
+  "localeID": "kde",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kea-cv.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kea-cv.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kea-cv.js
new file mode 100644
index 0000000..e396a69
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kea-cv.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "am",
+      "pm"
+    ],
+    "DAY": [
+      "dumingu",
+      "sigunda-fera",
+      "tersa-fera",
+      "kuarta-fera",
+      "kinta-fera",
+      "sesta-fera",
+      "sabadu"
+    ],
+    "ERANAMES": [
+      "Antis di Kristu",
+      "Dispos di Kristu"
+    ],
+    "ERAS": [
+      "AK",
+      "DK"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Janeru",
+      "Febreru",
+      "Marsu",
+      "Abril",
+      "Maiu",
+      "Junhu",
+      "Julhu",
+      "Agostu",
+      "Setenbru",
+      "Otubru",
+      "Nuvenbru",
+      "Dizenbru"
+    ],
+    "SHORTDAY": [
+      "dum",
+      "sig",
+      "ter",
+      "kua",
+      "kin",
+      "ses",
+      "sab"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Abr",
+      "Mai",
+      "Jun",
+      "Jul",
+      "Ago",
+      "Set",
+      "Otu",
+      "Nuv",
+      "Diz"
+    ],
+    "STANDALONEMONTH": [
+      "Janeru",
+      "Febreru",
+      "Marsu",
+      "Abril",
+      "Maiu",
+      "Junhu",
+      "Julhu",
+      "Agostu",
+      "Setenbru",
+      "Otubru",
+      "Nuvenbru",
+      "Dizenbru"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d 'di' MMMM 'di' y",
+    "longDate": "d 'di' MMMM 'di' y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "CVE",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "kea-cv",
+  "localeID": "kea_CV",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);


[20/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bs-cyrl-ba.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bs-cyrl-ba.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bs-cyrl-ba.js
new file mode 100644
index 0000000..45e4450
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bs-cyrl-ba.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u043f\u0440\u0435 \u043f\u043e\u0434\u043d\u0435",
+      "\u043f\u043e\u043f\u043e\u0434\u043d\u0435"
+    ],
+    "DAY": [
+      "\u043d\u0435\u0434\u0435\u0459\u0430",
+      "\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a",
+      "\u0443\u0442\u043e\u0440\u0430\u043a",
+      "\u0441\u0440\u0438\u0458\u0435\u0434\u0430",
+      "\u0447\u0435\u0442\u0432\u0440\u0442\u0430\u043a",
+      "\u043f\u0435\u0442\u0430\u043a",
+      "\u0441\u0443\u0431\u043e\u0442\u0430"
+    ],
+    "ERANAMES": [
+      "\u041f\u0440\u0435 \u043d\u043e\u0432\u0435 \u0435\u0440\u0435",
+      "\u041d\u043e\u0432\u0435 \u0435\u0440\u0435"
+    ],
+    "ERAS": [
+      "\u043f. \u043d. \u0435.",
+      "\u043d. \u0435."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u0458\u0430\u043d\u0443\u0430\u0440",
+      "\u0444\u0435\u0431\u0440\u0443\u0430\u0440",
+      "\u043c\u0430\u0440\u0442",
+      "\u0430\u043f\u0440\u0438\u043b",
+      "\u043c\u0430\u0458",
+      "\u0458\u0443\u043d\u0438",
+      "\u0458\u0443\u043b\u0438",
+      "\u0430\u0432\u0433\u0443\u0441\u0442",
+      "\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440",
+      "\u043e\u043a\u0442\u043e\u0431\u0430\u0440",
+      "\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440",
+      "\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440"
+    ],
+    "SHORTDAY": [
+      "\u043d\u0435\u0434",
+      "\u043f\u043e\u043d",
+      "\u0443\u0442\u043e",
+      "\u0441\u0440\u0438",
+      "\u0447\u0435\u0442",
+      "\u043f\u0435\u0442",
+      "\u0441\u0443\u0431"
+    ],
+    "SHORTMONTH": [
+      "\u0458\u0430\u043d",
+      "\u0444\u0435\u0431",
+      "\u043c\u0430\u0440",
+      "\u0430\u043f\u0440",
+      "\u043c\u0430\u0458",
+      "\u0458\u0443\u043d",
+      "\u0458\u0443\u043b",
+      "\u0430\u0432\u0433",
+      "\u0441\u0435\u043f",
+      "\u043e\u043a\u0442",
+      "\u043d\u043e\u0432",
+      "\u0434\u0435\u0446"
+    ],
+    "STANDALONEMONTH": [
+      "\u0458\u0430\u043d\u0443\u0430\u0440",
+      "\u0444\u0435\u0431\u0440\u0443\u0430\u0440",
+      "\u043c\u0430\u0440\u0442",
+      "\u0430\u043f\u0440\u0438\u043b",
+      "\u043c\u0430\u0458",
+      "\u0458\u0443\u043d\u0438",
+      "\u0458\u0443\u043b\u0438",
+      "\u0430\u0432\u0433\u0443\u0441\u0442",
+      "\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440",
+      "\u043e\u043a\u0442\u043e\u0431\u0430\u0440",
+      "\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440",
+      "\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, dd. MMMM y.",
+    "longDate": "dd. MMMM y.",
+    "medium": "dd.MM.y. HH:mm:ss",
+    "mediumDate": "dd.MM.y.",
+    "mediumTime": "HH:mm:ss",
+    "short": "d.M.yy. HH:mm",
+    "shortDate": "d.M.yy.",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "KM",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "bs-cyrl-ba",
+  "localeID": "bs_Cyrl_BA",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (vf.v == 0 && i % 10 == 1 && i % 100 != 11 || vf.f % 10 == 1 && vf.f % 100 != 11) {    return PLURAL_CATEGORY.ONE;  }  if (vf.v == 0 && i % 10 >= 2 && i % 10 <= 4 && (i % 100 < 12 || i % 100 > 14) || vf.f % 10 >= 2 && vf.f % 10 <= 4 && (vf.f % 100 < 12 || vf.f % 100 > 14)) {    return PLURAL_CATEGORY.FEW;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bs-cyrl.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bs-cyrl.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bs-cyrl.js
new file mode 100644
index 0000000..0f0cdf2
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bs-cyrl.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u043f\u0440\u0435 \u043f\u043e\u0434\u043d\u0435",
+      "\u043f\u043e\u043f\u043e\u0434\u043d\u0435"
+    ],
+    "DAY": [
+      "\u043d\u0435\u0434\u0435\u0459\u0430",
+      "\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a",
+      "\u0443\u0442\u043e\u0440\u0430\u043a",
+      "\u0441\u0440\u0438\u0458\u0435\u0434\u0430",
+      "\u0447\u0435\u0442\u0432\u0440\u0442\u0430\u043a",
+      "\u043f\u0435\u0442\u0430\u043a",
+      "\u0441\u0443\u0431\u043e\u0442\u0430"
+    ],
+    "ERANAMES": [
+      "\u041f\u0440\u0435 \u043d\u043e\u0432\u0435 \u0435\u0440\u0435",
+      "\u041d\u043e\u0432\u0435 \u0435\u0440\u0435"
+    ],
+    "ERAS": [
+      "\u043f. \u043d. \u0435.",
+      "\u043d. \u0435."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u0458\u0430\u043d\u0443\u0430\u0440",
+      "\u0444\u0435\u0431\u0440\u0443\u0430\u0440",
+      "\u043c\u0430\u0440\u0442",
+      "\u0430\u043f\u0440\u0438\u043b",
+      "\u043c\u0430\u0458",
+      "\u0458\u0443\u043d\u0438",
+      "\u0458\u0443\u043b\u0438",
+      "\u0430\u0432\u0433\u0443\u0441\u0442",
+      "\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440",
+      "\u043e\u043a\u0442\u043e\u0431\u0430\u0440",
+      "\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440",
+      "\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440"
+    ],
+    "SHORTDAY": [
+      "\u043d\u0435\u0434",
+      "\u043f\u043e\u043d",
+      "\u0443\u0442\u043e",
+      "\u0441\u0440\u0438",
+      "\u0447\u0435\u0442",
+      "\u043f\u0435\u0442",
+      "\u0441\u0443\u0431"
+    ],
+    "SHORTMONTH": [
+      "\u0458\u0430\u043d",
+      "\u0444\u0435\u0431",
+      "\u043c\u0430\u0440",
+      "\u0430\u043f\u0440",
+      "\u043c\u0430\u0458",
+      "\u0458\u0443\u043d",
+      "\u0458\u0443\u043b",
+      "\u0430\u0432\u0433",
+      "\u0441\u0435\u043f",
+      "\u043e\u043a\u0442",
+      "\u043d\u043e\u0432",
+      "\u0434\u0435\u0446"
+    ],
+    "STANDALONEMONTH": [
+      "\u0458\u0430\u043d\u0443\u0430\u0440",
+      "\u0444\u0435\u0431\u0440\u0443\u0430\u0440",
+      "\u043c\u0430\u0440\u0442",
+      "\u0430\u043f\u0440\u0438\u043b",
+      "\u043c\u0430\u0458",
+      "\u0458\u0443\u043d\u0438",
+      "\u0458\u0443\u043b\u0438",
+      "\u0430\u0432\u0433\u0443\u0441\u0442",
+      "\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440",
+      "\u043e\u043a\u0442\u043e\u0431\u0430\u0440",
+      "\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440",
+      "\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, dd. MMMM y.",
+    "longDate": "dd. MMMM y.",
+    "medium": "dd.MM.y. HH:mm:ss",
+    "mediumDate": "dd.MM.y.",
+    "mediumTime": "HH:mm:ss",
+    "short": "d.M.yy. HH:mm",
+    "shortDate": "d.M.yy.",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "KM",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "bs-cyrl",
+  "localeID": "bs_Cyrl",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (vf.v == 0 && i % 10 == 1 && i % 100 != 11 || vf.f % 10 == 1 && vf.f % 100 != 11) {    return PLURAL_CATEGORY.ONE;  }  if (vf.v == 0 && i % 10 >= 2 && i % 10 <= 4 && (i % 100 < 12 || i % 100 > 14) || vf.f % 10 >= 2 && vf.f % 10 <= 4 && (vf.f % 100 < 12 || vf.f % 100 > 14)) {    return PLURAL_CATEGORY.FEW;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bs-latn-ba.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bs-latn-ba.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bs-latn-ba.js
new file mode 100644
index 0000000..0a819c9
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bs-latn-ba.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "prije podne",
+      "popodne"
+    ],
+    "DAY": [
+      "nedjelja",
+      "ponedjeljak",
+      "utorak",
+      "srijeda",
+      "\u010detvrtak",
+      "petak",
+      "subota"
+    ],
+    "ERANAMES": [
+      "Prije nove ere",
+      "Nove ere"
+    ],
+    "ERAS": [
+      "p. n. e.",
+      "n. e."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "januar",
+      "februar",
+      "mart",
+      "april",
+      "maj",
+      "juni",
+      "juli",
+      "august",
+      "septembar",
+      "oktobar",
+      "novembar",
+      "decembar"
+    ],
+    "SHORTDAY": [
+      "ned",
+      "pon",
+      "uto",
+      "sri",
+      "\u010det",
+      "pet",
+      "sub"
+    ],
+    "SHORTMONTH": [
+      "jan",
+      "feb",
+      "mar",
+      "apr",
+      "maj",
+      "jun",
+      "jul",
+      "aug",
+      "sep",
+      "okt",
+      "nov",
+      "dec"
+    ],
+    "STANDALONEMONTH": [
+      "januar",
+      "februar",
+      "mart",
+      "april",
+      "maj",
+      "juni",
+      "juli",
+      "august",
+      "septembar",
+      "oktobar",
+      "novembar",
+      "decembar"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, dd. MMMM y.",
+    "longDate": "dd. MMMM y.",
+    "medium": "dd. MMM. y. HH:mm:ss",
+    "mediumDate": "dd. MMM. y.",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.yy. HH:mm",
+    "shortDate": "dd.MM.yy.",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "KM",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "bs-latn-ba",
+  "localeID": "bs_Latn_BA",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (vf.v == 0 && i % 10 == 1 && i % 100 != 11 || vf.f % 10 == 1 && vf.f % 100 != 11) {    return PLURAL_CATEGORY.ONE;  }  if (vf.v == 0 && i % 10 >= 2 && i % 10 <= 4 && (i % 100 < 12 || i % 100 > 14) || vf.f % 10 >= 2 && vf.f % 10 <= 4 && (vf.f % 100 < 12 || vf.f % 100 > 14)) {    return PLURAL_CATEGORY.FEW;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bs-latn.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bs-latn.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bs-latn.js
new file mode 100644
index 0000000..404daf8
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bs-latn.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "prije podne",
+      "popodne"
+    ],
+    "DAY": [
+      "nedjelja",
+      "ponedjeljak",
+      "utorak",
+      "srijeda",
+      "\u010detvrtak",
+      "petak",
+      "subota"
+    ],
+    "ERANAMES": [
+      "Prije nove ere",
+      "Nove ere"
+    ],
+    "ERAS": [
+      "p. n. e.",
+      "n. e."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "januar",
+      "februar",
+      "mart",
+      "april",
+      "maj",
+      "juni",
+      "juli",
+      "august",
+      "septembar",
+      "oktobar",
+      "novembar",
+      "decembar"
+    ],
+    "SHORTDAY": [
+      "ned",
+      "pon",
+      "uto",
+      "sri",
+      "\u010det",
+      "pet",
+      "sub"
+    ],
+    "SHORTMONTH": [
+      "jan",
+      "feb",
+      "mar",
+      "apr",
+      "maj",
+      "jun",
+      "jul",
+      "aug",
+      "sep",
+      "okt",
+      "nov",
+      "dec"
+    ],
+    "STANDALONEMONTH": [
+      "januar",
+      "februar",
+      "mart",
+      "april",
+      "maj",
+      "juni",
+      "juli",
+      "august",
+      "septembar",
+      "oktobar",
+      "novembar",
+      "decembar"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, dd. MMMM y.",
+    "longDate": "dd. MMMM y.",
+    "medium": "dd. MMM. y. HH:mm:ss",
+    "mediumDate": "dd. MMM. y.",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.yy. HH:mm",
+    "shortDate": "dd.MM.yy.",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "KM",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "bs-latn",
+  "localeID": "bs_Latn",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (vf.v == 0 && i % 10 == 1 && i % 100 != 11 || vf.f % 10 == 1 && vf.f % 100 != 11) {    return PLURAL_CATEGORY.ONE;  }  if (vf.v == 0 && i % 10 >= 2 && i % 10 <= 4 && (i % 100 < 12 || i % 100 > 14) || vf.f % 10 >= 2 && vf.f % 10 <= 4 && (vf.f % 100 < 12 || vf.f % 100 > 14)) {    return PLURAL_CATEGORY.FEW;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bs.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bs.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bs.js
new file mode 100644
index 0000000..e1f4cd1
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_bs.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "prije podne",
+      "popodne"
+    ],
+    "DAY": [
+      "nedjelja",
+      "ponedjeljak",
+      "utorak",
+      "srijeda",
+      "\u010detvrtak",
+      "petak",
+      "subota"
+    ],
+    "ERANAMES": [
+      "Prije nove ere",
+      "Nove ere"
+    ],
+    "ERAS": [
+      "p. n. e.",
+      "n. e."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "januar",
+      "februar",
+      "mart",
+      "april",
+      "maj",
+      "juni",
+      "juli",
+      "august",
+      "septembar",
+      "oktobar",
+      "novembar",
+      "decembar"
+    ],
+    "SHORTDAY": [
+      "ned",
+      "pon",
+      "uto",
+      "sri",
+      "\u010det",
+      "pet",
+      "sub"
+    ],
+    "SHORTMONTH": [
+      "jan",
+      "feb",
+      "mar",
+      "apr",
+      "maj",
+      "jun",
+      "jul",
+      "aug",
+      "sep",
+      "okt",
+      "nov",
+      "dec"
+    ],
+    "STANDALONEMONTH": [
+      "januar",
+      "februar",
+      "mart",
+      "april",
+      "maj",
+      "juni",
+      "juli",
+      "august",
+      "septembar",
+      "oktobar",
+      "novembar",
+      "decembar"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, dd. MMMM y.",
+    "longDate": "dd. MMMM y.",
+    "medium": "dd. MMM. y. HH:mm:ss",
+    "mediumDate": "dd. MMM. y.",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.yy. HH:mm",
+    "shortDate": "dd.MM.yy.",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "KM",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "bs",
+  "localeID": "bs",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (vf.v == 0 && i % 10 == 1 && i % 100 != 11 || vf.f % 10 == 1 && vf.f % 100 != 11) {    return PLURAL_CATEGORY.ONE;  }  if (vf.v == 0 && i % 10 >= 2 && i % 10 <= 4 && (i % 100 < 12 || i % 100 > 14) || vf.f % 10 >= 2 && vf.f % 10 <= 4 && (vf.f % 100 < 12 || vf.f % 100 > 14)) {    return PLURAL_CATEGORY.FEW;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_byn-er.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_byn-er.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_byn-er.js
new file mode 100644
index 0000000..f6ee233
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_byn-er.js
@@ -0,0 +1,115 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u134b\u12f1\u1235 \u1303\u1265",
+      "\u134b\u12f1\u1235 \u12f0\u121d\u1262"
+    ],
+    "DAY": [
+      "\u1230\u1295\u1260\u122d \u1245\u12f3\u12c5",
+      "\u1230\u1291",
+      "\u1230\u120a\u131d",
+      "\u1208\u1313 \u12c8\u122a \u1208\u1265\u12cb",
+      "\u12a3\u121d\u12f5",
+      "\u12a3\u122d\u1265",
+      "\u1230\u1295\u1260\u122d \u123d\u1313\u12c5"
+    ],
+    "MONTH": [
+      "\u120d\u12f0\u1275\u122a",
+      "\u12ab\u1265\u12bd\u1265\u1272",
+      "\u12ad\u1265\u120b",
+      "\u134b\u1305\u12ba\u122a",
+      "\u12ad\u1262\u1245\u122a",
+      "\u121d\u12aa\u12a4\u120d \u1275\u131f\u1292\u122a",
+      "\u12b0\u122d\u12a9",
+      "\u121b\u122d\u12eb\u121d \u1275\u122a",
+      "\u12eb\u12b8\u1292 \u1218\u1233\u1245\u1208\u122a",
+      "\u1218\u1270\u1209",
+      "\u121d\u12aa\u12a4\u120d \u1218\u123d\u12c8\u122a",
+      "\u1270\u1215\u1233\u1235\u122a"
+    ],
+    "SHORTDAY": [
+      "\u1230/\u1245",
+      "\u1230\u1291",
+      "\u1230\u120a\u131d",
+      "\u1208\u1313",
+      "\u12a3\u121d\u12f5",
+      "\u12a3\u122d\u1265",
+      "\u1230/\u123d"
+    ],
+    "SHORTMONTH": [
+      "\u120d\u12f0\u1275",
+      "\u12ab\u1265\u12bd",
+      "\u12ad\u1265\u120b",
+      "\u134b\u1305\u12ba",
+      "\u12ad\u1262\u1245",
+      "\u121d/\u1275",
+      "\u12b0\u122d",
+      "\u121b\u122d\u12eb",
+      "\u12eb\u12b8\u1292",
+      "\u1218\u1270\u1209",
+      "\u121d/\u121d",
+      "\u1270\u1215\u1233"
+    ],
+    "fullDate": "EEEE\u1361 dd MMMM \u130d\u122d\u130b y G",
+    "longDate": "dd MMMM y",
+    "medium": "dd-MMM-y h:mm:ss a",
+    "mediumDate": "dd-MMM-y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/yy h:mm a",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Nfk",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4-",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "byn-er",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_byn.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_byn.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_byn.js
new file mode 100644
index 0000000..578ce6d
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_byn.js
@@ -0,0 +1,115 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u134b\u12f1\u1235 \u1303\u1265",
+      "\u134b\u12f1\u1235 \u12f0\u121d\u1262"
+    ],
+    "DAY": [
+      "\u1230\u1295\u1260\u122d \u1245\u12f3\u12c5",
+      "\u1230\u1291",
+      "\u1230\u120a\u131d",
+      "\u1208\u1313 \u12c8\u122a \u1208\u1265\u12cb",
+      "\u12a3\u121d\u12f5",
+      "\u12a3\u122d\u1265",
+      "\u1230\u1295\u1260\u122d \u123d\u1313\u12c5"
+    ],
+    "MONTH": [
+      "\u120d\u12f0\u1275\u122a",
+      "\u12ab\u1265\u12bd\u1265\u1272",
+      "\u12ad\u1265\u120b",
+      "\u134b\u1305\u12ba\u122a",
+      "\u12ad\u1262\u1245\u122a",
+      "\u121d\u12aa\u12a4\u120d \u1275\u131f\u1292\u122a",
+      "\u12b0\u122d\u12a9",
+      "\u121b\u122d\u12eb\u121d \u1275\u122a",
+      "\u12eb\u12b8\u1292 \u1218\u1233\u1245\u1208\u122a",
+      "\u1218\u1270\u1209",
+      "\u121d\u12aa\u12a4\u120d \u1218\u123d\u12c8\u122a",
+      "\u1270\u1215\u1233\u1235\u122a"
+    ],
+    "SHORTDAY": [
+      "\u1230/\u1245",
+      "\u1230\u1291",
+      "\u1230\u120a\u131d",
+      "\u1208\u1313",
+      "\u12a3\u121d\u12f5",
+      "\u12a3\u122d\u1265",
+      "\u1230/\u123d"
+    ],
+    "SHORTMONTH": [
+      "\u120d\u12f0\u1275",
+      "\u12ab\u1265\u12bd",
+      "\u12ad\u1265\u120b",
+      "\u134b\u1305\u12ba",
+      "\u12ad\u1262\u1245",
+      "\u121d/\u1275",
+      "\u12b0\u122d",
+      "\u121b\u122d\u12eb",
+      "\u12eb\u12b8\u1292",
+      "\u1218\u1270\u1209",
+      "\u121d/\u121d",
+      "\u1270\u1215\u1233"
+    ],
+    "fullDate": "EEEE\u1361 dd MMMM \u130d\u122d\u130b y G",
+    "longDate": "dd MMMM y",
+    "medium": "dd-MMM-y h:mm:ss a",
+    "mediumDate": "dd-MMM-y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/yy h:mm a",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Nfk",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4-",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "byn",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ca-ad.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ca-ad.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ca-ad.js
new file mode 100644
index 0000000..1224828
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ca-ad.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a. m.",
+      "p. m."
+    ],
+    "DAY": [
+      "diumenge",
+      "dilluns",
+      "dimarts",
+      "dimecres",
+      "dijous",
+      "divendres",
+      "dissabte"
+    ],
+    "ERANAMES": [
+      "abans de Crist",
+      "despr\u00e9s de Crist"
+    ],
+    "ERAS": [
+      "aC",
+      "dC"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "de gener",
+      "de febrer",
+      "de mar\u00e7",
+      "d\u2019abril",
+      "de maig",
+      "de juny",
+      "de juliol",
+      "d\u2019agost",
+      "de setembre",
+      "d\u2019octubre",
+      "de novembre",
+      "de desembre"
+    ],
+    "SHORTDAY": [
+      "dg.",
+      "dl.",
+      "dt.",
+      "dc.",
+      "dj.",
+      "dv.",
+      "ds."
+    ],
+    "SHORTMONTH": [
+      "gen.",
+      "febr.",
+      "mar\u00e7",
+      "abr.",
+      "maig",
+      "juny",
+      "jul.",
+      "ag.",
+      "set.",
+      "oct.",
+      "nov.",
+      "des."
+    ],
+    "STANDALONEMONTH": [
+      "gener",
+      "febrer",
+      "mar\u00e7",
+      "abril",
+      "maig",
+      "juny",
+      "juliol",
+      "agost",
+      "setembre",
+      "octubre",
+      "novembre",
+      "desembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM 'de' y",
+    "longDate": "d MMMM 'de' y",
+    "medium": "d MMM y H:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "H:mm:ss",
+    "short": "d/M/yy H:mm",
+    "shortDate": "d/M/yy",
+    "shortTime": "H:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "ca-ad",
+  "localeID": "ca_AD",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ca-es-valencia.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ca-es-valencia.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ca-es-valencia.js
new file mode 100644
index 0000000..388980e
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ca-es-valencia.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a. m.",
+      "p. m."
+    ],
+    "DAY": [
+      "diumenge",
+      "dilluns",
+      "dimarts",
+      "dimecres",
+      "dijous",
+      "divendres",
+      "dissabte"
+    ],
+    "ERANAMES": [
+      "abans de Crist",
+      "despr\u00e9s de Crist"
+    ],
+    "ERAS": [
+      "aC",
+      "dC"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "de gener",
+      "de febrer",
+      "de mar\u00e7",
+      "d\u2019abril",
+      "de maig",
+      "de juny",
+      "de juliol",
+      "d\u2019agost",
+      "de setembre",
+      "d\u2019octubre",
+      "de novembre",
+      "de desembre"
+    ],
+    "SHORTDAY": [
+      "dg.",
+      "dl.",
+      "dt.",
+      "dc.",
+      "dj.",
+      "dv.",
+      "ds."
+    ],
+    "SHORTMONTH": [
+      "gen.",
+      "febr.",
+      "mar\u00e7",
+      "abr.",
+      "maig",
+      "juny",
+      "jul.",
+      "ag.",
+      "set.",
+      "oct.",
+      "nov.",
+      "des."
+    ],
+    "STANDALONEMONTH": [
+      "gener",
+      "febrer",
+      "mar\u00e7",
+      "abril",
+      "maig",
+      "juny",
+      "juliol",
+      "agost",
+      "setembre",
+      "octubre",
+      "novembre",
+      "desembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM 'de' y",
+    "longDate": "d MMMM 'de' y",
+    "medium": "d MMM y H:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "H:mm:ss",
+    "short": "d/M/yy H:mm",
+    "shortDate": "d/M/yy",
+    "shortTime": "H:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "ca-es-valencia",
+  "localeID": "ca_ES_VALENCIA",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ca-es.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ca-es.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ca-es.js
new file mode 100644
index 0000000..85a01a6
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ca-es.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a. m.",
+      "p. m."
+    ],
+    "DAY": [
+      "diumenge",
+      "dilluns",
+      "dimarts",
+      "dimecres",
+      "dijous",
+      "divendres",
+      "dissabte"
+    ],
+    "ERANAMES": [
+      "abans de Crist",
+      "despr\u00e9s de Crist"
+    ],
+    "ERAS": [
+      "aC",
+      "dC"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "de gener",
+      "de febrer",
+      "de mar\u00e7",
+      "d\u2019abril",
+      "de maig",
+      "de juny",
+      "de juliol",
+      "d\u2019agost",
+      "de setembre",
+      "d\u2019octubre",
+      "de novembre",
+      "de desembre"
+    ],
+    "SHORTDAY": [
+      "dg.",
+      "dl.",
+      "dt.",
+      "dc.",
+      "dj.",
+      "dv.",
+      "ds."
+    ],
+    "SHORTMONTH": [
+      "gen.",
+      "febr.",
+      "mar\u00e7",
+      "abr.",
+      "maig",
+      "juny",
+      "jul.",
+      "ag.",
+      "set.",
+      "oct.",
+      "nov.",
+      "des."
+    ],
+    "STANDALONEMONTH": [
+      "gener",
+      "febrer",
+      "mar\u00e7",
+      "abril",
+      "maig",
+      "juny",
+      "juliol",
+      "agost",
+      "setembre",
+      "octubre",
+      "novembre",
+      "desembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM 'de' y",
+    "longDate": "d MMMM 'de' y",
+    "medium": "d MMM y H:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "H:mm:ss",
+    "short": "d/M/yy H:mm",
+    "shortDate": "d/M/yy",
+    "shortTime": "H:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "ca-es",
+  "localeID": "ca_ES",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ca-fr.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ca-fr.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ca-fr.js
new file mode 100644
index 0000000..d7b15e6
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ca-fr.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a. m.",
+      "p. m."
+    ],
+    "DAY": [
+      "diumenge",
+      "dilluns",
+      "dimarts",
+      "dimecres",
+      "dijous",
+      "divendres",
+      "dissabte"
+    ],
+    "ERANAMES": [
+      "abans de Crist",
+      "despr\u00e9s de Crist"
+    ],
+    "ERAS": [
+      "aC",
+      "dC"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "de gener",
+      "de febrer",
+      "de mar\u00e7",
+      "d\u2019abril",
+      "de maig",
+      "de juny",
+      "de juliol",
+      "d\u2019agost",
+      "de setembre",
+      "d\u2019octubre",
+      "de novembre",
+      "de desembre"
+    ],
+    "SHORTDAY": [
+      "dg.",
+      "dl.",
+      "dt.",
+      "dc.",
+      "dj.",
+      "dv.",
+      "ds."
+    ],
+    "SHORTMONTH": [
+      "gen.",
+      "febr.",
+      "mar\u00e7",
+      "abr.",
+      "maig",
+      "juny",
+      "jul.",
+      "ag.",
+      "set.",
+      "oct.",
+      "nov.",
+      "des."
+    ],
+    "STANDALONEMONTH": [
+      "gener",
+      "febrer",
+      "mar\u00e7",
+      "abril",
+      "maig",
+      "juny",
+      "juliol",
+      "agost",
+      "setembre",
+      "octubre",
+      "novembre",
+      "desembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM 'de' y",
+    "longDate": "d MMMM 'de' y",
+    "medium": "d MMM y H:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "H:mm:ss",
+    "short": "d/M/yy H:mm",
+    "shortDate": "d/M/yy",
+    "shortTime": "H:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "ca-fr",
+  "localeID": "ca_FR",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ca-it.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ca-it.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ca-it.js
new file mode 100644
index 0000000..72cb384
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ca-it.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a. m.",
+      "p. m."
+    ],
+    "DAY": [
+      "diumenge",
+      "dilluns",
+      "dimarts",
+      "dimecres",
+      "dijous",
+      "divendres",
+      "dissabte"
+    ],
+    "ERANAMES": [
+      "abans de Crist",
+      "despr\u00e9s de Crist"
+    ],
+    "ERAS": [
+      "aC",
+      "dC"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "de gener",
+      "de febrer",
+      "de mar\u00e7",
+      "d\u2019abril",
+      "de maig",
+      "de juny",
+      "de juliol",
+      "d\u2019agost",
+      "de setembre",
+      "d\u2019octubre",
+      "de novembre",
+      "de desembre"
+    ],
+    "SHORTDAY": [
+      "dg.",
+      "dl.",
+      "dt.",
+      "dc.",
+      "dj.",
+      "dv.",
+      "ds."
+    ],
+    "SHORTMONTH": [
+      "gen.",
+      "febr.",
+      "mar\u00e7",
+      "abr.",
+      "maig",
+      "juny",
+      "jul.",
+      "ag.",
+      "set.",
+      "oct.",
+      "nov.",
+      "des."
+    ],
+    "STANDALONEMONTH": [
+      "gener",
+      "febrer",
+      "mar\u00e7",
+      "abril",
+      "maig",
+      "juny",
+      "juliol",
+      "agost",
+      "setembre",
+      "octubre",
+      "novembre",
+      "desembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM 'de' y",
+    "longDate": "d MMMM 'de' y",
+    "medium": "d MMM y H:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "H:mm:ss",
+    "short": "d/M/yy H:mm",
+    "shortDate": "d/M/yy",
+    "shortTime": "H:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "ca-it",
+  "localeID": "ca_IT",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ca.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ca.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ca.js
new file mode 100644
index 0000000..2fcc4af
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ca.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a. m.",
+      "p. m."
+    ],
+    "DAY": [
+      "diumenge",
+      "dilluns",
+      "dimarts",
+      "dimecres",
+      "dijous",
+      "divendres",
+      "dissabte"
+    ],
+    "ERANAMES": [
+      "abans de Crist",
+      "despr\u00e9s de Crist"
+    ],
+    "ERAS": [
+      "aC",
+      "dC"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "de gener",
+      "de febrer",
+      "de mar\u00e7",
+      "d\u2019abril",
+      "de maig",
+      "de juny",
+      "de juliol",
+      "d\u2019agost",
+      "de setembre",
+      "d\u2019octubre",
+      "de novembre",
+      "de desembre"
+    ],
+    "SHORTDAY": [
+      "dg.",
+      "dl.",
+      "dt.",
+      "dc.",
+      "dj.",
+      "dv.",
+      "ds."
+    ],
+    "SHORTMONTH": [
+      "gen.",
+      "febr.",
+      "mar\u00e7",
+      "abr.",
+      "maig",
+      "juny",
+      "jul.",
+      "ag.",
+      "set.",
+      "oct.",
+      "nov.",
+      "des."
+    ],
+    "STANDALONEMONTH": [
+      "gener",
+      "febrer",
+      "mar\u00e7",
+      "abril",
+      "maig",
+      "juny",
+      "juliol",
+      "agost",
+      "setembre",
+      "octubre",
+      "novembre",
+      "desembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM 'de' y",
+    "longDate": "d MMMM 'de' y",
+    "medium": "d MMM y H:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "H:mm:ss",
+    "short": "d/M/yy H:mm",
+    "shortDate": "d/M/yy",
+    "shortTime": "H:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "ca",
+  "localeID": "ca",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_cgg-ug.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_cgg-ug.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_cgg-ug.js
new file mode 100644
index 0000000..ce47a8d
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_cgg-ug.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sande",
+      "Orwokubanza",
+      "Orwakabiri",
+      "Orwakashatu",
+      "Orwakana",
+      "Orwakataano",
+      "Orwamukaaga"
+    ],
+    "ERANAMES": [
+      "Kurisito Atakaijire",
+      "Kurisito Yaijire"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Okwokubanza",
+      "Okwakabiri",
+      "Okwakashatu",
+      "Okwakana",
+      "Okwakataana",
+      "Okwamukaaga",
+      "Okwamushanju",
+      "Okwamunaana",
+      "Okwamwenda",
+      "Okwaikumi",
+      "Okwaikumi na kumwe",
+      "Okwaikumi na ibiri"
+    ],
+    "SHORTDAY": [
+      "SAN",
+      "ORK",
+      "OKB",
+      "OKS",
+      "OKN",
+      "OKT",
+      "OMK"
+    ],
+    "SHORTMONTH": [
+      "KBZ",
+      "KBR",
+      "KST",
+      "KKN",
+      "KTN",
+      "KMK",
+      "KMS",
+      "KMN",
+      "KMW",
+      "KKM",
+      "KNK",
+      "KNB"
+    ],
+    "STANDALONEMONTH": [
+      "Okwokubanza",
+      "Okwakabiri",
+      "Okwakashatu",
+      "Okwakana",
+      "Okwakataana",
+      "Okwamukaaga",
+      "Okwamushanju",
+      "Okwamunaana",
+      "Okwamwenda",
+      "Okwaikumi",
+      "Okwaikumi na kumwe",
+      "Okwaikumi na ibiri"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "UGX",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "cgg-ug",
+  "localeID": "cgg_UG",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_cgg.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_cgg.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_cgg.js
new file mode 100644
index 0000000..86e8630
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_cgg.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sande",
+      "Orwokubanza",
+      "Orwakabiri",
+      "Orwakashatu",
+      "Orwakana",
+      "Orwakataano",
+      "Orwamukaaga"
+    ],
+    "ERANAMES": [
+      "Kurisito Atakaijire",
+      "Kurisito Yaijire"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Okwokubanza",
+      "Okwakabiri",
+      "Okwakashatu",
+      "Okwakana",
+      "Okwakataana",
+      "Okwamukaaga",
+      "Okwamushanju",
+      "Okwamunaana",
+      "Okwamwenda",
+      "Okwaikumi",
+      "Okwaikumi na kumwe",
+      "Okwaikumi na ibiri"
+    ],
+    "SHORTDAY": [
+      "SAN",
+      "ORK",
+      "OKB",
+      "OKS",
+      "OKN",
+      "OKT",
+      "OMK"
+    ],
+    "SHORTMONTH": [
+      "KBZ",
+      "KBR",
+      "KST",
+      "KKN",
+      "KTN",
+      "KMK",
+      "KMS",
+      "KMN",
+      "KMW",
+      "KKM",
+      "KNK",
+      "KNB"
+    ],
+    "STANDALONEMONTH": [
+      "Okwokubanza",
+      "Okwakabiri",
+      "Okwakashatu",
+      "Okwakana",
+      "Okwakataana",
+      "Okwamukaaga",
+      "Okwamushanju",
+      "Okwamunaana",
+      "Okwamwenda",
+      "Okwaikumi",
+      "Okwaikumi na kumwe",
+      "Okwaikumi na ibiri"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "UGX",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "cgg",
+  "localeID": "cgg",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_chr-us.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_chr-us.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_chr-us.js
new file mode 100644
index 0000000..1445824
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_chr-us.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u13cc\u13be\u13b4",
+      "\u13d2\u13af\u13f1\u13a2\u13d7\u13e2"
+    ],
+    "DAY": [
+      "\u13a4\u13be\u13d9\u13d3\u13c6\u13cd\u13ac",
+      "\u13a4\u13be\u13d9\u13d3\u13c9\u13c5\u13af",
+      "\u13d4\u13b5\u13c1\u13a2\u13a6",
+      "\u13e6\u13a2\u13c1\u13a2\u13a6",
+      "\u13c5\u13a9\u13c1\u13a2\u13a6",
+      "\u13e7\u13be\u13a9\u13b6\u13cd\u13d7",
+      "\u13a4\u13be\u13d9\u13d3\u13c8\u13d5\u13be"
+    ],
+    "ERANAMES": [
+      "\u13cf \u13e5\u13cc \u13be\u13d5\u13b2\u13cd\u13ac\u13be",
+      "\u13a0\u13a9\u13c3\u13ae\u13b5\u13d3\u13cd\u13d7\u13f1 \u13a0\u13d5\u13d8\u13f1\u13cd\u13ac \u13f1\u13b0\u13e9 \u13e7\u13d3\u13c2\u13b8\u13a2\u13cd\u13d7"
+    ],
+    "ERAS": [
+      "\u13a4\u13d3\u13b7\u13b8",
+      "\u13a4\u13b6\u13d0\u13c5"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u13a4\u13c3\u13b8\u13d4\u13c5",
+      "\u13a7\u13a6\u13b5",
+      "\u13a0\u13c5\u13f1",
+      "\u13a7\u13ec\u13c2",
+      "\u13a0\u13c2\u13cd\u13ac\u13d8",
+      "\u13d5\u13ad\u13b7\u13f1",
+      "\u13ab\u13f0\u13c9\u13c2",
+      "\u13a6\u13b6\u13c2",
+      "\u13da\u13b5\u13cd\u13d7",
+      "\u13da\u13c2\u13c5\u13d7",
+      "\u13c5\u13d3\u13d5\u13c6",
+      "\u13a5\u13cd\u13a9\u13f1"
+    ],
+    "SHORTDAY": [
+      "\u13c6\u13cd\u13ac",
+      "\u13c9\u13c5\u13af",
+      "\u13d4\u13b5\u13c1",
+      "\u13e6\u13a2\u13c1",
+      "\u13c5\u13a9\u13c1",
+      "\u13e7\u13be\u13a9",
+      "\u13c8\u13d5\u13be"
+    ],
+    "SHORTMONTH": [
+      "\u13a4\u13c3",
+      "\u13a7\u13a6",
+      "\u13a0\u13c5",
+      "\u13a7\u13ec",
+      "\u13a0\u13c2",
+      "\u13d5\u13ad",
+      "\u13ab\u13f0",
+      "\u13a6\u13b6",
+      "\u13da\u13b5",
+      "\u13da\u13c2",
+      "\u13c5\u13d3",
+      "\u13a5\u13cd"
+    ],
+    "STANDALONEMONTH": [
+      "\u13a4\u13c3\u13b8\u13d4\u13c5",
+      "\u13a7\u13a6\u13b5",
+      "\u13a0\u13c5\u13f1",
+      "\u13a7\u13ec\u13c2",
+      "\u13a0\u13c2\u13cd\u13ac\u13d8",
+      "\u13d5\u13ad\u13b7\u13f1",
+      "\u13ab\u13f0\u13c9\u13c2",
+      "\u13a6\u13b6\u13c2",
+      "\u13da\u13b5\u13cd\u13d7",
+      "\u13da\u13c2\u13c5\u13d7",
+      "\u13c5\u13d3\u13d5\u13c6",
+      "\u13a5\u13cd\u13a9\u13f1"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, MMMM d, y",
+    "longDate": "MMMM d, y",
+    "medium": "MMM d, y h:mm:ss a",
+    "mediumDate": "MMM d, y",
+    "mediumTime": "h:mm:ss a",
+    "short": "M/d/yy h:mm a",
+    "shortDate": "M/d/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "chr-us",
+  "localeID": "chr_US",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_chr.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_chr.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_chr.js
new file mode 100644
index 0000000..61030c4
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_chr.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u13cc\u13be\u13b4",
+      "\u13d2\u13af\u13f1\u13a2\u13d7\u13e2"
+    ],
+    "DAY": [
+      "\u13a4\u13be\u13d9\u13d3\u13c6\u13cd\u13ac",
+      "\u13a4\u13be\u13d9\u13d3\u13c9\u13c5\u13af",
+      "\u13d4\u13b5\u13c1\u13a2\u13a6",
+      "\u13e6\u13a2\u13c1\u13a2\u13a6",
+      "\u13c5\u13a9\u13c1\u13a2\u13a6",
+      "\u13e7\u13be\u13a9\u13b6\u13cd\u13d7",
+      "\u13a4\u13be\u13d9\u13d3\u13c8\u13d5\u13be"
+    ],
+    "ERANAMES": [
+      "\u13cf \u13e5\u13cc \u13be\u13d5\u13b2\u13cd\u13ac\u13be",
+      "\u13a0\u13a9\u13c3\u13ae\u13b5\u13d3\u13cd\u13d7\u13f1 \u13a0\u13d5\u13d8\u13f1\u13cd\u13ac \u13f1\u13b0\u13e9 \u13e7\u13d3\u13c2\u13b8\u13a2\u13cd\u13d7"
+    ],
+    "ERAS": [
+      "\u13a4\u13d3\u13b7\u13b8",
+      "\u13a4\u13b6\u13d0\u13c5"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u13a4\u13c3\u13b8\u13d4\u13c5",
+      "\u13a7\u13a6\u13b5",
+      "\u13a0\u13c5\u13f1",
+      "\u13a7\u13ec\u13c2",
+      "\u13a0\u13c2\u13cd\u13ac\u13d8",
+      "\u13d5\u13ad\u13b7\u13f1",
+      "\u13ab\u13f0\u13c9\u13c2",
+      "\u13a6\u13b6\u13c2",
+      "\u13da\u13b5\u13cd\u13d7",
+      "\u13da\u13c2\u13c5\u13d7",
+      "\u13c5\u13d3\u13d5\u13c6",
+      "\u13a5\u13cd\u13a9\u13f1"
+    ],
+    "SHORTDAY": [
+      "\u13c6\u13cd\u13ac",
+      "\u13c9\u13c5\u13af",
+      "\u13d4\u13b5\u13c1",
+      "\u13e6\u13a2\u13c1",
+      "\u13c5\u13a9\u13c1",
+      "\u13e7\u13be\u13a9",
+      "\u13c8\u13d5\u13be"
+    ],
+    "SHORTMONTH": [
+      "\u13a4\u13c3",
+      "\u13a7\u13a6",
+      "\u13a0\u13c5",
+      "\u13a7\u13ec",
+      "\u13a0\u13c2",
+      "\u13d5\u13ad",
+      "\u13ab\u13f0",
+      "\u13a6\u13b6",
+      "\u13da\u13b5",
+      "\u13da\u13c2",
+      "\u13c5\u13d3",
+      "\u13a5\u13cd"
+    ],
+    "STANDALONEMONTH": [
+      "\u13a4\u13c3\u13b8\u13d4\u13c5",
+      "\u13a7\u13a6\u13b5",
+      "\u13a0\u13c5\u13f1",
+      "\u13a7\u13ec\u13c2",
+      "\u13a0\u13c2\u13cd\u13ac\u13d8",
+      "\u13d5\u13ad\u13b7\u13f1",
+      "\u13ab\u13f0\u13c9\u13c2",
+      "\u13a6\u13b6\u13c2",
+      "\u13da\u13b5\u13cd\u13d7",
+      "\u13da\u13c2\u13c5\u13d7",
+      "\u13c5\u13d3\u13d5\u13c6",
+      "\u13a5\u13cd\u13a9\u13f1"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, MMMM d, y",
+    "longDate": "MMMM d, y",
+    "medium": "MMM d, y h:mm:ss a",
+    "mediumDate": "MMM d, y",
+    "mediumTime": "h:mm:ss a",
+    "short": "M/d/yy h:mm a",
+    "shortDate": "M/d/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "chr",
+  "localeID": "chr",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ckb-arab-iq.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ckb-arab-iq.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ckb-arab-iq.js
new file mode 100644
index 0000000..bc6cf63
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ckb-arab-iq.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0628.\u0646",
+      "\u062f.\u0646"
+    ],
+    "DAY": [
+      "\u06cc\u06d5\u06a9\u0634\u06d5\u0645\u0645\u06d5",
+      "\u062f\u0648\u0648\u0634\u06d5\u0645\u0645\u06d5",
+      "\u0633\u06ce\u0634\u06d5\u0645\u0645\u06d5",
+      "\u0686\u0648\u0627\u0631\u0634\u06d5\u0645\u0645\u06d5",
+      "\u067e\u06ce\u0646\u062c\u0634\u06d5\u0645\u0645\u06d5",
+      "\u06be\u06d5\u06cc\u0646\u06cc",
+      "\u0634\u06d5\u0645\u0645\u06d5"
+    ],
+    "ERANAMES": [
+      "\u067e\u06ce\u0634 \u0632\u0627\u06cc\u06cc\u0646",
+      "\u0632\u0627\u06cc\u06cc\u0646\u06cc"
+    ],
+    "ERAS": [
+      "\u067e\u06ce\u0634 \u0632\u0627\u06cc\u06cc\u06cc\u0646",
+      "\u0632"
+    ],
+    "FIRSTDAYOFWEEK": 5,
+    "MONTH": [
+      "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u0634\u0648\u0628\u0627\u062a",
+      "\u0626\u0627\u0632\u0627\u0631",
+      "\u0646\u06cc\u0633\u0627\u0646",
+      "\u0626\u0627\u06cc\u0627\u0631",
+      "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646",
+      "\u062a\u06d5\u0645\u0648\u0648\u0632",
+      "\u0626\u0627\u0628",
+      "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"
+    ],
+    "SHORTDAY": [
+      "\u06cc\u06d5\u06a9\u0634\u06d5\u0645\u0645\u06d5",
+      "\u062f\u0648\u0648\u0634\u06d5\u0645\u0645\u06d5",
+      "\u0633\u06ce\u0634\u06d5\u0645\u0645\u06d5",
+      "\u0686\u0648\u0627\u0631\u0634\u06d5\u0645\u0645\u06d5",
+      "\u067e\u06ce\u0646\u062c\u0634\u06d5\u0645\u0645\u06d5",
+      "\u06be\u06d5\u06cc\u0646\u06cc",
+      "\u0634\u06d5\u0645\u0645\u06d5"
+    ],
+    "SHORTMONTH": [
+      "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u0634\u0648\u0628\u0627\u062a",
+      "\u0626\u0627\u0632\u0627\u0631",
+      "\u0646\u06cc\u0633\u0627\u0646",
+      "\u0626\u0627\u06cc\u0627\u0631",
+      "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646",
+      "\u062a\u06d5\u0645\u0648\u0648\u0632",
+      "\u0626\u0627\u0628",
+      "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"
+    ],
+    "STANDALONEMONTH": [
+      "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u0634\u0648\u0628\u0627\u062a",
+      "\u0626\u0627\u0632\u0627\u0631",
+      "\u0646\u06cc\u0633\u0627\u0646",
+      "\u0626\u0627\u06cc\u0627\u0631",
+      "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646",
+      "\u062a\u06d5\u0645\u0648\u0648\u0632",
+      "\u0626\u0627\u0628",
+      "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      5
+    ],
+    "fullDate": "y MMMM d, EEEE",
+    "longDate": "d\u06cc MMMM\u06cc y",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "y-MM-dd HH:mm",
+    "shortDate": "y-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "din",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ckb-arab-iq",
+  "localeID": "ckb_Arab_IQ",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ckb-arab-ir.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ckb-arab-ir.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ckb-arab-ir.js
new file mode 100644
index 0000000..9a83d4a
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ckb-arab-ir.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0628.\u0646",
+      "\u062f.\u0646"
+    ],
+    "DAY": [
+      "\u06cc\u06d5\u06a9\u0634\u06d5\u0645\u0645\u06d5",
+      "\u062f\u0648\u0648\u0634\u06d5\u0645\u0645\u06d5",
+      "\u0633\u06ce\u0634\u06d5\u0645\u0645\u06d5",
+      "\u0686\u0648\u0627\u0631\u0634\u06d5\u0645\u0645\u06d5",
+      "\u067e\u06ce\u0646\u062c\u0634\u06d5\u0645\u0645\u06d5",
+      "\u06be\u06d5\u06cc\u0646\u06cc",
+      "\u0634\u06d5\u0645\u0645\u06d5"
+    ],
+    "ERANAMES": [
+      "\u067e\u06ce\u0634 \u0632\u0627\u06cc\u06cc\u0646",
+      "\u0632\u0627\u06cc\u06cc\u0646\u06cc"
+    ],
+    "ERAS": [
+      "\u067e\u06ce\u0634 \u0632\u0627\u06cc\u06cc\u06cc\u0646",
+      "\u0632"
+    ],
+    "FIRSTDAYOFWEEK": 5,
+    "MONTH": [
+      "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u0634\u0648\u0628\u0627\u062a",
+      "\u0626\u0627\u0632\u0627\u0631",
+      "\u0646\u06cc\u0633\u0627\u0646",
+      "\u0626\u0627\u06cc\u0627\u0631",
+      "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646",
+      "\u062a\u06d5\u0645\u0648\u0648\u0632",
+      "\u0626\u0627\u0628",
+      "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"
+    ],
+    "SHORTDAY": [
+      "\u06cc\u06d5\u06a9\u0634\u06d5\u0645\u0645\u06d5",
+      "\u062f\u0648\u0648\u0634\u06d5\u0645\u0645\u06d5",
+      "\u0633\u06ce\u0634\u06d5\u0645\u0645\u06d5",
+      "\u0686\u0648\u0627\u0631\u0634\u06d5\u0645\u0645\u06d5",
+      "\u067e\u06ce\u0646\u062c\u0634\u06d5\u0645\u0645\u06d5",
+      "\u06be\u06d5\u06cc\u0646\u06cc",
+      "\u0634\u06d5\u0645\u0645\u06d5"
+    ],
+    "SHORTMONTH": [
+      "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u0634\u0648\u0628\u0627\u062a",
+      "\u0626\u0627\u0632\u0627\u0631",
+      "\u0646\u06cc\u0633\u0627\u0646",
+      "\u0626\u0627\u06cc\u0627\u0631",
+      "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646",
+      "\u062a\u06d5\u0645\u0648\u0648\u0632",
+      "\u0626\u0627\u0628",
+      "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"
+    ],
+    "STANDALONEMONTH": [
+      "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u0634\u0648\u0628\u0627\u062a",
+      "\u0626\u0627\u0632\u0627\u0631",
+      "\u0646\u06cc\u0633\u0627\u0646",
+      "\u0626\u0627\u06cc\u0627\u0631",
+      "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646",
+      "\u062a\u06d5\u0645\u0648\u0648\u0632",
+      "\u0626\u0627\u0628",
+      "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      5
+    ],
+    "fullDate": "y MMMM d, EEEE",
+    "longDate": "d\u06cc MMMM\u06cc y",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "y-MM-dd HH:mm",
+    "shortDate": "y-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Rial",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ckb-arab-ir",
+  "localeID": "ckb_Arab_IR",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ckb-arab.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ckb-arab.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ckb-arab.js
new file mode 100644
index 0000000..6f4f7a8
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ckb-arab.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0628.\u0646",
+      "\u062f.\u0646"
+    ],
+    "DAY": [
+      "\u06cc\u06d5\u06a9\u0634\u06d5\u0645\u0645\u06d5",
+      "\u062f\u0648\u0648\u0634\u06d5\u0645\u0645\u06d5",
+      "\u0633\u06ce\u0634\u06d5\u0645\u0645\u06d5",
+      "\u0686\u0648\u0627\u0631\u0634\u06d5\u0645\u0645\u06d5",
+      "\u067e\u06ce\u0646\u062c\u0634\u06d5\u0645\u0645\u06d5",
+      "\u06be\u06d5\u06cc\u0646\u06cc",
+      "\u0634\u06d5\u0645\u0645\u06d5"
+    ],
+    "ERANAMES": [
+      "\u067e\u06ce\u0634 \u0632\u0627\u06cc\u06cc\u0646",
+      "\u0632\u0627\u06cc\u06cc\u0646\u06cc"
+    ],
+    "ERAS": [
+      "\u067e\u06ce\u0634 \u0632\u0627\u06cc\u06cc\u06cc\u0646",
+      "\u0632"
+    ],
+    "FIRSTDAYOFWEEK": 5,
+    "MONTH": [
+      "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u0634\u0648\u0628\u0627\u062a",
+      "\u0626\u0627\u0632\u0627\u0631",
+      "\u0646\u06cc\u0633\u0627\u0646",
+      "\u0626\u0627\u06cc\u0627\u0631",
+      "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646",
+      "\u062a\u06d5\u0645\u0648\u0648\u0632",
+      "\u0626\u0627\u0628",
+      "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"
+    ],
+    "SHORTDAY": [
+      "\u06cc\u06d5\u06a9\u0634\u06d5\u0645\u0645\u06d5",
+      "\u062f\u0648\u0648\u0634\u06d5\u0645\u0645\u06d5",
+      "\u0633\u06ce\u0634\u06d5\u0645\u0645\u06d5",
+      "\u0686\u0648\u0627\u0631\u0634\u06d5\u0645\u0645\u06d5",
+      "\u067e\u06ce\u0646\u062c\u0634\u06d5\u0645\u0645\u06d5",
+      "\u06be\u06d5\u06cc\u0646\u06cc",
+      "\u0634\u06d5\u0645\u0645\u06d5"
+    ],
+    "SHORTMONTH": [
+      "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u0634\u0648\u0628\u0627\u062a",
+      "\u0626\u0627\u0632\u0627\u0631",
+      "\u0646\u06cc\u0633\u0627\u0646",
+      "\u0626\u0627\u06cc\u0627\u0631",
+      "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646",
+      "\u062a\u06d5\u0645\u0648\u0648\u0632",
+      "\u0626\u0627\u0628",
+      "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"
+    ],
+    "STANDALONEMONTH": [
+      "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u0634\u0648\u0628\u0627\u062a",
+      "\u0626\u0627\u0632\u0627\u0631",
+      "\u0646\u06cc\u0633\u0627\u0646",
+      "\u0626\u0627\u06cc\u0627\u0631",
+      "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646",
+      "\u062a\u06d5\u0645\u0648\u0648\u0632",
+      "\u0626\u0627\u0628",
+      "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      5
+    ],
+    "fullDate": "y MMMM d, EEEE",
+    "longDate": "d\u06cc MMMM\u06cc y",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "y-MM-dd HH:mm",
+    "shortDate": "y-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "din",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ckb-arab",
+  "localeID": "ckb_Arab",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ckb-iq.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ckb-iq.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ckb-iq.js
new file mode 100644
index 0000000..07f32c0
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ckb-iq.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0628.\u0646",
+      "\u062f.\u0646"
+    ],
+    "DAY": [
+      "\u06cc\u06d5\u06a9\u0634\u06d5\u0645\u0645\u06d5",
+      "\u062f\u0648\u0648\u0634\u06d5\u0645\u0645\u06d5",
+      "\u0633\u06ce\u0634\u06d5\u0645\u0645\u06d5",
+      "\u0686\u0648\u0627\u0631\u0634\u06d5\u0645\u0645\u06d5",
+      "\u067e\u06ce\u0646\u062c\u0634\u06d5\u0645\u0645\u06d5",
+      "\u06be\u06d5\u06cc\u0646\u06cc",
+      "\u0634\u06d5\u0645\u0645\u06d5"
+    ],
+    "ERANAMES": [
+      "\u067e\u06ce\u0634 \u0632\u0627\u06cc\u06cc\u0646",
+      "\u0632\u0627\u06cc\u06cc\u0646\u06cc"
+    ],
+    "ERAS": [
+      "\u067e\u06ce\u0634 \u0632\u0627\u06cc\u06cc\u06cc\u0646",
+      "\u0632"
+    ],
+    "FIRSTDAYOFWEEK": 5,
+    "MONTH": [
+      "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u0634\u0648\u0628\u0627\u062a",
+      "\u0626\u0627\u0632\u0627\u0631",
+      "\u0646\u06cc\u0633\u0627\u0646",
+      "\u0626\u0627\u06cc\u0627\u0631",
+      "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646",
+      "\u062a\u06d5\u0645\u0648\u0648\u0632",
+      "\u0626\u0627\u0628",
+      "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"
+    ],
+    "SHORTDAY": [
+      "\u06cc\u06d5\u06a9\u0634\u06d5\u0645\u0645\u06d5",
+      "\u062f\u0648\u0648\u0634\u06d5\u0645\u0645\u06d5",
+      "\u0633\u06ce\u0634\u06d5\u0645\u0645\u06d5",
+      "\u0686\u0648\u0627\u0631\u0634\u06d5\u0645\u0645\u06d5",
+      "\u067e\u06ce\u0646\u062c\u0634\u06d5\u0645\u0645\u06d5",
+      "\u06be\u06d5\u06cc\u0646\u06cc",
+      "\u0634\u06d5\u0645\u0645\u06d5"
+    ],
+    "SHORTMONTH": [
+      "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u0634\u0648\u0628\u0627\u062a",
+      "\u0626\u0627\u0632\u0627\u0631",
+      "\u0646\u06cc\u0633\u0627\u0646",
+      "\u0626\u0627\u06cc\u0627\u0631",
+      "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646",
+      "\u062a\u06d5\u0645\u0648\u0648\u0632",
+      "\u0626\u0627\u0628",
+      "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"
+    ],
+    "STANDALONEMONTH": [
+      "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u0634\u0648\u0628\u0627\u062a",
+      "\u0626\u0627\u0632\u0627\u0631",
+      "\u0646\u06cc\u0633\u0627\u0646",
+      "\u0626\u0627\u06cc\u0627\u0631",
+      "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646",
+      "\u062a\u06d5\u0645\u0648\u0648\u0632",
+      "\u0626\u0627\u0628",
+      "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645",
+      "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645",
+      "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      5
+    ],
+    "fullDate": "y MMMM d, EEEE",
+    "longDate": "d\u06cc MMMM\u06cc y",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "y-MM-dd HH:mm",
+    "shortDate": "y-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "din",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ckb-iq",
+  "localeID": "ckb_IQ",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);



[38/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-message-format.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-message-format.js b/rocketmq-console/src/main/resources/static/vendor/angular/angular-message-format.js
new file mode 100644
index 0000000..9a08efa
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-message-format.js
@@ -0,0 +1,980 @@
+/**
+ * @license AngularJS v1.5.6
+ * (c) 2010-2016 Google, Inc. http://angularjs.org
+ * License: MIT
+ */
+(function(window, angular) {'use strict';
+
+// NOTE: ADVANCED_OPTIMIZATIONS mode.
+//
+// This file is compiled with Closure compiler's ADVANCED_OPTIMIZATIONS flag! Be wary of using
+// constructs incompatible with that mode.
+
+var $interpolateMinErr = window['angular']['$interpolateMinErr'];
+
+var noop = window['angular']['noop'],
+    isFunction = window['angular']['isFunction'],
+    toJson = window['angular']['toJson'];
+
+function stringify(value) {
+  if (value == null /* null/undefined */) { return ''; }
+  switch (typeof value) {
+    case 'string':     return value;
+    case 'number':     return '' + value;
+    default:           return toJson(value);
+  }
+}
+
+// Convert an index into the string into line/column for use in error messages
+// As such, this doesn't have to be efficient.
+function indexToLineAndColumn(text, index) {
+  var lines = text.split(/\n/g);
+  for (var i=0; i < lines.length; i++) {
+    var line=lines[i];
+    if (index >= line.length) {
+      index -= line.length;
+    } else {
+      return { line: i + 1, column: index + 1 };
+    }
+  }
+}
+var PARSE_CACHE_FOR_TEXT_LITERALS = Object.create(null);
+
+function parseTextLiteral(text) {
+  var cachedFn = PARSE_CACHE_FOR_TEXT_LITERALS[text];
+  if (cachedFn != null) {
+    return cachedFn;
+  }
+  function parsedFn(context) { return text; }
+  parsedFn['$$watchDelegate'] = function watchDelegate(scope, listener, objectEquality) {
+    var unwatch = scope['$watch'](noop,
+        function textLiteralWatcher() {
+          if (isFunction(listener)) { listener.call(null, text, text, scope); }
+          unwatch();
+        },
+        objectEquality);
+    return unwatch;
+  };
+  PARSE_CACHE_FOR_TEXT_LITERALS[text] = parsedFn;
+  parsedFn['exp'] = text; // Needed to pretend to be $interpolate for tests copied from interpolateSpec.js
+  parsedFn['expressions'] = []; // Require this to call $compile.$$addBindingInfo() which allows Protractor to find elements by binding.
+  return parsedFn;
+}
+
+function subtractOffset(expressionFn, offset) {
+  if (offset === 0) {
+    return expressionFn;
+  }
+  function minusOffset(value) {
+    return (value == void 0) ? value : value - offset;
+  }
+  function parsedFn(context) { return minusOffset(expressionFn(context)); }
+  var unwatch;
+  parsedFn['$$watchDelegate'] = function watchDelegate(scope, listener, objectEquality) {
+    unwatch = scope['$watch'](expressionFn,
+        function pluralExpressionWatchListener(newValue, oldValue) {
+          if (isFunction(listener)) { listener.call(null, minusOffset(newValue), minusOffset(oldValue), scope); }
+        },
+        objectEquality);
+    return unwatch;
+  };
+  return parsedFn;
+}
+
+// NOTE: ADVANCED_OPTIMIZATIONS mode.
+//
+// This file is compiled with Closure compiler's ADVANCED_OPTIMIZATIONS flag! Be wary of using
+// constructs incompatible with that mode.
+
+/* global $interpolateMinErr: false */
+/* global isFunction: false */
+/* global noop: false */
+
+/**
+ * @constructor
+ * @private
+ */
+function MessageSelectorBase(expressionFn, choices) {
+  var self = this;
+  this.expressionFn = expressionFn;
+  this.choices = choices;
+  if (choices["other"] === void 0) {
+    throw $interpolateMinErr('reqother', '“other” is a required option.');
+  }
+  this.parsedFn = function(context) { return self.getResult(context); };
+  this.parsedFn['$$watchDelegate'] = function $$watchDelegate(scope, listener, objectEquality) {
+    return self.watchDelegate(scope, listener, objectEquality);
+  };
+  this.parsedFn['exp'] = expressionFn['exp'];
+  this.parsedFn['expressions'] = expressionFn['expressions'];
+}
+
+MessageSelectorBase.prototype.getMessageFn = function getMessageFn(value) {
+  return this.choices[this.categorizeValue(value)];
+};
+
+MessageSelectorBase.prototype.getResult = function getResult(context) {
+  return this.getMessageFn(this.expressionFn(context))(context);
+};
+
+MessageSelectorBase.prototype.watchDelegate = function watchDelegate(scope, listener, objectEquality) {
+  var watchers = new MessageSelectorWatchers(this, scope, listener, objectEquality);
+  return function() { watchers.cancelWatch(); };
+};
+
+/**
+ * @constructor
+ * @private
+ */
+function MessageSelectorWatchers(msgSelector, scope, listener, objectEquality) {
+  var self = this;
+  this.scope = scope;
+  this.msgSelector = msgSelector;
+  this.listener = listener;
+  this.objectEquality = objectEquality;
+  this.lastMessage = void 0;
+  this.messageFnWatcher = noop;
+  var expressionFnListener = function(newValue, oldValue) { return self.expressionFnListener(newValue, oldValue); };
+  this.expressionFnWatcher = scope['$watch'](msgSelector.expressionFn, expressionFnListener, objectEquality);
+}
+
+MessageSelectorWatchers.prototype.expressionFnListener = function expressionFnListener(newValue, oldValue) {
+  var self = this;
+  this.messageFnWatcher();
+  var messageFnListener = function(newMessage, oldMessage) { return self.messageFnListener(newMessage, oldMessage); };
+  var messageFn = this.msgSelector.getMessageFn(newValue);
+  this.messageFnWatcher = this.scope['$watch'](messageFn, messageFnListener, this.objectEquality);
+};
+
+MessageSelectorWatchers.prototype.messageFnListener = function messageFnListener(newMessage, oldMessage) {
+  if (isFunction(this.listener)) {
+    this.listener.call(null, newMessage, newMessage === oldMessage ? newMessage : this.lastMessage, this.scope);
+  }
+  this.lastMessage = newMessage;
+};
+
+MessageSelectorWatchers.prototype.cancelWatch = function cancelWatch() {
+  this.expressionFnWatcher();
+  this.messageFnWatcher();
+};
+
+/**
+ * @constructor
+ * @extends MessageSelectorBase
+ * @private
+ */
+function SelectMessage(expressionFn, choices) {
+  MessageSelectorBase.call(this, expressionFn, choices);
+}
+
+function SelectMessageProto() {}
+SelectMessageProto.prototype = MessageSelectorBase.prototype;
+
+SelectMessage.prototype = new SelectMessageProto();
+SelectMessage.prototype.categorizeValue = function categorizeSelectValue(value) {
+  return (this.choices[value] !== void 0) ? value : "other";
+};
+
+/**
+ * @constructor
+ * @extends MessageSelectorBase
+ * @private
+ */
+function PluralMessage(expressionFn, choices, offset, pluralCat) {
+  MessageSelectorBase.call(this, expressionFn, choices);
+  this.offset = offset;
+  this.pluralCat = pluralCat;
+}
+
+function PluralMessageProto() {}
+PluralMessageProto.prototype = MessageSelectorBase.prototype;
+
+PluralMessage.prototype = new PluralMessageProto();
+PluralMessage.prototype.categorizeValue = function categorizePluralValue(value) {
+  if (isNaN(value)) {
+    return "other";
+  } else if (this.choices[value] !== void 0) {
+    return value;
+  } else {
+    var category = this.pluralCat(value - this.offset);
+    return (this.choices[category] !== void 0) ? category : "other";
+  }
+};
+
+// NOTE: ADVANCED_OPTIMIZATIONS mode.
+//
+// This file is compiled with Closure compiler's ADVANCED_OPTIMIZATIONS flag! Be wary of using
+// constructs incompatible with that mode.
+
+/* global $interpolateMinErr: false */
+/* global isFunction: false */
+/* global parseTextLiteral: false */
+
+/**
+ * @constructor
+ * @private
+ */
+function InterpolationParts(trustedContext, allOrNothing) {
+  this.trustedContext = trustedContext;
+  this.allOrNothing = allOrNothing;
+  this.textParts = [];
+  this.expressionFns = [];
+  this.expressionIndices = [];
+  this.partialText = '';
+  this.concatParts = null;
+}
+
+InterpolationParts.prototype.flushPartialText = function flushPartialText() {
+  if (this.partialText) {
+    if (this.concatParts == null) {
+      this.textParts.push(this.partialText);
+    } else {
+      this.textParts.push(this.concatParts.join(''));
+      this.concatParts = null;
+    }
+    this.partialText = '';
+  }
+};
+
+InterpolationParts.prototype.addText = function addText(text) {
+  if (text.length) {
+    if (!this.partialText) {
+      this.partialText = text;
+    } else if (this.concatParts) {
+      this.concatParts.push(text);
+    } else {
+      this.concatParts = [this.partialText, text];
+    }
+  }
+};
+
+InterpolationParts.prototype.addExpressionFn = function addExpressionFn(expressionFn) {
+  this.flushPartialText();
+  this.expressionIndices.push(this.textParts.length);
+  this.expressionFns.push(expressionFn);
+  this.textParts.push('');
+};
+
+InterpolationParts.prototype.getExpressionValues = function getExpressionValues(context) {
+  var expressionValues = new Array(this.expressionFns.length);
+  for (var i = 0; i < this.expressionFns.length; i++) {
+    expressionValues[i] = this.expressionFns[i](context);
+  }
+  return expressionValues;
+};
+
+InterpolationParts.prototype.getResult = function getResult(expressionValues) {
+  for (var i = 0; i < this.expressionIndices.length; i++) {
+    var expressionValue = expressionValues[i];
+    if (this.allOrNothing && expressionValue === void 0) return;
+    this.textParts[this.expressionIndices[i]] = expressionValue;
+  }
+  return this.textParts.join('');
+};
+
+
+InterpolationParts.prototype.toParsedFn = function toParsedFn(mustHaveExpression, originalText) {
+  var self = this;
+  this.flushPartialText();
+  if (mustHaveExpression && this.expressionFns.length === 0) {
+    return void 0;
+  }
+  if (this.textParts.length === 0) {
+    return parseTextLiteral('');
+  }
+  if (this.trustedContext && this.textParts.length > 1) {
+    $interpolateMinErr['throwNoconcat'](originalText);
+  }
+  if (this.expressionFns.length === 0) {
+    if (this.textParts.length != 1) { this.errorInParseLogic(); }
+    return parseTextLiteral(this.textParts[0]);
+  }
+  var parsedFn = function(context) {
+    return self.getResult(self.getExpressionValues(context));
+  };
+  parsedFn['$$watchDelegate'] = function $$watchDelegate(scope, listener, objectEquality) {
+    return self.watchDelegate(scope, listener, objectEquality);
+  };
+
+  parsedFn['exp'] = originalText; // Needed to pretend to be $interpolate for tests copied from interpolateSpec.js
+  parsedFn['expressions'] = new Array(this.expressionFns.length); // Require this to call $compile.$$addBindingInfo() which allows Protractor to find elements by binding.
+  for (var i = 0; i < this.expressionFns.length; i++) {
+    parsedFn['expressions'][i] = this.expressionFns[i]['exp'];
+  }
+
+  return parsedFn;
+};
+
+InterpolationParts.prototype.watchDelegate = function watchDelegate(scope, listener, objectEquality) {
+  var watcher = new InterpolationPartsWatcher(this, scope, listener, objectEquality);
+  return function() { watcher.cancelWatch(); };
+};
+
+function InterpolationPartsWatcher(interpolationParts, scope, listener, objectEquality) {
+  this.interpolationParts = interpolationParts;
+  this.scope = scope;
+  this.previousResult = (void 0);
+  this.listener = listener;
+  var self = this;
+  this.expressionFnsWatcher = scope['$watchGroup'](interpolationParts.expressionFns, function(newExpressionValues, oldExpressionValues) {
+    self.watchListener(newExpressionValues, oldExpressionValues);
+  });
+}
+
+InterpolationPartsWatcher.prototype.watchListener = function watchListener(newExpressionValues, oldExpressionValues) {
+  var result = this.interpolationParts.getResult(newExpressionValues);
+  if (isFunction(this.listener)) {
+    this.listener.call(null, result, newExpressionValues === oldExpressionValues ? result : this.previousResult, this.scope);
+  }
+  this.previousResult = result;
+};
+
+InterpolationPartsWatcher.prototype.cancelWatch = function cancelWatch() {
+  this.expressionFnsWatcher();
+};
+
+// NOTE: ADVANCED_OPTIMIZATIONS mode.
+//
+// This file is compiled with Closure compiler's ADVANCED_OPTIMIZATIONS flag! Be wary of using
+// constructs incompatible with that mode.
+
+/* global $interpolateMinErr: false */
+/* global indexToLineAndColumn: false */
+/* global InterpolationParts: false */
+/* global PluralMessage: false */
+/* global SelectMessage: false */
+/* global subtractOffset: false */
+
+// The params src and dst are exactly one of two types: NestedParserState or MessageFormatParser.
+// This function is fully optimized by V8. (inspect via IRHydra or --trace-deopt.)
+// The idea behind writing it this way is to avoid repeating oneself.  This is the ONE place where
+// the parser state that is saved/restored when parsing nested mustaches is specified.
+function copyNestedParserState(src, dst) {
+  dst.expressionFn = src.expressionFn;
+  dst.expressionMinusOffsetFn = src.expressionMinusOffsetFn;
+  dst.pluralOffset = src.pluralOffset;
+  dst.choices = src.choices;
+  dst.choiceKey = src.choiceKey;
+  dst.interpolationParts = src.interpolationParts;
+  dst.ruleChoiceKeyword = src.ruleChoiceKeyword;
+  dst.msgStartIndex = src.msgStartIndex;
+  dst.expressionStartIndex = src.expressionStartIndex;
+}
+
+function NestedParserState(parser) {
+  copyNestedParserState(parser, this);
+}
+
+/**
+ * @constructor
+ * @private
+ */
+function MessageFormatParser(text, startIndex, $parse, pluralCat, stringifier,
+                             mustHaveExpression, trustedContext, allOrNothing) {
+  this.text = text;
+  this.index = startIndex || 0;
+  this.$parse = $parse;
+  this.pluralCat = pluralCat;
+  this.stringifier = stringifier;
+  this.mustHaveExpression = !!mustHaveExpression;
+  this.trustedContext = trustedContext;
+  this.allOrNothing = !!allOrNothing;
+  this.expressionFn = null;
+  this.expressionMinusOffsetFn = null;
+  this.pluralOffset = null;
+  this.choices = null;
+  this.choiceKey = null;
+  this.interpolationParts = null;
+  this.msgStartIndex = null;
+  this.nestedStateStack = [];
+  this.parsedFn = null;
+  this.rule = null;
+  this.ruleStack = null;
+  this.ruleChoiceKeyword = null;
+  this.interpNestLevel = null;
+  this.expressionStartIndex = null;
+  this.stringStartIndex = null;
+  this.stringQuote = null;
+  this.stringInterestsRe = null;
+  this.angularOperatorStack = null;
+  this.textPart = null;
+}
+
+// preserve v8 optimization.
+var EMPTY_STATE = new NestedParserState(new MessageFormatParser(
+        /* text= */ '', /* startIndex= */ 0, /* $parse= */ null, /* pluralCat= */ null, /* stringifier= */ null,
+        /* mustHaveExpression= */ false, /* trustedContext= */ null, /* allOrNothing */ false));
+
+MessageFormatParser.prototype.pushState = function pushState() {
+  this.nestedStateStack.push(new NestedParserState(this));
+  copyNestedParserState(EMPTY_STATE, this);
+};
+
+MessageFormatParser.prototype.popState = function popState() {
+  if (this.nestedStateStack.length === 0) {
+    this.errorInParseLogic();
+  }
+  var previousState = this.nestedStateStack.pop();
+  copyNestedParserState(previousState, this);
+};
+
+// Oh my JavaScript!  Who knew you couldn't match a regex at a specific
+// location in a string but will always search forward?!
+// Apparently you'll be growing this ability via the sticky flag (y) in
+// ES6.  I'll just to work around you for now.
+MessageFormatParser.prototype.matchRe = function matchRe(re, search) {
+  re.lastIndex = this.index;
+  var match = re.exec(this.text);
+  if (match != null && (search === true || (match.index == this.index))) {
+    this.index = re.lastIndex;
+    return match;
+  }
+  return null;
+};
+
+MessageFormatParser.prototype.searchRe = function searchRe(re) {
+  return this.matchRe(re, true);
+};
+
+
+MessageFormatParser.prototype.consumeRe = function consumeRe(re) {
+  // Without the sticky flag, we can't use the .test() method to consume a
+  // match at the current index.  Instead, we'll use the slower .exec() method
+  // and verify match.index.
+  return !!this.matchRe(re);
+};
+
+// Run through our grammar avoiding deeply nested function call chains.
+MessageFormatParser.prototype.run = function run(initialRule) {
+  this.ruleStack = [initialRule];
+  do {
+    this.rule = this.ruleStack.pop();
+    while (this.rule) {
+      this.rule();
+    }
+    this.assertRuleOrNull(this.rule);
+  } while (this.ruleStack.length > 0);
+};
+
+MessageFormatParser.prototype.errorInParseLogic = function errorInParseLogic() {
+    throw $interpolateMinErr('logicbug',
+        'The messageformat parser has encountered an internal error.  Please file a github issue against the AngularJS project and provide this message text that triggers the bug.  Text: “{0}”',
+        this.text);
+};
+
+MessageFormatParser.prototype.assertRuleOrNull = function assertRuleOrNull(rule) {
+  if (rule === void 0) {
+    this.errorInParseLogic();
+  }
+};
+
+var NEXT_WORD_RE = /\s*(\w+)\s*/g;
+MessageFormatParser.prototype.errorExpecting = function errorExpecting() {
+  // What was wrong with the syntax? Unsupported type, missing comma, or something else?
+  var match = this.matchRe(NEXT_WORD_RE), position;
+  if (match == null) {
+    position = indexToLineAndColumn(this.text, this.index);
+    throw $interpolateMinErr('reqarg',
+        'Expected one of “plural” or “select” at line {0}, column {1} of text “{2}”',
+        position.line, position.column, this.text);
+  }
+  var word = match[1];
+  if (word == "select" || word == "plural") {
+    position = indexToLineAndColumn(this.text, this.index);
+    throw $interpolateMinErr('reqcomma',
+        'Expected a comma after the keyword “{0}” at line {1}, column {2} of text “{3}”',
+        word, position.line, position.column, this.text);
+  } else {
+    position = indexToLineAndColumn(this.text, this.index);
+    throw $interpolateMinErr('unknarg',
+        'Unsupported keyword “{0}” at line {0}, column {1}. Only “plural” and “select” are currently supported.  Text: “{3}”',
+        word, position.line, position.column, this.text);
+  }
+};
+
+var STRING_START_RE = /['"]/g;
+MessageFormatParser.prototype.ruleString = function ruleString() {
+  var match = this.matchRe(STRING_START_RE);
+  if (match == null) {
+    var position = indexToLineAndColumn(this.text, this.index);
+    throw $interpolateMinErr('wantstring',
+        'Expected the beginning of a string at line {0}, column {1} in text “{2}”',
+        position.line, position.column, this.text);
+  }
+  this.startStringAtMatch(match);
+};
+
+MessageFormatParser.prototype.startStringAtMatch = function startStringAtMatch(match) {
+  this.stringStartIndex = match.index;
+  this.stringQuote = match[0];
+  this.stringInterestsRe = this.stringQuote == "'" ? SQUOTED_STRING_INTEREST_RE : DQUOTED_STRING_INTEREST_RE;
+  this.rule = this.ruleInsideString;
+};
+
+var SQUOTED_STRING_INTEREST_RE = /\\(?:\\|'|u[0-9A-Fa-f]{4}|x[0-9A-Fa-f]{2}|[0-7]{3}|\r\n|\n|[\s\S])|'/g;
+var DQUOTED_STRING_INTEREST_RE = /\\(?:\\|"|u[0-9A-Fa-f]{4}|x[0-9A-Fa-f]{2}|[0-7]{3}|\r\n|\n|[\s\S])|"/g;
+MessageFormatParser.prototype.ruleInsideString = function ruleInsideString() {
+  var match = this.searchRe(this.stringInterestsRe);
+  if (match == null) {
+    var position = indexToLineAndColumn(this.text, this.stringStartIndex);
+    throw $interpolateMinErr('untermstr',
+        'The string beginning at line {0}, column {1} is unterminated in text “{2}”',
+        position.line, position.column, this.text);
+  }
+  var chars = match[0];
+  if (match == this.stringQuote) {
+    this.rule = null;
+  }
+};
+
+var PLURAL_OR_SELECT_ARG_TYPE_RE = /\s*(plural|select)\s*,\s*/g;
+MessageFormatParser.prototype.rulePluralOrSelect = function rulePluralOrSelect() {
+  var match = this.searchRe(PLURAL_OR_SELECT_ARG_TYPE_RE);
+  if (match == null) {
+    this.errorExpecting();
+  }
+  var argType = match[1];
+  switch (argType) {
+    case "plural": this.rule = this.rulePluralStyle; break;
+    case "select": this.rule = this.ruleSelectStyle; break;
+    default: this.errorInParseLogic();
+  }
+};
+
+MessageFormatParser.prototype.rulePluralStyle = function rulePluralStyle() {
+  this.choices = Object.create(null);
+  this.ruleChoiceKeyword = this.rulePluralValueOrKeyword;
+  this.rule = this.rulePluralOffset;
+};
+
+MessageFormatParser.prototype.ruleSelectStyle = function ruleSelectStyle() {
+  this.choices = Object.create(null);
+  this.ruleChoiceKeyword = this.ruleSelectKeyword;
+  this.rule = this.ruleSelectKeyword;
+};
+
+var NUMBER_RE = /[0]|(?:[1-9][0-9]*)/g;
+var PLURAL_OFFSET_RE = new RegExp("\\s*offset\\s*:\\s*(" + NUMBER_RE.source + ")", "g");
+
+MessageFormatParser.prototype.rulePluralOffset = function rulePluralOffset() {
+  var match = this.matchRe(PLURAL_OFFSET_RE);
+  this.pluralOffset = (match == null) ? 0 : parseInt(match[1], 10);
+  this.expressionMinusOffsetFn = subtractOffset(this.expressionFn, this.pluralOffset);
+  this.rule = this.rulePluralValueOrKeyword;
+};
+
+MessageFormatParser.prototype.assertChoiceKeyIsNew = function assertChoiceKeyIsNew(choiceKey, index) {
+  if (this.choices[choiceKey] !== void 0) {
+    var position = indexToLineAndColumn(this.text, index);
+    throw $interpolateMinErr('dupvalue',
+        'The choice “{0}” is specified more than once. Duplicate key is at line {1}, column {2} in text “{3}”',
+        choiceKey, position.line, position.column, this.text);
+  }
+};
+
+var SELECT_KEYWORD = /\s*(\w+)/g;
+MessageFormatParser.prototype.ruleSelectKeyword = function ruleSelectKeyword() {
+  var match = this.matchRe(SELECT_KEYWORD);
+  if (match == null) {
+    this.parsedFn = new SelectMessage(this.expressionFn, this.choices).parsedFn;
+    this.rule = null;
+    return;
+  }
+  this.choiceKey = match[1];
+  this.assertChoiceKeyIsNew(this.choiceKey, match.index);
+  this.rule = this.ruleMessageText;
+};
+
+var EXPLICIT_VALUE_OR_KEYWORD_RE = new RegExp("\\s*(?:(?:=(" + NUMBER_RE.source + "))|(\\w+))", "g");
+MessageFormatParser.prototype.rulePluralValueOrKeyword = function rulePluralValueOrKeyword() {
+  var match = this.matchRe(EXPLICIT_VALUE_OR_KEYWORD_RE);
+  if (match == null) {
+    this.parsedFn = new PluralMessage(this.expressionFn, this.choices, this.pluralOffset, this.pluralCat).parsedFn;
+    this.rule = null;
+    return;
+  }
+  if (match[1] != null) {
+    this.choiceKey = parseInt(match[1], 10);
+  } else {
+    this.choiceKey = match[2];
+  }
+  this.assertChoiceKeyIsNew(this.choiceKey, match.index);
+  this.rule = this.ruleMessageText;
+};
+
+var BRACE_OPEN_RE = /\s*{/g;
+var BRACE_CLOSE_RE = /}/g;
+MessageFormatParser.prototype.ruleMessageText = function ruleMessageText() {
+  if (!this.consumeRe(BRACE_OPEN_RE)) {
+    var position = indexToLineAndColumn(this.text, this.index);
+    throw $interpolateMinErr('reqopenbrace',
+        'The plural choice “{0}” must be followed by a message in braces at line {1}, column {2} in text “{3}”',
+        this.choiceKey, position.line, position.column, this.text);
+  }
+  this.msgStartIndex = this.index;
+  this.interpolationParts = new InterpolationParts(this.trustedContext, this.allOrNothing);
+  this.rule = this.ruleInInterpolationOrMessageText;
+};
+
+// Note: Since "\" is used as an escape character, don't allow it to be part of the
+// startSymbol/endSymbol when I add the feature to allow them to be redefined.
+var INTERP_OR_END_MESSAGE_RE = /\\.|{{|}/g;
+var INTERP_OR_PLURALVALUE_OR_END_MESSAGE_RE = /\\.|{{|#|}/g;
+var ESCAPE_OR_MUSTACHE_BEGIN_RE = /\\.|{{/g;
+MessageFormatParser.prototype.advanceInInterpolationOrMessageText = function advanceInInterpolationOrMessageText() {
+  var currentIndex = this.index, match, re;
+  if (this.ruleChoiceKeyword == null) { // interpolation
+    match = this.searchRe(ESCAPE_OR_MUSTACHE_BEGIN_RE);
+    if (match == null) { // End of interpolation text.  Nothing more to process.
+      this.textPart = this.text.substring(currentIndex);
+      this.index = this.text.length;
+      return null;
+    }
+  } else {
+    match = this.searchRe(this.ruleChoiceKeyword == this.rulePluralValueOrKeyword ?
+                          INTERP_OR_PLURALVALUE_OR_END_MESSAGE_RE : INTERP_OR_END_MESSAGE_RE);
+    if (match == null) {
+      var position = indexToLineAndColumn(this.text, this.msgStartIndex);
+      throw $interpolateMinErr('reqendbrace',
+          'The plural/select choice “{0}” message starting at line {1}, column {2} does not have an ending closing brace. Text “{3}”',
+          this.choiceKey, position.line, position.column, this.text);
+    }
+  }
+  // match is non-null.
+  var token = match[0];
+  this.textPart = this.text.substring(currentIndex, match.index);
+  return token;
+};
+
+MessageFormatParser.prototype.ruleInInterpolationOrMessageText = function ruleInInterpolationOrMessageText() {
+  var currentIndex = this.index;
+  var token = this.advanceInInterpolationOrMessageText();
+  if (token == null) {
+    // End of interpolation text.  Nothing more to process.
+    this.index = this.text.length;
+    this.interpolationParts.addText(this.text.substring(currentIndex));
+    this.rule = null;
+    return;
+  }
+  if (token[0] == "\\") {
+    // unescape next character and continue
+    this.interpolationParts.addText(this.textPart + token[1]);
+    return;
+  }
+  this.interpolationParts.addText(this.textPart);
+  if (token == "{{") {
+    this.pushState();
+    this.ruleStack.push(this.ruleEndMustacheInInterpolationOrMessage);
+    this.rule = this.ruleEnteredMustache;
+  } else if (token == "}") {
+    this.choices[this.choiceKey] = this.interpolationParts.toParsedFn(/*mustHaveExpression=*/false, this.text);
+    this.rule = this.ruleChoiceKeyword;
+  } else if (token == "#") {
+    this.interpolationParts.addExpressionFn(this.expressionMinusOffsetFn);
+  } else {
+    this.errorInParseLogic();
+  }
+};
+
+MessageFormatParser.prototype.ruleInterpolate = function ruleInterpolate() {
+  this.interpolationParts = new InterpolationParts(this.trustedContext, this.allOrNothing);
+  this.rule = this.ruleInInterpolation;
+};
+
+MessageFormatParser.prototype.ruleInInterpolation = function ruleInInterpolation() {
+  var currentIndex = this.index;
+  var match = this.searchRe(ESCAPE_OR_MUSTACHE_BEGIN_RE);
+  if (match == null) {
+    // End of interpolation text.  Nothing more to process.
+    this.index = this.text.length;
+    this.interpolationParts.addText(this.text.substring(currentIndex));
+    this.parsedFn = this.interpolationParts.toParsedFn(this.mustHaveExpression, this.text);
+    this.rule = null;
+    return;
+  }
+  var token = match[0];
+  if (token[0] == "\\") {
+    // unescape next character and continue
+    this.interpolationParts.addText(this.text.substring(currentIndex, match.index) + token[1]);
+    return;
+  }
+  this.interpolationParts.addText(this.text.substring(currentIndex, match.index));
+  this.pushState();
+  this.ruleStack.push(this.ruleInterpolationEndMustache);
+  this.rule = this.ruleEnteredMustache;
+};
+
+MessageFormatParser.prototype.ruleInterpolationEndMustache = function ruleInterpolationEndMustache() {
+  var expressionFn = this.parsedFn;
+  this.popState();
+  this.interpolationParts.addExpressionFn(expressionFn);
+  this.rule = this.ruleInInterpolation;
+};
+
+MessageFormatParser.prototype.ruleEnteredMustache = function ruleEnteredMustache() {
+  this.parsedFn = null;
+  this.ruleStack.push(this.ruleEndMustache);
+  this.rule = this.ruleAngularExpression;
+};
+
+MessageFormatParser.prototype.ruleEndMustacheInInterpolationOrMessage = function ruleEndMustacheInInterpolationOrMessage() {
+  var expressionFn = this.parsedFn;
+  this.popState();
+  this.interpolationParts.addExpressionFn(expressionFn);
+  this.rule = this.ruleInInterpolationOrMessageText;
+};
+
+
+
+var INTERP_END_RE = /\s*}}/g;
+MessageFormatParser.prototype.ruleEndMustache = function ruleEndMustache() {
+  var match = this.matchRe(INTERP_END_RE);
+  if (match == null) {
+    var position = indexToLineAndColumn(this.text, this.index);
+    throw $interpolateMinErr('reqendinterp',
+        'Expecting end of interpolation symbol, “{0}”, at line {1}, column {2} in text “{3}”',
+        '}}', position.line, position.column, this.text);
+  }
+  if (this.parsedFn == null) {
+    // If we parsed a MessageFormat extension, (e.g. select/plural today, maybe more some other
+    // day), then the result *has* to be a string and those rules would have already set
+    // this.parsedFn.  If there was no MessageFormat extension, then there is no requirement to
+    // stringify the result and parsedFn isn't set.  We set it here.  While we could have set it
+    // unconditionally when exiting the Angular expression, I intend for us to not just replace
+    // $interpolate, but also to replace $parse in a future version (so ng-bind can work), and in
+    // such a case we do not want to unnecessarily stringify something if it's not going to be used
+    // in a string context.
+    this.parsedFn = this.$parse(this.expressionFn, this.stringifier);
+    this.parsedFn['exp'] = this.expressionFn['exp']; // Needed to pretend to be $interpolate for tests copied from interpolateSpec.js
+    this.parsedFn['expressions'] = this.expressionFn['expressions']; // Require this to call $compile.$$addBindingInfo() which allows Protractor to find elements by binding.
+  }
+  this.rule = null;
+};
+
+MessageFormatParser.prototype.ruleAngularExpression = function ruleAngularExpression() {
+  this.angularOperatorStack = [];
+  this.expressionStartIndex = this.index;
+  this.rule = this.ruleInAngularExpression;
+};
+
+function getEndOperator(opBegin) {
+  switch (opBegin) {
+    case "{": return "}";
+    case "[": return "]";
+    case "(": return ")";
+    default: return null;
+  }
+}
+
+function getBeginOperator(opEnd) {
+  switch (opEnd) {
+    case "}": return "{";
+    case "]": return "[";
+    case ")": return "(";
+    default: return null;
+  }
+}
+
+// TODO(chirayu): The interpolation endSymbol must also be accounted for. It
+// just so happens that "}" is an operator so it's in the list below.  But we
+// should support any other type of start/end interpolation symbol.
+var INTERESTING_OPERATORS_RE = /[[\]{}()'",]/g;
+MessageFormatParser.prototype.ruleInAngularExpression = function ruleInAngularExpression() {
+  var startIndex = this.index;
+  var match = this.searchRe(INTERESTING_OPERATORS_RE);
+  var position;
+  if (match == null) {
+    if (this.angularOperatorStack.length === 0) {
+      // This is the end of the Angular expression so this is actually a
+      // success.  Note that when inside an interpolation, this means we even
+      // consumed the closing interpolation symbols if they were curlies.  This
+      // is NOT an error at this point but will become an error further up the
+      // stack when the part that saw the opening curlies is unable to find the
+      // closing ones.
+      this.index = this.text.length;
+      this.expressionFn = this.$parse(this.text.substring(this.expressionStartIndex, this.index));
+      // Needed to pretend to be $interpolate for tests copied from interpolateSpec.js
+      this.expressionFn['exp'] = this.text.substring(this.expressionStartIndex, this.index);
+      this.expressionFn['expressions'] = this.expressionFn['expressions'];
+      this.rule = null;
+      return;
+    }
+    var innermostOperator = this.angularOperatorStack[0];
+    throw $interpolateMinErr('badexpr',
+        'Unexpected end of Angular expression.  Expecting operator “{0}” at the end of the text “{1}”',
+        this.getEndOperator(innermostOperator), this.text);
+  }
+  var operator = match[0];
+  if (operator == "'" || operator == '"') {
+    this.ruleStack.push(this.ruleInAngularExpression);
+    this.startStringAtMatch(match);
+    return;
+  }
+  if (operator == ",") {
+    if (this.trustedContext) {
+      position = indexToLineAndColumn(this.text, this.index);
+      throw $interpolateMinErr('unsafe',
+          'Use of select/plural MessageFormat syntax is currently disallowed in a secure context ({0}).  At line {1}, column {2} of text “{3}”',
+          this.trustedContext, position.line, position.column, this.text);
+    }
+    // only the top level comma has relevance.
+    if (this.angularOperatorStack.length === 0) {
+      // todo: does this need to be trimmed?
+      this.expressionFn = this.$parse(this.text.substring(this.expressionStartIndex, match.index));
+      // Needed to pretend to be $interpolate for tests copied from interpolateSpec.js
+      this.expressionFn['exp'] = this.text.substring(this.expressionStartIndex, match.index);
+      this.expressionFn['expressions'] = this.expressionFn['expressions'];
+      this.rule = null;
+      this.rule = this.rulePluralOrSelect;
+    }
+    return;
+  }
+  if (getEndOperator(operator) != null) {
+    this.angularOperatorStack.unshift(operator);
+    return;
+  }
+  var beginOperator = getBeginOperator(operator);
+  if (beginOperator == null) {
+    this.errorInParseLogic();
+  }
+  if (this.angularOperatorStack.length > 0) {
+    if (beginOperator == this.angularOperatorStack[0]) {
+      this.angularOperatorStack.shift();
+      return;
+    }
+    position = indexToLineAndColumn(this.text, this.index);
+    throw $interpolateMinErr('badexpr',
+        'Unexpected operator “{0}” at line {1}, column {2} in text. Was expecting “{3}”. Text: “{4}”',
+        operator, position.line, position.column, getEndOperator(this.angularOperatorStack[0]), this.text);
+  }
+  // We are trying to pop off the operator stack but there really isn't anything to pop off.
+  this.index = match.index;
+  this.expressionFn = this.$parse(this.text.substring(this.expressionStartIndex, this.index));
+  // Needed to pretend to be $interpolate for tests copied from interpolateSpec.js
+  this.expressionFn['exp'] = this.text.substring(this.expressionStartIndex, this.index);
+  this.expressionFn['expressions'] = this.expressionFn['expressions'];
+  this.rule = null;
+};
+
+// NOTE: ADVANCED_OPTIMIZATIONS mode.
+//
+// This file is compiled with Closure compiler's ADVANCED_OPTIMIZATIONS flag! Be wary of using
+// constructs incompatible with that mode.
+
+/* global $interpolateMinErr: false */
+/* global MessageFormatParser: false */
+/* global stringify: false */
+
+/**
+ * @ngdoc service
+ * @name $$messageFormat
+ *
+ * @description
+ * Angular internal service to recognize MessageFormat extensions in interpolation expressions.
+ * For more information, see:
+ * https://docs.google.com/a/google.com/document/d/1pbtW2yvtmFBikfRrJd8VAsabiFkKezmYZ_PbgdjQOVU/edit
+ *
+ * ## Example
+ *
+ * <example name="ngMessageFormat-example" module="msgFmtExample" deps="angular-message-format.min.js">
+ * <file name="index.html">
+ *   <div ng-controller="AppController">
+ *     <button ng-click="decreaseRecipients()" id="decreaseRecipients">decreaseRecipients</button><br>
+ *     <span>{{recipients.length, plural, offset:1
+ *             =0    {{{sender.name}} gave no gifts (\#=#)}
+ *             =1    {{{sender.name}} gave one gift to {{recipients[0].name}} (\#=#)}
+ *             one   {{{sender.name}} gave {{recipients[0].name}} and one other person a gift (\#=#)}
+ *             other {{{sender.name}} gave {{recipients[0].name}} and # other people a gift (\#=#)}
+ *           }}</span>
+ *   </div>
+ * </file>
+ *
+ * <file name="script.js">
+ *   function Person(name, gender) {
+ *     this.name = name;
+ *     this.gender = gender;
+ *   }
+ *
+ *   var alice   = new Person("Alice", "female"),
+ *       bob     = new Person("Bob", "male"),
+ *       charlie = new Person("Charlie", "male"),
+ *       harry   = new Person("Harry Potter", "male");
+ *
+ *   angular.module('msgFmtExample', ['ngMessageFormat'])
+ *     .controller('AppController', ['$scope', function($scope) {
+ *         $scope.recipients = [alice, bob, charlie];
+ *         $scope.sender = harry;
+ *         $scope.decreaseRecipients = function() {
+ *           --$scope.recipients.length;
+ *         };
+ *       }]);
+ * </file>
+ *
+ * <file name="protractor.js" type="protractor">
+ *   describe('MessageFormat plural', function() {
+ *     it('should pluralize initial values', function() {
+ *       var messageElem = element(by.binding('recipients.length')), decreaseRecipientsBtn = element(by.id('decreaseRecipients'));
+ *       expect(messageElem.getText()).toEqual('Harry Potter gave Alice and 2 other people a gift (#=2)');
+ *       decreaseRecipientsBtn.click();
+ *       expect(messageElem.getText()).toEqual('Harry Potter gave Alice and one other person a gift (#=1)');
+ *       decreaseRecipientsBtn.click();
+ *       expect(messageElem.getText()).toEqual('Harry Potter gave one gift to Alice (#=0)');
+ *       decreaseRecipientsBtn.click();
+ *       expect(messageElem.getText()).toEqual('Harry Potter gave no gifts (#=-1)');
+ *     });
+ *   });
+ * </file>
+ * </example>
+ */
+var $$MessageFormatFactory = ['$parse', '$locale', '$sce', '$exceptionHandler', function $$messageFormat(
+                   $parse,   $locale,   $sce,   $exceptionHandler) {
+
+  function getStringifier(trustedContext, allOrNothing, text) {
+    return function stringifier(value) {
+      try {
+        value = trustedContext ? $sce['getTrusted'](trustedContext, value) : $sce['valueOf'](value);
+        return allOrNothing && (value === void 0) ? value : stringify(value);
+      } catch (err) {
+        $exceptionHandler($interpolateMinErr['interr'](text, err));
+      }
+    };
+  }
+
+  function interpolate(text, mustHaveExpression, trustedContext, allOrNothing) {
+    var stringifier = getStringifier(trustedContext, allOrNothing, text);
+    var parser = new MessageFormatParser(text, 0, $parse, $locale['pluralCat'], stringifier,
+                                         mustHaveExpression, trustedContext, allOrNothing);
+    parser.run(parser.ruleInterpolate);
+    return parser.parsedFn;
+  }
+
+  return {
+    'interpolate': interpolate
+  };
+}];
+
+var $$interpolateDecorator = ['$$messageFormat', '$delegate', function $$interpolateDecorator($$messageFormat, $interpolate) {
+  if ($interpolate['startSymbol']() != "{{" || $interpolate['endSymbol']() != "}}") {
+    throw $interpolateMinErr('nochgmustache', 'angular-message-format.js currently does not allow you to use custom start and end symbols for interpolation.');
+  }
+  var interpolate = $$messageFormat['interpolate'];
+  interpolate['startSymbol'] = $interpolate['startSymbol'];
+  interpolate['endSymbol'] = $interpolate['endSymbol'];
+  return interpolate;
+}];
+
+
+/**
+ * @ngdoc module
+ * @name ngMessageFormat
+ * @packageName angular-message-format
+ * @description
+ */
+var module = window['angular']['module']('ngMessageFormat', ['ng']);
+module['factory']('$$messageFormat', $$MessageFormatFactory);
+module['config'](['$provide', function($provide) {
+  $provide['decorator']('$interpolate', $$interpolateDecorator);
+}]);
+
+
+})(window, window.angular);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-message-format.min.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-message-format.min.js b/rocketmq-console/src/main/resources/static/vendor/angular/angular-message-format.min.js
new file mode 100644
index 0000000..25bd7bd
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-message-format.min.js
@@ -0,0 +1,26 @@
+/*
+ AngularJS v1.5.6
+ (c) 2010-2016 Google, Inc. http://angularjs.org
+ License: MIT
+*/
+(function(h){'use strict';function C(a){if(null==a)return"";switch(typeof a){case "string":return a;case "number":return""+a;default:return D(a)}}function f(a,b){for(var d=a.split(/\n/g),k=0;k<d.length;k++){var c=d[k];if(b>=c.length)b-=c.length;else return{h:k+1,f:b+1}}}function t(a){function b(){return a}var d=u[a];if(null!=d)return d;b.$$watchDelegate=function(b,d,c){var e=b.$watch(v,function(){m(d)&&d.call(null,a,a,b);e()},c);return e};u[a]=b;b.exp=a;b.expressions=[];return b}function F(a,b){function d(a){return void 0==
+a?a:a-b}function c(b){return d(a(b))}if(0===b)return a;var e;c.$$watchDelegate=function(b,c,k){return e=b.$watch(a,function(a,k){m(c)&&c.call(null,d(a),d(k),b)},k)};return c}function l(a,b){var d=this;this.b=a;this.e=b;if(void 0===b.other)throw e("reqother");this.d=function(a){return d.D(a)};this.d.$$watchDelegate=function(a,b,c){return d.P(a,b,c)};this.d.exp=a.exp;this.d.expressions=a.expressions}function n(a,b,d,c){var e=this;this.scope=b;this.oa=a;this.v=d;this.qa=c;this.U=void 0;this.K=v;this.ka=
+b.$watch(a.b,function(a){return e.ja(a)},c)}function p(a,b){l.call(this,a,b)}function w(){}function q(a,b,d,c){l.call(this,a,b);this.offset=d;this.M=c}function x(){}function g(a,b){this.u=a;this.B=b;this.i=[];this.g=[];this.J=[];this.s="";this.q=null}function r(a,b,d){this.c=a;this.scope=b;this.W=void 0;this.v=d;var c=this;this.la=b.$watchGroup(a.g,function(a,b){c.Ea(a,b)})}function s(a,b){b.b=a.b;b.C=a.C;b.w=a.w;b.e=a.e;b.k=a.k;b.c=a.c;b.n=a.n;b.F=a.F;b.l=a.l}function y(a){s(a,this)}function c(a,
+b,d,c,e,E,f,g){this.text=a;this.index=b||0;this.A=d;this.M=c;this.Da=e;this.pa=!!E;this.u=f;this.B=!!g;this.F=this.c=this.k=this.e=this.w=this.C=this.b=null;this.L=[];this.G=this.j=this.ca=this.O=this.da=this.l=this.n=this.o=this.a=this.d=null}function z(a){switch(a){case "{":return"}";case "[":return"]";case "(":return")";default:return null}}function G(a){switch(a){case "}":return"{";case "]":return"[";case ")":return"(";default:return null}}var e=h.angular.$interpolateMinErr,v=h.angular.noop,m=
+h.angular.isFunction,D=h.angular.toJson,u=Object.create(null);l.prototype.T=function(a){return this.e[this.R(a)]};l.prototype.D=function(a){return this.T(this.b(a))(a)};l.prototype.P=function(a,b,d){var c=new n(this,a,b,d);return function(){c.I()}};n.prototype.ja=function(a){var b=this;this.K();a=this.oa.T(a);this.K=this.scope.$watch(a,function(a,c){return b.na(a,c)},this.qa)};n.prototype.na=function(a,b){m(this.v)&&this.v.call(null,a,a===b?a:this.U,this.scope);this.U=a};n.prototype.I=function(){this.ka();
+this.K()};w.prototype=l.prototype;p.prototype=new w;p.prototype.R=function(a){return void 0!==this.e[a]?a:"other"};x.prototype=l.prototype;q.prototype=new x;q.prototype.R=function(a){if(isNaN(a))return"other";if(void 0!==this.e[a])return a;a=this.M(a-this.offset);return void 0!==this.e[a]?a:"other"};g.prototype.S=function(){this.s&&(null==this.q?this.i.push(this.s):(this.i.push(this.q.join("")),this.q=null),this.s="")};g.prototype.p=function(a){a.length&&(this.s?this.q?this.q.push(a):this.q=[this.s,
+a]:this.s=a)};g.prototype.H=function(a){this.S();this.J.push(this.i.length);this.g.push(a);this.i.push("")};g.prototype.ma=function(a){for(var b=Array(this.g.length),d=0;d<this.g.length;d++)b[d]=this.g[d](a);return b};g.prototype.D=function(a){for(var b=0;b<this.J.length;b++){var d=a[b];if(this.B&&void 0===d)return;this.i[this.J[b]]=d}return this.i.join("")};g.prototype.ea=function(a,b){var d=this;this.S();if(!a||0!==this.g.length){if(0===this.i.length)return t("");this.u&&1<this.i.length&&e.throwNoconcat(b);
+if(0===this.g.length)return 1!=this.i.length&&this.r(),t(this.i[0]);var c=function(a){return d.D(d.ma(a))};c.$$watchDelegate=function(a,b,c){return d.P(a,b,c)};c.exp=b;c.expressions=Array(this.g.length);for(var f=0;f<this.g.length;f++)c.expressions[f]=this.g[f].exp;return c}};g.prototype.P=function(a,b){var c=new r(this,a,b);return function(){c.I()}};r.prototype.Ea=function(a,b){var c=this.c.D(a);m(this.v)&&this.v.call(null,c,a===b?c:this.W,this.scope);this.W=c};r.prototype.I=function(){this.la()};
+var H=new y(new c("",0,null,null,null,!1,null,!1));c.prototype.pushState=function(){this.L.push(new y(this));s(H,this)};c.prototype.V=function(){0===this.L.length&&this.r();var a=this.L.pop();s(a,this)};c.prototype.m=function(a,b){a.lastIndex=this.index;var c=a.exec(this.text);return null==c||!0!==b&&c.index!=this.index?null:(this.index=a.lastIndex,c)};c.prototype.t=function(a){return this.m(a,!0)};c.prototype.ha=function(a){return!!this.m(a)};c.prototype.Ba=function(a){this.o=[a];do{for(this.a=this.o.pop();this.a;)this.a();
+this.ga(this.a)}while(0<this.o.length)};c.prototype.r=function(){throw e("logicbug",this.text);};c.prototype.ga=function(a){void 0===a&&this.r()};var I=/\s*(\w+)\s*/g;c.prototype.ia=function(){var a=this.m(I);if(null==a)throw a=f(this.text,this.index),e("reqarg",a.h,a.f,this.text);var b=a[1];if("select"==b||"plural"==b)throw a=f(this.text,this.index),e("reqcomma",b,a.h,a.f,this.text);a=f(this.text,this.index);throw e("unknarg",b,a.h,a.f,this.text);};c.prototype.Ca=function(a){this.da=a.index;this.O=
+a[0];this.ca="'"==this.O?J:K;this.a=this.ua};var J=/\\(?:\\|'|u[0-9A-Fa-f]{4}|x[0-9A-Fa-f]{2}|[0-7]{3}|\r\n|\n|[\s\S])|'/g,K=/\\(?:\\|"|u[0-9A-Fa-f]{4}|x[0-9A-Fa-f]{2}|[0-7]{3}|\r\n|\n|[\s\S])|"/g;c.prototype.ua=function(){var a=this.t(this.ca);if(null==a)throw a=f(this.text,this.da),e("untermstr",a.h,a.f,this.text);a==this.O&&(this.a=null)};var L=/\s*(plural|select)\s*,\s*/g;c.prototype.ya=function(){var a=this.t(L);null==a&&this.ia();switch(a[1]){case "plural":this.a=this.za;break;case "select":this.a=
+this.Aa;break;default:this.r()}};c.prototype.za=function(){this.e=Object.create(null);this.n=this.N;this.a=this.xa};c.prototype.Aa=function(){this.e=Object.create(null);this.a=this.n=this.ba};var A=/[0]|(?:[1-9][0-9]*)/g,M=new RegExp("\\s*offset\\s*:\\s*("+A.source+")","g");c.prototype.xa=function(){var a=this.m(M);this.w=null==a?0:parseInt(a[1],10);this.C=F(this.b,this.w);this.a=this.N};c.prototype.Q=function(a,b){if(void 0!==this.e[a]){var c=f(this.text,b);throw e("dupvalue",a,c.h,c.f,this.text);
+}};var N=/\s*(\w+)/g;c.prototype.ba=function(){var a=this.m(N);null==a?(this.d=(new p(this.b,this.e)).d,this.a=null):(this.k=a[1],this.Q(this.k,a.index),this.a=this.aa)};var O=new RegExp("\\s*(?:(?:=("+A.source+"))|(\\w+))","g");c.prototype.N=function(){var a=this.m(O);null==a?(this.d=(new q(this.b,this.e,this.w,this.M)).d,this.a=null):(this.k=null!=a[1]?parseInt(a[1],10):a[2],this.Q(this.k,a.index),this.a=this.aa)};var P=/\s*{/g;c.prototype.aa=function(){if(!this.ha(P)){var a=f(this.text,this.index);
+throw e("reqopenbrace",this.k,a.h,a.f,this.text);}this.F=this.index;this.c=new g(this.u,this.B);this.a=this.$};var Q=/\\.|{{|}/g,R=/\\.|{{|#|}/g,B=/\\.|{{/g;c.prototype.fa=function(){var a=this.index,b;if(null==this.n){if(b=this.t(B),null==b)return this.G=this.text.substring(a),this.index=this.text.length,null}else if(b=this.t(this.n==this.N?R:Q),null==b)throw a=f(this.text,this.F),e("reqendbrace",this.k,a.h,a.f,this.text);var c=b[0];this.G=this.text.substring(a,b.index);return c};c.prototype.$=function(){var a=
+this.index,b=this.fa();null==b?(this.index=this.text.length,this.c.p(this.text.substring(a)),this.a=null):"\\"==b[0]?this.c.p(this.G+b[1]):(this.c.p(this.G),"{{"==b?(this.pushState(),this.o.push(this.ta),this.a=this.X):"}"==b?(this.e[this.k]=this.c.ea(!1,this.text),this.a=this.n):"#"==b?this.c.H(this.C):this.r())};c.prototype.va=function(){this.c=new g(this.u,this.B);this.a=this.Z};c.prototype.Z=function(){var a=this.index,b=this.t(B);if(null==b)this.index=this.text.length,this.c.p(this.text.substring(a)),
+this.d=this.c.ea(this.pa,this.text),this.a=null;else{var c=b[0];"\\"==c[0]?this.c.p(this.text.substring(a,b.index)+c[1]):(this.c.p(this.text.substring(a,b.index)),this.pushState(),this.o.push(this.wa),this.a=this.X)}};c.prototype.wa=function(){var a=this.d;this.V();this.c.H(a);this.a=this.Z};c.prototype.X=function(){this.d=null;this.o.push(this.sa);this.a=this.ra};c.prototype.ta=function(){var a=this.d;this.V();this.c.H(a);this.a=this.$};var S=/\s*}}/g;c.prototype.sa=function(){if(null==this.m(S)){var a=
+f(this.text,this.index);throw e("reqendinterp","}}",a.h,a.f,this.text);}null==this.d&&(this.d=this.A(this.b,this.Da),this.d.exp=this.b.exp,this.d.expressions=this.b.expressions);this.a=null};c.prototype.ra=function(){this.j=[];this.l=this.index;this.a=this.Y};var T=/[[\]{}()'",]/g;c.prototype.Y=function(){var a=this.t(T);if(null==a){if(0===this.j.length){this.index=this.text.length;this.b=this.A(this.text.substring(this.l,this.index));this.b.exp=this.text.substring(this.l,this.index);this.b.expressions=
+this.b.expressions;this.a=null;return}throw e("badexpr",this.Ga(this.j[0]),this.text);}var b=a[0];if("'"==b||'"'==b)this.o.push(this.Y),this.Ca(a);else if(","==b){if(this.u)throw a=f(this.text,this.index),e("unsafe",this.u,a.h,a.f,this.text);0===this.j.length&&(this.b=this.A(this.text.substring(this.l,a.index)),this.b.exp=this.text.substring(this.l,a.index),this.b.expressions=this.b.expressions,this.a=null,this.a=this.ya)}else if(null!=z(b))this.j.unshift(b);else{var c=G(b);null==c&&this.r();if(0<
+this.j.length){if(c==this.j[0]){this.j.shift();return}a=f(this.text,this.index);throw e("badexpr",b,a.h,a.f,z(this.j[0]),this.text);}this.index=a.index;this.b=this.A(this.text.substring(this.l,this.index));this.b.exp=this.text.substring(this.l,this.index);this.b.expressions=this.b.expressions;this.a=null}};var U=["$$messageFormat","$delegate",function(a,b){if("{{"!=b.startSymbol()||"}}"!=b.endSymbol())throw e("nochgmustache");var c=a.interpolate;c.startSymbol=b.startSymbol;c.endSymbol=b.endSymbol;
+return c}];h=h.angular.module("ngMessageFormat",["ng"]);h.factory("$$messageFormat",["$parse","$locale","$sce","$exceptionHandler",function(a,b,d,f){function g(a,b,c){return function(g){try{return g=a?d.getTrusted(a,g):d.valueOf(g),b&&void 0===g?g:C(g)}catch(h){f(e.interr(c,h))}}}return{interpolate:function(d,e,f,h){d=new c(d,0,a,b.pluralCat,g(f,h,d),e,f,h);d.Ba(d.va);return d.d}}}]);h.config(["$provide",function(a){a.decorator("$interpolate",U)}])})(window,window.Fa);
+//# sourceMappingURL=angular-message-format.min.js.map

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-message-format.min.js.map
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-message-format.min.js.map b/rocketmq-console/src/main/resources/static/vendor/angular/angular-message-format.min.js.map
new file mode 100644
index 0000000..77c8e04
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-message-format.min.js.map
@@ -0,0 +1,8 @@
+{
+"version":3,
+"file":"angular-message-format.min.js",
+"lineCount":25,
+"mappings":"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",
+"sources":["angular-message-format.js"],
+"names":["window","stringify","value","toJson","indexToLineAndColumn","text","index","lines","split","i","length","line","column","parseTextLiteral","parsedFn","cachedFn","PARSE_CACHE_FOR_TEXT_LITERALS","scope","listener","objectEquality","unwatch","noop","textLiteralWatcher","isFunction","call","subtractOffset","expressionFn","offset","minusOffset","context","pluralExpressionWatchListener","newValue","oldValue","MessageSelectorBase","choices","self","$interpolateMinErr","this.parsedFn","getResult","watchDelegate","MessageSelectorWatchers","msgSelector","lastMessage","messageFnWatcher","expressionFnWatcher","expressionFnListener","SelectMessage","SelectMessageProto","PluralMessage","pluralCat","PluralMessageProto","InterpolationParts","trustedContext","allOrNothing","textParts","expressionFns","expressionIndices","partialText","concatParts","InterpolationPartsWatcher","interpolationParts","previousResult","expressionFnsWatcher","newExpressionValues","oldExpressionValues","watchListe
 ner","copyNestedParserState","src","dst","expressionMinusOffsetFn","pluralOffset","choiceKey","ruleChoiceKeyword","msgStartIndex","expressionStartIndex","NestedParserState","parser","MessageFormatParser","startIndex","$parse","stringifier","mustHaveExpression","nestedStateStack","textPart","angularOperatorStack","stringInterestsRe","stringQuote","stringStartIndex","ruleStack","rule","getEndOperator","opBegin","getBeginOperator","opEnd","Object","create","prototype","getMessageFn","MessageSelectorBase.prototype.getMessageFn","categorizeValue","MessageSelectorBase.prototype.getResult","MessageSelectorBase.prototype.watchDelegate","watchers","cancelWatch","MessageSelectorWatchers.prototype.expressionFnListener","messageFn","messageFnListener","newMessage","oldMessage","MessageSelectorWatchers.prototype.messageFnListener","MessageSelectorWatchers.prototype.cancelWatch","SelectMessage.prototype.categorizeValue","PluralMessage.prototype.categorizeValue","isNaN","category","flushPartialTex
 t","InterpolationParts.prototype.flushPartialText","push","join","addText","InterpolationParts.prototype.addText","addExpressionFn","InterpolationParts.prototype.addExpressionFn","getExpressionValues","InterpolationParts.prototype.getExpressionValues","expressionValues","Array","InterpolationParts.prototype.getResult","expressionValue","toParsedFn","InterpolationParts.prototype.toParsedFn","originalText","errorInParseLogic","InterpolationParts.prototype.watchDelegate","watcher","InterpolationPartsWatcher.prototype.watchListener","result","InterpolationPartsWatcher.prototype.cancelWatch","EMPTY_STATE","pushState","MessageFormatParser.prototype.pushState","popState","MessageFormatParser.prototype.popState","previousState","pop","matchRe","MessageFormatParser.prototype.matchRe","re","search","lastIndex","match","exec","searchRe","MessageFormatParser.prototype.searchRe","consumeRe","MessageFormatParser.prototype.consumeRe","run","MessageFormatParser.prototype.run","initialRule","assertR
 uleOrNull","MessageFormatParser.prototype.errorInParseLogic","MessageFormatParser.prototype.assertRuleOrNull","NEXT_WORD_RE","errorExpecting","MessageFormatParser.prototype.errorExpecting","position","word","startStringAtMatch","MessageFormatParser.prototype.startStringAtMatch","SQUOTED_STRING_INTEREST_RE","DQUOTED_STRING_INTEREST_RE","ruleInsideString","MessageFormatParser.prototype.ruleInsideString","PLURAL_OR_SELECT_ARG_TYPE_RE","rulePluralOrSelect","MessageFormatParser.prototype.rulePluralOrSelect","argType","rulePluralStyle","ruleSelectStyle","MessageFormatParser.prototype.rulePluralStyle","rulePluralValueOrKeyword","rulePluralOffset","MessageFormatParser.prototype.ruleSelectStyle","ruleSelectKeyword","NUMBER_RE","PLURAL_OFFSET_RE","RegExp","source","MessageFormatParser.prototype.rulePluralOffset","parseInt","assertChoiceKeyIsNew","MessageFormatParser.prototype.assertChoiceKeyIsNew","SELECT_KEYWORD","MessageFormatParser.prototype.ruleSelectKeyword","ruleMessageText","EXPLICIT_V
 ALUE_OR_KEYWORD_RE","MessageFormatParser.prototype.rulePluralValueOrKeyword","BRACE_OPEN_RE","MessageFormatParser.prototype.ruleMessageText","ruleInInterpolationOrMessageText","INTERP_OR_END_MESSAGE_RE","INTERP_OR_PLURALVALUE_OR_END_MESSAGE_RE","ESCAPE_OR_MUSTACHE_BEGIN_RE","advanceInInterpolationOrMessageText","MessageFormatParser.prototype.advanceInInterpolationOrMessageText","currentIndex","substring","token","MessageFormatParser.prototype.ruleInInterpolationOrMessageText","ruleEndMustacheInInterpolationOrMessage","ruleEnteredMustache","ruleInterpolate","MessageFormatParser.prototype.ruleInterpolate","ruleInInterpolation","MessageFormatParser.prototype.ruleInInterpolation","ruleInterpolationEndMustache","MessageFormatParser.prototype.ruleInterpolationEndMustache","MessageFormatParser.prototype.ruleEnteredMustache","ruleEndMustache","ruleAngularExpression","MessageFormatParser.prototype.ruleEndMustacheInInterpolationOrMessage","INTERP_END_RE","MessageFormatParser.prototype.ruleEnd
 Mustache","MessageFormatParser.prototype.ruleAngularExpression","ruleInAngularExpression","INTERESTING_OPERATORS_RE","MessageFormatParser.prototype.ruleInAngularExpression","innermostOperator","operator","unshift","beginOperator","shift","$$interpolateDecorator","$$messageFormat","$interpolate","interpolate","module","$$MessageFormatFactory","$locale","$sce","$exceptionHandler","getStringifier","err","$provide","angular"]
+}


[33/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-resource.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-resource.js b/rocketmq-console/src/main/resources/static/vendor/angular/angular-resource.js
new file mode 100644
index 0000000..24b458d
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-resource.js
@@ -0,0 +1,768 @@
+/**
+ * @license AngularJS v1.5.6
+ * (c) 2010-2016 Google, Inc. http://angularjs.org
+ * License: MIT
+ */
+(function(window, angular) {'use strict';
+
+var $resourceMinErr = angular.$$minErr('$resource');
+
+// Helper functions and regex to lookup a dotted path on an object
+// stopping at undefined/null.  The path must be composed of ASCII
+// identifiers (just like $parse)
+var MEMBER_NAME_REGEX = /^(\.[a-zA-Z_$@][0-9a-zA-Z_$@]*)+$/;
+
+function isValidDottedPath(path) {
+  return (path != null && path !== '' && path !== 'hasOwnProperty' &&
+      MEMBER_NAME_REGEX.test('.' + path));
+}
+
+function lookupDottedPath(obj, path) {
+  if (!isValidDottedPath(path)) {
+    throw $resourceMinErr('badmember', 'Dotted member path "@{0}" is invalid.', path);
+  }
+  var keys = path.split('.');
+  for (var i = 0, ii = keys.length; i < ii && angular.isDefined(obj); i++) {
+    var key = keys[i];
+    obj = (obj !== null) ? obj[key] : undefined;
+  }
+  return obj;
+}
+
+/**
+ * Create a shallow copy of an object and clear other fields from the destination
+ */
+function shallowClearAndCopy(src, dst) {
+  dst = dst || {};
+
+  angular.forEach(dst, function(value, key) {
+    delete dst[key];
+  });
+
+  for (var key in src) {
+    if (src.hasOwnProperty(key) && !(key.charAt(0) === '$' && key.charAt(1) === '$')) {
+      dst[key] = src[key];
+    }
+  }
+
+  return dst;
+}
+
+/**
+ * @ngdoc module
+ * @name ngResource
+ * @description
+ *
+ * # ngResource
+ *
+ * The `ngResource` module provides interaction support with RESTful services
+ * via the $resource service.
+ *
+ *
+ * <div doc-module-components="ngResource"></div>
+ *
+ * See {@link ngResource.$resource `$resource`} for usage.
+ */
+
+/**
+ * @ngdoc service
+ * @name $resource
+ * @requires $http
+ * @requires ng.$log
+ * @requires $q
+ * @requires ng.$timeout
+ *
+ * @description
+ * A factory which creates a resource object that lets you interact with
+ * [RESTful](http://en.wikipedia.org/wiki/Representational_State_Transfer) server-side data sources.
+ *
+ * The returned resource object has action methods which provide high-level behaviors without
+ * the need to interact with the low level {@link ng.$http $http} service.
+ *
+ * Requires the {@link ngResource `ngResource`} module to be installed.
+ *
+ * By default, trailing slashes will be stripped from the calculated URLs,
+ * which can pose problems with server backends that do not expect that
+ * behavior.  This can be disabled by configuring the `$resourceProvider` like
+ * this:
+ *
+ * ```js
+     app.config(['$resourceProvider', function($resourceProvider) {
+       // Don't strip trailing slashes from calculated URLs
+       $resourceProvider.defaults.stripTrailingSlashes = false;
+     }]);
+ * ```
+ *
+ * @param {string} url A parameterized URL template with parameters prefixed by `:` as in
+ *   `/user/:username`. If you are using a URL with a port number (e.g.
+ *   `http://example.com:8080/api`), it will be respected.
+ *
+ *   If you are using a url with a suffix, just add the suffix, like this:
+ *   `$resource('http://example.com/resource.json')` or `$resource('http://example.com/:id.json')`
+ *   or even `$resource('http://example.com/resource/:resource_id.:format')`
+ *   If the parameter before the suffix is empty, :resource_id in this case, then the `/.` will be
+ *   collapsed down to a single `.`.  If you need this sequence to appear and not collapse then you
+ *   can escape it with `/\.`.
+ *
+ * @param {Object=} paramDefaults Default values for `url` parameters. These can be overridden in
+ *   `actions` methods. If a parameter value is a function, it will be executed every time
+ *   when a param value needs to be obtained for a request (unless the param was overridden).
+ *
+ *   Each key value in the parameter object is first bound to url template if present and then any
+ *   excess keys are appended to the url search query after the `?`.
+ *
+ *   Given a template `/path/:verb` and parameter `{verb:'greet', salutation:'Hello'}` results in
+ *   URL `/path/greet?salutation=Hello`.
+ *
+ *   If the parameter value is prefixed with `@` then the value for that parameter will be extracted
+ *   from the corresponding property on the `data` object (provided when calling an action method).
+ *   For example, if the `defaultParam` object is `{someParam: '@someProp'}` then the value of
+ *   `someParam` will be `data.someProp`.
+ *
+ * @param {Object.<Object>=} actions Hash with declaration of custom actions that should extend
+ *   the default set of resource actions. The declaration should be created in the format of {@link
+ *   ng.$http#usage $http.config}:
+ *
+ *       {action1: {method:?, params:?, isArray:?, headers:?, ...},
+ *        action2: {method:?, params:?, isArray:?, headers:?, ...},
+ *        ...}
+ *
+ *   Where:
+ *
+ *   - **`action`** – {string} – The name of action. This name becomes the name of the method on
+ *     your resource object.
+ *   - **`method`** – {string} – Case insensitive HTTP method (e.g. `GET`, `POST`, `PUT`,
+ *     `DELETE`, `JSONP`, etc).
+ *   - **`params`** – {Object=} – Optional set of pre-bound parameters for this action. If any of
+ *     the parameter value is a function, it will be executed every time when a param value needs to
+ *     be obtained for a request (unless the param was overridden).
+ *   - **`url`** – {string} – action specific `url` override. The url templating is supported just
+ *     like for the resource-level urls.
+ *   - **`isArray`** – {boolean=} – If true then the returned object for this action is an array,
+ *     see `returns` section.
+ *   - **`transformRequest`** –
+ *     `{function(data, headersGetter)|Array.<function(data, headersGetter)>}` –
+ *     transform function or an array of such functions. The transform function takes the http
+ *     request body and headers and returns its transformed (typically serialized) version.
+ *     By default, transformRequest will contain one function that checks if the request data is
+ *     an object and serializes to using `angular.toJson`. To prevent this behavior, set
+ *     `transformRequest` to an empty array: `transformRequest: []`
+ *   - **`transformResponse`** –
+ *     `{function(data, headersGetter)|Array.<function(data, headersGetter)>}` –
+ *     transform function or an array of such functions. The transform function takes the http
+ *     response body and headers and returns its transformed (typically deserialized) version.
+ *     By default, transformResponse will contain one function that checks if the response looks
+ *     like a JSON string and deserializes it using `angular.fromJson`. To prevent this behavior,
+ *     set `transformResponse` to an empty array: `transformResponse: []`
+ *   - **`cache`** – `{boolean|Cache}` – If true, a default $http cache will be used to cache the
+ *     GET request, otherwise if a cache instance built with
+ *     {@link ng.$cacheFactory $cacheFactory}, this cache will be used for
+ *     caching.
+ *   - **`timeout`** – `{number}` – timeout in milliseconds.<br />
+ *     **Note:** In contrast to {@link ng.$http#usage $http.config}, {@link ng.$q promises} are
+ *     **not** supported in $resource, because the same value would be used for multiple requests.
+ *     If you are looking for a way to cancel requests, you should use the `cancellable` option.
+ *   - **`cancellable`** – `{boolean}` – if set to true, the request made by a "non-instance" call
+ *     will be cancelled (if not already completed) by calling `$cancelRequest()` on the call's
+ *     return value. Calling `$cancelRequest()` for a non-cancellable or an already
+ *     completed/cancelled request will have no effect.<br />
+ *   - **`withCredentials`** - `{boolean}` - whether to set the `withCredentials` flag on the
+ *     XHR object. See
+ *     [requests with credentials](https://developer.mozilla.org/en/http_access_control#section_5)
+ *     for more information.
+ *   - **`responseType`** - `{string}` - see
+ *     [requestType](https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#responseType).
+ *   - **`interceptor`** - `{Object=}` - The interceptor object has two optional methods -
+ *     `response` and `responseError`. Both `response` and `responseError` interceptors get called
+ *     with `http response` object. See {@link ng.$http $http interceptors}.
+ *
+ * @param {Object} options Hash with custom settings that should extend the
+ *   default `$resourceProvider` behavior.  The supported options are:
+ *
+ *   - **`stripTrailingSlashes`** – {boolean} – If true then the trailing
+ *   slashes from any calculated URL will be stripped. (Defaults to true.)
+ *   - **`cancellable`** – {boolean} – If true, the request made by a "non-instance" call will be
+ *   cancelled (if not already completed) by calling `$cancelRequest()` on the call's return value.
+ *   This can be overwritten per action. (Defaults to false.)
+ *
+ * @returns {Object} A resource "class" object with methods for the default set of resource actions
+ *   optionally extended with custom `actions`. The default set contains these actions:
+ *   ```js
+ *   { 'get':    {method:'GET'},
+ *     'save':   {method:'POST'},
+ *     'query':  {method:'GET', isArray:true},
+ *     'remove': {method:'DELETE'},
+ *     'delete': {method:'DELETE'} };
+ *   ```
+ *
+ *   Calling these methods invoke an {@link ng.$http} with the specified http method,
+ *   destination and parameters. When the data is returned from the server then the object is an
+ *   instance of the resource class. The actions `save`, `remove` and `delete` are available on it
+ *   as  methods with the `$` prefix. This allows you to easily perform CRUD operations (create,
+ *   read, update, delete) on server-side data like this:
+ *   ```js
+ *   var User = $resource('/user/:userId', {userId:'@id'});
+ *   var user = User.get({userId:123}, function() {
+ *     user.abc = true;
+ *     user.$save();
+ *   });
+ *   ```
+ *
+ *   It is important to realize that invoking a $resource object method immediately returns an
+ *   empty reference (object or array depending on `isArray`). Once the data is returned from the
+ *   server the existing reference is populated with the actual data. This is a useful trick since
+ *   usually the resource is assigned to a model which is then rendered by the view. Having an empty
+ *   object results in no rendering, once the data arrives from the server then the object is
+ *   populated with the data and the view automatically re-renders itself showing the new data. This
+ *   means that in most cases one never has to write a callback function for the action methods.
+ *
+ *   The action methods on the class object or instance object can be invoked with the following
+ *   parameters:
+ *
+ *   - HTTP GET "class" actions: `Resource.action([parameters], [success], [error])`
+ *   - non-GET "class" actions: `Resource.action([parameters], postData, [success], [error])`
+ *   - non-GET instance actions:  `instance.$action([parameters], [success], [error])`
+ *
+ *
+ *   Success callback is called with (value, responseHeaders) arguments, where the value is
+ *   the populated resource instance or collection object. The error callback is called
+ *   with (httpResponse) argument.
+ *
+ *   Class actions return empty instance (with additional properties below).
+ *   Instance actions return promise of the action.
+ *
+ *   The Resource instances and collections have these additional properties:
+ *
+ *   - `$promise`: the {@link ng.$q promise} of the original server interaction that created this
+ *     instance or collection.
+ *
+ *     On success, the promise is resolved with the same resource instance or collection object,
+ *     updated with data from server. This makes it easy to use in
+ *     {@link ngRoute.$routeProvider resolve section of $routeProvider.when()} to defer view
+ *     rendering until the resource(s) are loaded.
+ *
+ *     On failure, the promise is rejected with the {@link ng.$http http response} object, without
+ *     the `resource` property.
+ *
+ *     If an interceptor object was provided, the promise will instead be resolved with the value
+ *     returned by the interceptor.
+ *
+ *   - `$resolved`: `true` after first server interaction is completed (either with success or
+ *      rejection), `false` before that. Knowing if the Resource has been resolved is useful in
+ *      data-binding.
+ *
+ *   The Resource instances and collections have these additional methods:
+ *
+ *   - `$cancelRequest`: If there is a cancellable, pending request related to the instance or
+ *      collection, calling this method will abort the request.
+ *
+ * @example
+ *
+ * # Credit card resource
+ *
+ * ```js
+     // Define CreditCard class
+     var CreditCard = $resource('/user/:userId/card/:cardId',
+      {userId:123, cardId:'@id'}, {
+       charge: {method:'POST', params:{charge:true}}
+      });
+
+     // We can retrieve a collection from the server
+     var cards = CreditCard.query(function() {
+       // GET: /user/123/card
+       // server returns: [ {id:456, number:'1234', name:'Smith'} ];
+
+       var card = cards[0];
+       // each item is an instance of CreditCard
+       expect(card instanceof CreditCard).toEqual(true);
+       card.name = "J. Smith";
+       // non GET methods are mapped onto the instances
+       card.$save();
+       // POST: /user/123/card/456 {id:456, number:'1234', name:'J. Smith'}
+       // server returns: {id:456, number:'1234', name: 'J. Smith'};
+
+       // our custom method is mapped as well.
+       card.$charge({amount:9.99});
+       // POST: /user/123/card/456?amount=9.99&charge=true {id:456, number:'1234', name:'J. Smith'}
+     });
+
+     // we can create an instance as well
+     var newCard = new CreditCard({number:'0123'});
+     newCard.name = "Mike Smith";
+     newCard.$save();
+     // POST: /user/123/card {number:'0123', name:'Mike Smith'}
+     // server returns: {id:789, number:'0123', name: 'Mike Smith'};
+     expect(newCard.id).toEqual(789);
+ * ```
+ *
+ * The object returned from this function execution is a resource "class" which has "static" method
+ * for each action in the definition.
+ *
+ * Calling these methods invoke `$http` on the `url` template with the given `method`, `params` and
+ * `headers`.
+ *
+ * @example
+ *
+ * # User resource
+ *
+ * When the data is returned from the server then the object is an instance of the resource type and
+ * all of the non-GET methods are available with `$` prefix. This allows you to easily support CRUD
+ * operations (create, read, update, delete) on server-side data.
+
+   ```js
+     var User = $resource('/user/:userId', {userId:'@id'});
+     User.get({userId:123}, function(user) {
+       user.abc = true;
+       user.$save();
+     });
+   ```
+ *
+ * It's worth noting that the success callback for `get`, `query` and other methods gets passed
+ * in the response that came from the server as well as $http header getter function, so one
+ * could rewrite the above example and get access to http headers as:
+ *
+   ```js
+     var User = $resource('/user/:userId', {userId:'@id'});
+     User.get({userId:123}, function(user, getResponseHeaders){
+       user.abc = true;
+       user.$save(function(user, putResponseHeaders) {
+         //user => saved user object
+         //putResponseHeaders => $http header getter
+       });
+     });
+   ```
+ *
+ * You can also access the raw `$http` promise via the `$promise` property on the object returned
+ *
+   ```
+     var User = $resource('/user/:userId', {userId:'@id'});
+     User.get({userId:123})
+         .$promise.then(function(user) {
+           $scope.user = user;
+         });
+   ```
+ *
+ * @example
+ *
+ * # Creating a custom 'PUT' request
+ *
+ * In this example we create a custom method on our resource to make a PUT request
+ * ```js
+ *    var app = angular.module('app', ['ngResource', 'ngRoute']);
+ *
+ *    // Some APIs expect a PUT request in the format URL/object/ID
+ *    // Here we are creating an 'update' method
+ *    app.factory('Notes', ['$resource', function($resource) {
+ *    return $resource('/notes/:id', null,
+ *        {
+ *            'update': { method:'PUT' }
+ *        });
+ *    }]);
+ *
+ *    // In our controller we get the ID from the URL using ngRoute and $routeParams
+ *    // We pass in $routeParams and our Notes factory along with $scope
+ *    app.controller('NotesCtrl', ['$scope', '$routeParams', 'Notes',
+                                      function($scope, $routeParams, Notes) {
+ *    // First get a note object from the factory
+ *    var note = Notes.get({ id:$routeParams.id });
+ *    $id = note.id;
+ *
+ *    // Now call update passing in the ID first then the object you are updating
+ *    Notes.update({ id:$id }, note);
+ *
+ *    // This will PUT /notes/ID with the note object in the request payload
+ *    }]);
+ * ```
+ *
+ * @example
+ *
+ * # Cancelling requests
+ *
+ * If an action's configuration specifies that it is cancellable, you can cancel the request related
+ * to an instance or collection (as long as it is a result of a "non-instance" call):
+ *
+   ```js
+     // ...defining the `Hotel` resource...
+     var Hotel = $resource('/api/hotel/:id', {id: '@id'}, {
+       // Let's make the `query()` method cancellable
+       query: {method: 'get', isArray: true, cancellable: true}
+     });
+
+     // ...somewhere in the PlanVacationController...
+     ...
+     this.onDestinationChanged = function onDestinationChanged(destination) {
+       // We don't care about any pending request for hotels
+       // in a different destination any more
+       this.availableHotels.$cancelRequest();
+
+       // Let's query for hotels in '<destination>'
+       // (calls: /api/hotel?location=<destination>)
+       this.availableHotels = Hotel.query({location: destination});
+     };
+   ```
+ *
+ */
+angular.module('ngResource', ['ng']).
+  provider('$resource', function() {
+    var PROTOCOL_AND_DOMAIN_REGEX = /^https?:\/\/[^\/]*/;
+    var provider = this;
+
+    this.defaults = {
+      // Strip slashes by default
+      stripTrailingSlashes: true,
+
+      // Default actions configuration
+      actions: {
+        'get': {method: 'GET'},
+        'save': {method: 'POST'},
+        'query': {method: 'GET', isArray: true},
+        'remove': {method: 'DELETE'},
+        'delete': {method: 'DELETE'}
+      }
+    };
+
+    this.$get = ['$http', '$log', '$q', '$timeout', function($http, $log, $q, $timeout) {
+
+      var noop = angular.noop,
+        forEach = angular.forEach,
+        extend = angular.extend,
+        copy = angular.copy,
+        isFunction = angular.isFunction;
+
+      /**
+       * We need our custom method because encodeURIComponent is too aggressive and doesn't follow
+       * http://www.ietf.org/rfc/rfc3986.txt with regards to the character set
+       * (pchar) allowed in path segments:
+       *    segment       = *pchar
+       *    pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"
+       *    pct-encoded   = "%" HEXDIG HEXDIG
+       *    unreserved    = ALPHA / DIGIT / "-" / "." / "_" / "~"
+       *    sub-delims    = "!" / "$" / "&" / "'" / "(" / ")"
+       *                     / "*" / "+" / "," / ";" / "="
+       */
+      function encodeUriSegment(val) {
+        return encodeUriQuery(val, true).
+          replace(/%26/gi, '&').
+          replace(/%3D/gi, '=').
+          replace(/%2B/gi, '+');
+      }
+
+
+      /**
+       * This method is intended for encoding *key* or *value* parts of query component. We need a
+       * custom method because encodeURIComponent is too aggressive and encodes stuff that doesn't
+       * have to be encoded per http://tools.ietf.org/html/rfc3986:
+       *    query       = *( pchar / "/" / "?" )
+       *    pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"
+       *    unreserved    = ALPHA / DIGIT / "-" / "." / "_" / "~"
+       *    pct-encoded   = "%" HEXDIG HEXDIG
+       *    sub-delims    = "!" / "$" / "&" / "'" / "(" / ")"
+       *                     / "*" / "+" / "," / ";" / "="
+       */
+      function encodeUriQuery(val, pctEncodeSpaces) {
+        return encodeURIComponent(val).
+          replace(/%40/gi, '@').
+          replace(/%3A/gi, ':').
+          replace(/%24/g, '$').
+          replace(/%2C/gi, ',').
+          replace(/%20/g, (pctEncodeSpaces ? '%20' : '+'));
+      }
+
+      function Route(template, defaults) {
+        this.template = template;
+        this.defaults = extend({}, provider.defaults, defaults);
+        this.urlParams = {};
+      }
+
+      Route.prototype = {
+        setUrlParams: function(config, params, actionUrl) {
+          var self = this,
+            url = actionUrl || self.template,
+            val,
+            encodedVal,
+            protocolAndDomain = '';
+
+          var urlParams = self.urlParams = {};
+          forEach(url.split(/\W/), function(param) {
+            if (param === 'hasOwnProperty') {
+              throw $resourceMinErr('badname', "hasOwnProperty is not a valid parameter name.");
+            }
+            if (!(new RegExp("^\\d+$").test(param)) && param &&
+              (new RegExp("(^|[^\\\\]):" + param + "(\\W|$)").test(url))) {
+              urlParams[param] = {
+                isQueryParamValue: (new RegExp("\\?.*=:" + param + "(?:\\W|$)")).test(url)
+              };
+            }
+          });
+          url = url.replace(/\\:/g, ':');
+          url = url.replace(PROTOCOL_AND_DOMAIN_REGEX, function(match) {
+            protocolAndDomain = match;
+            return '';
+          });
+
+          params = params || {};
+          forEach(self.urlParams, function(paramInfo, urlParam) {
+            val = params.hasOwnProperty(urlParam) ? params[urlParam] : self.defaults[urlParam];
+            if (angular.isDefined(val) && val !== null) {
+              if (paramInfo.isQueryParamValue) {
+                encodedVal = encodeUriQuery(val, true);
+              } else {
+                encodedVal = encodeUriSegment(val);
+              }
+              url = url.replace(new RegExp(":" + urlParam + "(\\W|$)", "g"), function(match, p1) {
+                return encodedVal + p1;
+              });
+            } else {
+              url = url.replace(new RegExp("(\/?):" + urlParam + "(\\W|$)", "g"), function(match,
+                  leadingSlashes, tail) {
+                if (tail.charAt(0) == '/') {
+                  return tail;
+                } else {
+                  return leadingSlashes + tail;
+                }
+              });
+            }
+          });
+
+          // strip trailing slashes and set the url (unless this behavior is specifically disabled)
+          if (self.defaults.stripTrailingSlashes) {
+            url = url.replace(/\/+$/, '') || '/';
+          }
+
+          // then replace collapse `/.` if found in the last URL path segment before the query
+          // E.g. `http://url.com/id./format?q=x` becomes `http://url.com/id.format?q=x`
+          url = url.replace(/\/\.(?=\w+($|\?))/, '.');
+          // replace escaped `/\.` with `/.`
+          config.url = protocolAndDomain + url.replace(/\/\\\./, '/.');
+
+
+          // set params - delegate param encoding to $http
+          forEach(params, function(value, key) {
+            if (!self.urlParams[key]) {
+              config.params = config.params || {};
+              config.params[key] = value;
+            }
+          });
+        }
+      };
+
+
+      function resourceFactory(url, paramDefaults, actions, options) {
+        var route = new Route(url, options);
+
+        actions = extend({}, provider.defaults.actions, actions);
+
+        function extractParams(data, actionParams) {
+          var ids = {};
+          actionParams = extend({}, paramDefaults, actionParams);
+          forEach(actionParams, function(value, key) {
+            if (isFunction(value)) { value = value(); }
+            ids[key] = value && value.charAt && value.charAt(0) == '@' ?
+              lookupDottedPath(data, value.substr(1)) : value;
+          });
+          return ids;
+        }
+
+        function defaultResponseInterceptor(response) {
+          return response.resource;
+        }
+
+        function Resource(value) {
+          shallowClearAndCopy(value || {}, this);
+        }
+
+        Resource.prototype.toJSON = function() {
+          var data = extend({}, this);
+          delete data.$promise;
+          delete data.$resolved;
+          return data;
+        };
+
+        forEach(actions, function(action, name) {
+          var hasBody = /^(POST|PUT|PATCH)$/i.test(action.method);
+          var numericTimeout = action.timeout;
+          var cancellable = angular.isDefined(action.cancellable) ? action.cancellable :
+              (options && angular.isDefined(options.cancellable)) ? options.cancellable :
+              provider.defaults.cancellable;
+
+          if (numericTimeout && !angular.isNumber(numericTimeout)) {
+            $log.debug('ngResource:\n' +
+                       '  Only numeric values are allowed as `timeout`.\n' +
+                       '  Promises are not supported in $resource, because the same value would ' +
+                       'be used for multiple requests. If you are looking for a way to cancel ' +
+                       'requests, you should use the `cancellable` option.');
+            delete action.timeout;
+            numericTimeout = null;
+          }
+
+          Resource[name] = function(a1, a2, a3, a4) {
+            var params = {}, data, success, error;
+
+            /* jshint -W086 */ /* (purposefully fall through case statements) */
+            switch (arguments.length) {
+              case 4:
+                error = a4;
+                success = a3;
+              //fallthrough
+              case 3:
+              case 2:
+                if (isFunction(a2)) {
+                  if (isFunction(a1)) {
+                    success = a1;
+                    error = a2;
+                    break;
+                  }
+
+                  success = a2;
+                  error = a3;
+                  //fallthrough
+                } else {
+                  params = a1;
+                  data = a2;
+                  success = a3;
+                  break;
+                }
+              case 1:
+                if (isFunction(a1)) success = a1;
+                else if (hasBody) data = a1;
+                else params = a1;
+                break;
+              case 0: break;
+              default:
+                throw $resourceMinErr('badargs',
+                  "Expected up to 4 arguments [params, data, success, error], got {0} arguments",
+                  arguments.length);
+            }
+            /* jshint +W086 */ /* (purposefully fall through case statements) */
+
+            var isInstanceCall = this instanceof Resource;
+            var value = isInstanceCall ? data : (action.isArray ? [] : new Resource(data));
+            var httpConfig = {};
+            var responseInterceptor = action.interceptor && action.interceptor.response ||
+              defaultResponseInterceptor;
+            var responseErrorInterceptor = action.interceptor && action.interceptor.responseError ||
+              undefined;
+            var timeoutDeferred;
+            var numericTimeoutPromise;
+
+            forEach(action, function(value, key) {
+              switch (key) {
+                default:
+                  httpConfig[key] = copy(value);
+                  break;
+                case 'params':
+                case 'isArray':
+                case 'interceptor':
+                case 'cancellable':
+                  break;
+              }
+            });
+
+            if (!isInstanceCall && cancellable) {
+              timeoutDeferred = $q.defer();
+              httpConfig.timeout = timeoutDeferred.promise;
+
+              if (numericTimeout) {
+                numericTimeoutPromise = $timeout(timeoutDeferred.resolve, numericTimeout);
+              }
+            }
+
+            if (hasBody) httpConfig.data = data;
+            route.setUrlParams(httpConfig,
+              extend({}, extractParams(data, action.params || {}), params),
+              action.url);
+
+            var promise = $http(httpConfig).then(function(response) {
+              var data = response.data;
+
+              if (data) {
+                // Need to convert action.isArray to boolean in case it is undefined
+                // jshint -W018
+                if (angular.isArray(data) !== (!!action.isArray)) {
+                  throw $resourceMinErr('badcfg',
+                      'Error in resource configuration for action `{0}`. Expected response to ' +
+                      'contain an {1} but got an {2} (Request: {3} {4})', name, action.isArray ? 'array' : 'object',
+                    angular.isArray(data) ? 'array' : 'object', httpConfig.method, httpConfig.url);
+                }
+                // jshint +W018
+                if (action.isArray) {
+                  value.length = 0;
+                  forEach(data, function(item) {
+                    if (typeof item === "object") {
+                      value.push(new Resource(item));
+                    } else {
+                      // Valid JSON values may be string literals, and these should not be converted
+                      // into objects. These items will not have access to the Resource prototype
+                      // methods, but unfortunately there
+                      value.push(item);
+                    }
+                  });
+                } else {
+                  var promise = value.$promise;     // Save the promise
+                  shallowClearAndCopy(data, value);
+                  value.$promise = promise;         // Restore the promise
+                }
+              }
+              response.resource = value;
+
+              return response;
+            }, function(response) {
+              (error || noop)(response);
+              return $q.reject(response);
+            });
+
+            promise['finally'](function() {
+              value.$resolved = true;
+              if (!isInstanceCall && cancellable) {
+                value.$cancelRequest = angular.noop;
+                $timeout.cancel(numericTimeoutPromise);
+                timeoutDeferred = numericTimeoutPromise = httpConfig.timeout = null;
+              }
+            });
+
+            promise = promise.then(
+              function(response) {
+                var value = responseInterceptor(response);
+                (success || noop)(value, response.headers);
+                return value;
+              },
+              responseErrorInterceptor);
+
+            if (!isInstanceCall) {
+              // we are creating instance / collection
+              // - set the initial promise
+              // - return the instance / collection
+              value.$promise = promise;
+              value.$resolved = false;
+              if (cancellable) value.$cancelRequest = timeoutDeferred.resolve;
+
+              return value;
+            }
+
+            // instance call
+            return promise;
+          };
+
+
+          Resource.prototype['$' + name] = function(params, success, error) {
+            if (isFunction(params)) {
+              error = success; success = params; params = {};
+            }
+            var result = Resource[name].call(this, params, this, success, error);
+            return result.$promise || result;
+          };
+        });
+
+        Resource.bind = function(additionalParamDefaults) {
+          return resourceFactory(url, extend({}, paramDefaults, additionalParamDefaults), actions);
+        };
+
+        return Resource;
+      }
+
+      return resourceFactory;
+    }];
+  });
+
+
+})(window, window.angular);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-resource.min.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-resource.min.js b/rocketmq-console/src/main/resources/static/vendor/angular/angular-resource.min.js
new file mode 100644
index 0000000..4353902
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-resource.min.js
@@ -0,0 +1,15 @@
+/*
+ AngularJS v1.5.6
+ (c) 2010-2016 Google, Inc. http://angularjs.org
+ License: MIT
+*/
+(function(P,d){'use strict';function G(t,g){g=g||{};d.forEach(g,function(d,q){delete g[q]});for(var q in t)!t.hasOwnProperty(q)||"$"===q.charAt(0)&&"$"===q.charAt(1)||(g[q]=t[q]);return g}var z=d.$$minErr("$resource"),M=/^(\.[a-zA-Z_$@][0-9a-zA-Z_$@]*)+$/;d.module("ngResource",["ng"]).provider("$resource",function(){var t=/^https?:\/\/[^\/]*/,g=this;this.defaults={stripTrailingSlashes:!0,actions:{get:{method:"GET"},save:{method:"POST"},query:{method:"GET",isArray:!0},remove:{method:"DELETE"},"delete":{method:"DELETE"}}};
+this.$get=["$http","$log","$q","$timeout",function(q,L,H,I){function A(d,h){return encodeURIComponent(d).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,h?"%20":"+")}function B(d,h){this.template=d;this.defaults=v({},g.defaults,h);this.urlParams={}}function J(e,h,n,k){function c(a,b){var c={};b=v({},h,b);u(b,function(b,h){x(b)&&(b=b());var f;if(b&&b.charAt&&"@"==b.charAt(0)){f=a;var l=b.substr(1);if(null==l||""===l||"hasOwnProperty"===l||!M.test("."+
+l))throw z("badmember",l);for(var l=l.split("."),m=0,k=l.length;m<k&&d.isDefined(f);m++){var r=l[m];f=null!==f?f[r]:void 0}}else f=b;c[h]=f});return c}function N(a){return a.resource}function m(a){G(a||{},this)}var t=new B(e,k);n=v({},g.defaults.actions,n);m.prototype.toJSON=function(){var a=v({},this);delete a.$promise;delete a.$resolved;return a};u(n,function(a,b){var h=/^(POST|PUT|PATCH)$/i.test(a.method),e=a.timeout,E=d.isDefined(a.cancellable)?a.cancellable:k&&d.isDefined(k.cancellable)?k.cancellable:
+g.defaults.cancellable;e&&!d.isNumber(e)&&(L.debug("ngResource:\n  Only numeric values are allowed as `timeout`.\n  Promises are not supported in $resource, because the same value would be used for multiple requests. If you are looking for a way to cancel requests, you should use the `cancellable` option."),delete a.timeout,e=null);m[b]=function(f,l,k,g){var r={},n,w,C;switch(arguments.length){case 4:C=g,w=k;case 3:case 2:if(x(l)){if(x(f)){w=f;C=l;break}w=l;C=k}else{r=f;n=l;w=k;break}case 1:x(f)?
+w=f:h?n=f:r=f;break;case 0:break;default:throw z("badargs",arguments.length);}var D=this instanceof m,p=D?n:a.isArray?[]:new m(n),s={},A=a.interceptor&&a.interceptor.response||N,B=a.interceptor&&a.interceptor.responseError||void 0,y,F;u(a,function(a,b){switch(b){default:s[b]=O(a);case "params":case "isArray":case "interceptor":case "cancellable":}});!D&&E&&(y=H.defer(),s.timeout=y.promise,e&&(F=I(y.resolve,e)));h&&(s.data=n);t.setUrlParams(s,v({},c(n,a.params||{}),r),a.url);r=q(s).then(function(f){var c=
+f.data;if(c){if(d.isArray(c)!==!!a.isArray)throw z("badcfg",b,a.isArray?"array":"object",d.isArray(c)?"array":"object",s.method,s.url);if(a.isArray)p.length=0,u(c,function(b){"object"===typeof b?p.push(new m(b)):p.push(b)});else{var l=p.$promise;G(c,p);p.$promise=l}}f.resource=p;return f},function(b){(C||K)(b);return H.reject(b)});r["finally"](function(){p.$resolved=!0;!D&&E&&(p.$cancelRequest=d.noop,I.cancel(F),y=F=s.timeout=null)});r=r.then(function(b){var a=A(b);(w||K)(a,b.headers);return a},B);
+return D?r:(p.$promise=r,p.$resolved=!1,E&&(p.$cancelRequest=y.resolve),p)};m.prototype["$"+b]=function(a,c,d){x(a)&&(d=c,c=a,a={});a=m[b].call(this,a,this,c,d);return a.$promise||a}});m.bind=function(a){return J(e,v({},h,a),n)};return m}var K=d.noop,u=d.forEach,v=d.extend,O=d.copy,x=d.isFunction;B.prototype={setUrlParams:function(e,h,n){var k=this,c=n||k.template,g,m,q="",a=k.urlParams={};u(c.split(/\W/),function(b){if("hasOwnProperty"===b)throw z("badname");!/^\d+$/.test(b)&&b&&(new RegExp("(^|[^\\\\]):"+
+b+"(\\W|$)")).test(c)&&(a[b]={isQueryParamValue:(new RegExp("\\?.*=:"+b+"(?:\\W|$)")).test(c)})});c=c.replace(/\\:/g,":");c=c.replace(t,function(a){q=a;return""});h=h||{};u(k.urlParams,function(a,e){g=h.hasOwnProperty(e)?h[e]:k.defaults[e];d.isDefined(g)&&null!==g?(m=a.isQueryParamValue?A(g,!0):A(g,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+"),c=c.replace(new RegExp(":"+e+"(\\W|$)","g"),function(a,b){return m+b})):c=c.replace(new RegExp("(/?):"+e+"(\\W|$)","g"),function(a,b,c){return"/"==
+c.charAt(0)?c:b+c})});k.defaults.stripTrailingSlashes&&(c=c.replace(/\/+$/,"")||"/");c=c.replace(/\/\.(?=\w+($|\?))/,".");e.url=q+c.replace(/\/\\\./,"/.");u(h,function(a,c){k.urlParams[c]||(e.params=e.params||{},e.params[c]=a)})}};return J}]})})(window,window.angular);
+//# sourceMappingURL=angular-resource.min.js.map

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-resource.min.js.map
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-resource.min.js.map b/rocketmq-console/src/main/resources/static/vendor/angular/angular-resource.min.js.map
new file mode 100644
index 0000000..58ae364
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-resource.min.js.map
@@ -0,0 +1,8 @@
+{
+"version":3,
+"file":"angular-resource.min.js",
+"lineCount":14,
+"mappings":"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",
+"sources":["angular-resource.js"],
+"names":["window","angular","shallowClearAndCopy","src","dst","forEach","value","key","hasOwnProperty","charAt","$resourceMinErr","$$minErr","MEMBER_NAME_REGEX","module","provider","PROTOCOL_AND_DOMAIN_REGEX","defaults","stripTrailingSlashes","actions","method","isArray","$get","$http","$log","$q","$timeout","encodeUriQuery","val","pctEncodeSpaces","encodeURIComponent","replace","Route","template","extend","urlParams","resourceFactory","url","paramDefaults","options","extractParams","data","actionParams","ids","isFunction","path","test","keys","split","i","ii","length","isDefined","obj","undefined","defaultResponseInterceptor","response","resource","Resource","route","prototype","toJSON","Resource.prototype.toJSON","$promise","$resolved","action","name","hasBody","numericTimeout","timeout","cancellable","isNumber","debug","a1","a2","a3","a4","params","success","error","arguments","isInstanceCall","httpConfig","responseInterceptor","interceptor","responseErrorInterceptor","responseEr
 ror","timeoutDeferred","numericTimeoutPromise","copy","defer","promise","resolve","setUrlParams","then","item","push","noop","reject","$cancelRequest","cancel","headers","result","call","bind","Resource.bind","additionalParamDefaults","config","actionUrl","self","encodedVal","protocolAndDomain","param","RegExp","isQueryParamValue","match","paramInfo","urlParam","p1","leadingSlashes","tail"]
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-route.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-route.js b/rocketmq-console/src/main/resources/static/vendor/angular/angular-route.js
new file mode 100644
index 0000000..2e758e8
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-route.js
@@ -0,0 +1,1032 @@
+/**
+ * @license AngularJS v1.5.6
+ * (c) 2010-2016 Google, Inc. http://angularjs.org
+ * License: MIT
+ */
+(function(window, angular) {'use strict';
+
+/**
+ * @ngdoc module
+ * @name ngRoute
+ * @description
+ *
+ * # ngRoute
+ *
+ * The `ngRoute` module provides routing and deeplinking services and directives for angular apps.
+ *
+ * ## Example
+ * See {@link ngRoute.$route#example $route} for an example of configuring and using `ngRoute`.
+ *
+ *
+ * <div doc-module-components="ngRoute"></div>
+ */
+ /* global -ngRouteModule */
+var ngRouteModule = angular.module('ngRoute', ['ng']).
+                        provider('$route', $RouteProvider),
+    $routeMinErr = angular.$$minErr('ngRoute');
+
+/**
+ * @ngdoc provider
+ * @name $routeProvider
+ *
+ * @description
+ *
+ * Used for configuring routes.
+ *
+ * ## Example
+ * See {@link ngRoute.$route#example $route} for an example of configuring and using `ngRoute`.
+ *
+ * ## Dependencies
+ * Requires the {@link ngRoute `ngRoute`} module to be installed.
+ */
+function $RouteProvider() {
+  function inherit(parent, extra) {
+    return angular.extend(Object.create(parent), extra);
+  }
+
+  var routes = {};
+
+  /**
+   * @ngdoc method
+   * @name $routeProvider#when
+   *
+   * @param {string} path Route path (matched against `$location.path`). If `$location.path`
+   *    contains redundant trailing slash or is missing one, the route will still match and the
+   *    `$location.path` will be updated to add or drop the trailing slash to exactly match the
+   *    route definition.
+   *
+   *    * `path` can contain named groups starting with a colon: e.g. `:name`. All characters up
+   *        to the next slash are matched and stored in `$routeParams` under the given `name`
+   *        when the route matches.
+   *    * `path` can contain named groups starting with a colon and ending with a star:
+   *        e.g.`:name*`. All characters are eagerly stored in `$routeParams` under the given `name`
+   *        when the route matches.
+   *    * `path` can contain optional named groups with a question mark: e.g.`:name?`.
+   *
+   *    For example, routes like `/color/:color/largecode/:largecode*\/edit` will match
+   *    `/color/brown/largecode/code/with/slashes/edit` and extract:
+   *
+   *    * `color: brown`
+   *    * `largecode: code/with/slashes`.
+   *
+   *
+   * @param {Object} route Mapping information to be assigned to `$route.current` on route
+   *    match.
+   *
+   *    Object properties:
+   *
+   *    - `controller` – `{(string|function()=}` – Controller fn that should be associated with
+   *      newly created scope or the name of a {@link angular.Module#controller registered
+   *      controller} if passed as a string.
+   *    - `controllerAs` – `{string=}` – An identifier name for a reference to the controller.
+   *      If present, the controller will be published to scope under the `controllerAs` name.
+   *    - `template` – `{string=|function()=}` – html template as a string or a function that
+   *      returns an html template as a string which should be used by {@link
+   *      ngRoute.directive:ngView ngView} or {@link ng.directive:ngInclude ngInclude} directives.
+   *      This property takes precedence over `templateUrl`.
+   *
+   *      If `template` is a function, it will be called with the following parameters:
+   *
+   *      - `{Array.<Object>}` - route parameters extracted from the current
+   *        `$location.path()` by applying the current route
+   *
+   *    - `templateUrl` – `{string=|function()=}` – path or function that returns a path to an html
+   *      template that should be used by {@link ngRoute.directive:ngView ngView}.
+   *
+   *      If `templateUrl` is a function, it will be called with the following parameters:
+   *
+   *      - `{Array.<Object>}` - route parameters extracted from the current
+   *        `$location.path()` by applying the current route
+   *
+   *    - `resolve` - `{Object.<string, function>=}` - An optional map of dependencies which should
+   *      be injected into the controller. If any of these dependencies are promises, the router
+   *      will wait for them all to be resolved or one to be rejected before the controller is
+   *      instantiated.
+   *      If all the promises are resolved successfully, the values of the resolved promises are
+   *      injected and {@link ngRoute.$route#$routeChangeSuccess $routeChangeSuccess} event is
+   *      fired. If any of the promises are rejected the
+   *      {@link ngRoute.$route#$routeChangeError $routeChangeError} event is fired.
+   *      For easier access to the resolved dependencies from the template, the `resolve` map will
+   *      be available on the scope of the route, under `$resolve` (by default) or a custom name
+   *      specified by the `resolveAs` property (see below). This can be particularly useful, when
+   *      working with {@link angular.Module#component components} as route templates.<br />
+   *      <div class="alert alert-warning">
+   *        **Note:** If your scope already contains a property with this name, it will be hidden
+   *        or overwritten. Make sure, you specify an appropriate name for this property, that
+   *        does not collide with other properties on the scope.
+   *      </div>
+   *      The map object is:
+   *
+   *      - `key` – `{string}`: a name of a dependency to be injected into the controller.
+   *      - `factory` - `{string|function}`: If `string` then it is an alias for a service.
+   *        Otherwise if function, then it is {@link auto.$injector#invoke injected}
+   *        and the return value is treated as the dependency. If the result is a promise, it is
+   *        resolved before its value is injected into the controller. Be aware that
+   *        `ngRoute.$routeParams` will still refer to the previous route within these resolve
+   *        functions.  Use `$route.current.params` to access the new route parameters, instead.
+   *
+   *    - `resolveAs` - `{string=}` - The name under which the `resolve` map will be available on
+   *      the scope of the route. If omitted, defaults to `$resolve`.
+   *
+   *    - `redirectTo` – `{(string|function())=}` – value to update
+   *      {@link ng.$location $location} path with and trigger route redirection.
+   *
+   *      If `redirectTo` is a function, it will be called with the following parameters:
+   *
+   *      - `{Object.<string>}` - route parameters extracted from the current
+   *        `$location.path()` by applying the current route templateUrl.
+   *      - `{string}` - current `$location.path()`
+   *      - `{Object}` - current `$location.search()`
+   *
+   *      The custom `redirectTo` function is expected to return a string which will be used
+   *      to update `$location.path()` and `$location.search()`.
+   *
+   *    - `[reloadOnSearch=true]` - `{boolean=}` - reload route when only `$location.search()`
+   *      or `$location.hash()` changes.
+   *
+   *      If the option is set to `false` and url in the browser changes, then
+   *      `$routeUpdate` event is broadcasted on the root scope.
+   *
+   *    - `[caseInsensitiveMatch=false]` - `{boolean=}` - match routes without being case sensitive
+   *
+   *      If the option is set to `true`, then the particular route can be matched without being
+   *      case sensitive
+   *
+   * @returns {Object} self
+   *
+   * @description
+   * Adds a new route definition to the `$route` service.
+   */
+  this.when = function(path, route) {
+    //copy original route object to preserve params inherited from proto chain
+    var routeCopy = angular.copy(route);
+    if (angular.isUndefined(routeCopy.reloadOnSearch)) {
+      routeCopy.reloadOnSearch = true;
+    }
+    if (angular.isUndefined(routeCopy.caseInsensitiveMatch)) {
+      routeCopy.caseInsensitiveMatch = this.caseInsensitiveMatch;
+    }
+    routes[path] = angular.extend(
+      routeCopy,
+      path && pathRegExp(path, routeCopy)
+    );
+
+    // create redirection for trailing slashes
+    if (path) {
+      var redirectPath = (path[path.length - 1] == '/')
+            ? path.substr(0, path.length - 1)
+            : path + '/';
+
+      routes[redirectPath] = angular.extend(
+        {redirectTo: path},
+        pathRegExp(redirectPath, routeCopy)
+      );
+    }
+
+    return this;
+  };
+
+  /**
+   * @ngdoc property
+   * @name $routeProvider#caseInsensitiveMatch
+   * @description
+   *
+   * A boolean property indicating if routes defined
+   * using this provider should be matched using a case insensitive
+   * algorithm. Defaults to `false`.
+   */
+  this.caseInsensitiveMatch = false;
+
+   /**
+    * @param path {string} path
+    * @param opts {Object} options
+    * @return {?Object}
+    *
+    * @description
+    * Normalizes the given path, returning a regular expression
+    * and the original path.
+    *
+    * Inspired by pathRexp in visionmedia/express/lib/utils.js.
+    */
+  function pathRegExp(path, opts) {
+    var insensitive = opts.caseInsensitiveMatch,
+        ret = {
+          originalPath: path,
+          regexp: path
+        },
+        keys = ret.keys = [];
+
+    path = path
+      .replace(/([().])/g, '\\$1')
+      .replace(/(\/)?:(\w+)(\*\?|[\?\*])?/g, function(_, slash, key, option) {
+        var optional = (option === '?' || option === '*?') ? '?' : null;
+        var star = (option === '*' || option === '*?') ? '*' : null;
+        keys.push({ name: key, optional: !!optional });
+        slash = slash || '';
+        return ''
+          + (optional ? '' : slash)
+          + '(?:'
+          + (optional ? slash : '')
+          + (star && '(.+?)' || '([^/]+)')
+          + (optional || '')
+          + ')'
+          + (optional || '');
+      })
+      .replace(/([\/$\*])/g, '\\$1');
+
+    ret.regexp = new RegExp('^' + path + '$', insensitive ? 'i' : '');
+    return ret;
+  }
+
+  /**
+   * @ngdoc method
+   * @name $routeProvider#otherwise
+   *
+   * @description
+   * Sets route definition that will be used on route change when no other route definition
+   * is matched.
+   *
+   * @param {Object|string} params Mapping information to be assigned to `$route.current`.
+   * If called with a string, the value maps to `redirectTo`.
+   * @returns {Object} self
+   */
+  this.otherwise = function(params) {
+    if (typeof params === 'string') {
+      params = {redirectTo: params};
+    }
+    this.when(null, params);
+    return this;
+  };
+
+
+  this.$get = ['$rootScope',
+               '$location',
+               '$routeParams',
+               '$q',
+               '$injector',
+               '$templateRequest',
+               '$sce',
+      function($rootScope, $location, $routeParams, $q, $injector, $templateRequest, $sce) {
+
+    /**
+     * @ngdoc service
+     * @name $route
+     * @requires $location
+     * @requires $routeParams
+     *
+     * @property {Object} current Reference to the current route definition.
+     * The route definition contains:
+     *
+     *   - `controller`: The controller constructor as defined in the route definition.
+     *   - `locals`: A map of locals which is used by {@link ng.$controller $controller} service for
+     *     controller instantiation. The `locals` contain
+     *     the resolved values of the `resolve` map. Additionally the `locals` also contain:
+     *
+     *     - `$scope` - The current route scope.
+     *     - `$template` - The current route template HTML.
+     *
+     *     The `locals` will be assigned to the route scope's `$resolve` property. You can override
+     *     the property name, using `resolveAs` in the route definition. See
+     *     {@link ngRoute.$routeProvider $routeProvider} for more info.
+     *
+     * @property {Object} routes Object with all route configuration Objects as its properties.
+     *
+     * @description
+     * `$route` is used for deep-linking URLs to controllers and views (HTML partials).
+     * It watches `$location.url()` and tries to map the path to an existing route definition.
+     *
+     * Requires the {@link ngRoute `ngRoute`} module to be installed.
+     *
+     * You can define routes through {@link ngRoute.$routeProvider $routeProvider}'s API.
+     *
+     * The `$route` service is typically used in conjunction with the
+     * {@link ngRoute.directive:ngView `ngView`} directive and the
+     * {@link ngRoute.$routeParams `$routeParams`} service.
+     *
+     * @example
+     * This example shows how changing the URL hash causes the `$route` to match a route against the
+     * URL, and the `ngView` pulls in the partial.
+     *
+     * <example name="$route-service" module="ngRouteExample"
+     *          deps="angular-route.js" fixBase="true">
+     *   <file name="index.html">
+     *     <div ng-controller="MainController">
+     *       Choose:
+     *       <a href="Book/Moby">Moby</a> |
+     *       <a href="Book/Moby/ch/1">Moby: Ch1</a> |
+     *       <a href="Book/Gatsby">Gatsby</a> |
+     *       <a href="Book/Gatsby/ch/4?key=value">Gatsby: Ch4</a> |
+     *       <a href="Book/Scarlet">Scarlet Letter</a><br/>
+     *
+     *       <div ng-view></div>
+     *
+     *       <hr />
+     *
+     *       <pre>$location.path() = {{$location.path()}}</pre>
+     *       <pre>$route.current.templateUrl = {{$route.current.templateUrl}}</pre>
+     *       <pre>$route.current.params = {{$route.current.params}}</pre>
+     *       <pre>$route.current.scope.name = {{$route.current.scope.name}}</pre>
+     *       <pre>$routeParams = {{$routeParams}}</pre>
+     *     </div>
+     *   </file>
+     *
+     *   <file name="book.html">
+     *     controller: {{name}}<br />
+     *     Book Id: {{params.bookId}}<br />
+     *   </file>
+     *
+     *   <file name="chapter.html">
+     *     controller: {{name}}<br />
+     *     Book Id: {{params.bookId}}<br />
+     *     Chapter Id: {{params.chapterId}}
+     *   </file>
+     *
+     *   <file name="script.js">
+     *     angular.module('ngRouteExample', ['ngRoute'])
+     *
+     *      .controller('MainController', function($scope, $route, $routeParams, $location) {
+     *          $scope.$route = $route;
+     *          $scope.$location = $location;
+     *          $scope.$routeParams = $routeParams;
+     *      })
+     *
+     *      .controller('BookController', function($scope, $routeParams) {
+     *          $scope.name = "BookController";
+     *          $scope.params = $routeParams;
+     *      })
+     *
+     *      .controller('ChapterController', function($scope, $routeParams) {
+     *          $scope.name = "ChapterController";
+     *          $scope.params = $routeParams;
+     *      })
+     *
+     *     .config(function($routeProvider, $locationProvider) {
+     *       $routeProvider
+     *        .when('/Book/:bookId', {
+     *         templateUrl: 'book.html',
+     *         controller: 'BookController',
+     *         resolve: {
+     *           // I will cause a 1 second delay
+     *           delay: function($q, $timeout) {
+     *             var delay = $q.defer();
+     *             $timeout(delay.resolve, 1000);
+     *             return delay.promise;
+     *           }
+     *         }
+     *       })
+     *       .when('/Book/:bookId/ch/:chapterId', {
+     *         templateUrl: 'chapter.html',
+     *         controller: 'ChapterController'
+     *       });
+     *
+     *       // configure html5 to get links working on jsfiddle
+     *       $locationProvider.html5Mode(true);
+     *     });
+     *
+     *   </file>
+     *
+     *   <file name="protractor.js" type="protractor">
+     *     it('should load and compile correct template', function() {
+     *       element(by.linkText('Moby: Ch1')).click();
+     *       var content = element(by.css('[ng-view]')).getText();
+     *       expect(content).toMatch(/controller\: ChapterController/);
+     *       expect(content).toMatch(/Book Id\: Moby/);
+     *       expect(content).toMatch(/Chapter Id\: 1/);
+     *
+     *       element(by.partialLinkText('Scarlet')).click();
+     *
+     *       content = element(by.css('[ng-view]')).getText();
+     *       expect(content).toMatch(/controller\: BookController/);
+     *       expect(content).toMatch(/Book Id\: Scarlet/);
+     *     });
+     *   </file>
+     * </example>
+     */
+
+    /**
+     * @ngdoc event
+     * @name $route#$routeChangeStart
+     * @eventType broadcast on root scope
+     * @description
+     * Broadcasted before a route change. At this  point the route services starts
+     * resolving all of the dependencies needed for the route change to occur.
+     * Typically this involves fetching the view template as well as any dependencies
+     * defined in `resolve` route property. Once  all of the dependencies are resolved
+     * `$routeChangeSuccess` is fired.
+     *
+     * The route change (and the `$location` change that triggered it) can be prevented
+     * by calling `preventDefault` method of the event. See {@link ng.$rootScope.Scope#$on}
+     * for more details about event object.
+     *
+     * @param {Object} angularEvent Synthetic event object.
+     * @param {Route} next Future route information.
+     * @param {Route} current Current route information.
+     */
+
+    /**
+     * @ngdoc event
+     * @name $route#$routeChangeSuccess
+     * @eventType broadcast on root scope
+     * @description
+     * Broadcasted after a route change has happened successfully.
+     * The `resolve` dependencies are now available in the `current.locals` property.
+     *
+     * {@link ngRoute.directive:ngView ngView} listens for the directive
+     * to instantiate the controller and render the view.
+     *
+     * @param {Object} angularEvent Synthetic event object.
+     * @param {Route} current Current route information.
+     * @param {Route|Undefined} previous Previous route information, or undefined if current is
+     * first route entered.
+     */
+
+    /**
+     * @ngdoc event
+     * @name $route#$routeChangeError
+     * @eventType broadcast on root scope
+     * @description
+     * Broadcasted if any of the resolve promises are rejected.
+     *
+     * @param {Object} angularEvent Synthetic event object
+     * @param {Route} current Current route information.
+     * @param {Route} previous Previous route information.
+     * @param {Route} rejection Rejection of the promise. Usually the error of the failed promise.
+     */
+
+    /**
+     * @ngdoc event
+     * @name $route#$routeUpdate
+     * @eventType broadcast on root scope
+     * @description
+     * The `reloadOnSearch` property has been set to false, and we are reusing the same
+     * instance of the Controller.
+     *
+     * @param {Object} angularEvent Synthetic event object
+     * @param {Route} current Current/previous route information.
+     */
+
+    var forceReload = false,
+        preparedRoute,
+        preparedRouteIsUpdateOnly,
+        $route = {
+          routes: routes,
+
+          /**
+           * @ngdoc method
+           * @name $route#reload
+           *
+           * @description
+           * Causes `$route` service to reload the current route even if
+           * {@link ng.$location $location} hasn't changed.
+           *
+           * As a result of that, {@link ngRoute.directive:ngView ngView}
+           * creates new scope and reinstantiates the controller.
+           */
+          reload: function() {
+            forceReload = true;
+
+            var fakeLocationEvent = {
+              defaultPrevented: false,
+              preventDefault: function fakePreventDefault() {
+                this.defaultPrevented = true;
+                forceReload = false;
+              }
+            };
+
+            $rootScope.$evalAsync(function() {
+              prepareRoute(fakeLocationEvent);
+              if (!fakeLocationEvent.defaultPrevented) commitRoute();
+            });
+          },
+
+          /**
+           * @ngdoc method
+           * @name $route#updateParams
+           *
+           * @description
+           * Causes `$route` service to update the current URL, replacing
+           * current route parameters with those specified in `newParams`.
+           * Provided property names that match the route's path segment
+           * definitions will be interpolated into the location's path, while
+           * remaining properties will be treated as query params.
+           *
+           * @param {!Object<string, string>} newParams mapping of URL parameter names to values
+           */
+          updateParams: function(newParams) {
+            if (this.current && this.current.$$route) {
+              newParams = angular.extend({}, this.current.params, newParams);
+              $location.path(interpolate(this.current.$$route.originalPath, newParams));
+              // interpolate modifies newParams, only query params are left
+              $location.search(newParams);
+            } else {
+              throw $routeMinErr('norout', 'Tried updating route when with no current route');
+            }
+          }
+        };
+
+    $rootScope.$on('$locationChangeStart', prepareRoute);
+    $rootScope.$on('$locationChangeSuccess', commitRoute);
+
+    return $route;
+
+    /////////////////////////////////////////////////////
+
+    /**
+     * @param on {string} current url
+     * @param route {Object} route regexp to match the url against
+     * @return {?Object}
+     *
+     * @description
+     * Check if the route matches the current url.
+     *
+     * Inspired by match in
+     * visionmedia/express/lib/router/router.js.
+     */
+    function switchRouteMatcher(on, route) {
+      var keys = route.keys,
+          params = {};
+
+      if (!route.regexp) return null;
+
+      var m = route.regexp.exec(on);
+      if (!m) return null;
+
+      for (var i = 1, len = m.length; i < len; ++i) {
+        var key = keys[i - 1];
+
+        var val = m[i];
+
+        if (key && val) {
+          params[key.name] = val;
+        }
+      }
+      return params;
+    }
+
+    function prepareRoute($locationEvent) {
+      var lastRoute = $route.current;
+
+      preparedRoute = parseRoute();
+      preparedRouteIsUpdateOnly = preparedRoute && lastRoute && preparedRoute.$$route === lastRoute.$$route
+          && angular.equals(preparedRoute.pathParams, lastRoute.pathParams)
+          && !preparedRoute.reloadOnSearch && !forceReload;
+
+      if (!preparedRouteIsUpdateOnly && (lastRoute || preparedRoute)) {
+        if ($rootScope.$broadcast('$routeChangeStart', preparedRoute, lastRoute).defaultPrevented) {
+          if ($locationEvent) {
+            $locationEvent.preventDefault();
+          }
+        }
+      }
+    }
+
+    function commitRoute() {
+      var lastRoute = $route.current;
+      var nextRoute = preparedRoute;
+
+      if (preparedRouteIsUpdateOnly) {
+        lastRoute.params = nextRoute.params;
+        angular.copy(lastRoute.params, $routeParams);
+        $rootScope.$broadcast('$routeUpdate', lastRoute);
+      } else if (nextRoute || lastRoute) {
+        forceReload = false;
+        $route.current = nextRoute;
+        if (nextRoute) {
+          if (nextRoute.redirectTo) {
+            if (angular.isString(nextRoute.redirectTo)) {
+              $location.path(interpolate(nextRoute.redirectTo, nextRoute.params)).search(nextRoute.params)
+                       .replace();
+            } else {
+              $location.url(nextRoute.redirectTo(nextRoute.pathParams, $location.path(), $location.search()))
+                       .replace();
+            }
+          }
+        }
+
+        $q.when(nextRoute).
+          then(resolveLocals).
+          then(function(locals) {
+            // after route change
+            if (nextRoute == $route.current) {
+              if (nextRoute) {
+                nextRoute.locals = locals;
+                angular.copy(nextRoute.params, $routeParams);
+              }
+              $rootScope.$broadcast('$routeChangeSuccess', nextRoute, lastRoute);
+            }
+          }, function(error) {
+            if (nextRoute == $route.current) {
+              $rootScope.$broadcast('$routeChangeError', nextRoute, lastRoute, error);
+            }
+          });
+      }
+    }
+
+    function resolveLocals(route) {
+      if (route) {
+        var locals = angular.extend({}, route.resolve);
+        angular.forEach(locals, function(value, key) {
+          locals[key] = angular.isString(value) ?
+              $injector.get(value) :
+              $injector.invoke(value, null, null, key);
+        });
+        var template = getTemplateFor(route);
+        if (angular.isDefined(template)) {
+          locals['$template'] = template;
+        }
+        return $q.all(locals);
+      }
+    }
+
+
+    function getTemplateFor(route) {
+      var template, templateUrl;
+      if (angular.isDefined(template = route.template)) {
+        if (angular.isFunction(template)) {
+          template = template(route.params);
+        }
+      } else if (angular.isDefined(templateUrl = route.templateUrl)) {
+        if (angular.isFunction(templateUrl)) {
+          templateUrl = templateUrl(route.params);
+        }
+        if (angular.isDefined(templateUrl)) {
+          route.loadedTemplateUrl = $sce.valueOf(templateUrl);
+          template = $templateRequest(templateUrl);
+        }
+      }
+      return template;
+    }
+
+
+    /**
+     * @returns {Object} the current active route, by matching it against the URL
+     */
+    function parseRoute() {
+      // Match a route
+      var params, match;
+      angular.forEach(routes, function(route, path) {
+        if (!match && (params = switchRouteMatcher($location.path(), route))) {
+          match = inherit(route, {
+            params: angular.extend({}, $location.search(), params),
+            pathParams: params});
+          match.$$route = route;
+        }
+      });
+      // No route matched; fallback to "otherwise" route
+      return match || routes[null] && inherit(routes[null], {params: {}, pathParams:{}});
+    }
+
+    /**
+     * @returns {string} interpolation of the redirect path with the parameters
+     */
+    function interpolate(string, params) {
+      var result = [];
+      angular.forEach((string || '').split(':'), function(segment, i) {
+        if (i === 0) {
+          result.push(segment);
+        } else {
+          var segmentMatch = segment.match(/(\w+)(?:[?*])?(.*)/);
+          var key = segmentMatch[1];
+          result.push(params[key]);
+          result.push(segmentMatch[2] || '');
+          delete params[key];
+        }
+      });
+      return result.join('');
+    }
+  }];
+}
+
+ngRouteModule.provider('$routeParams', $RouteParamsProvider);
+
+
+/**
+ * @ngdoc service
+ * @name $routeParams
+ * @requires $route
+ *
+ * @description
+ * The `$routeParams` service allows you to retrieve the current set of route parameters.
+ *
+ * Requires the {@link ngRoute `ngRoute`} module to be installed.
+ *
+ * The route parameters are a combination of {@link ng.$location `$location`}'s
+ * {@link ng.$location#search `search()`} and {@link ng.$location#path `path()`}.
+ * The `path` parameters are extracted when the {@link ngRoute.$route `$route`} path is matched.
+ *
+ * In case of parameter name collision, `path` params take precedence over `search` params.
+ *
+ * The service guarantees that the identity of the `$routeParams` object will remain unchanged
+ * (but its properties will likely change) even when a route change occurs.
+ *
+ * Note that the `$routeParams` are only updated *after* a route change completes successfully.
+ * This means that you cannot rely on `$routeParams` being correct in route resolve functions.
+ * Instead you can use `$route.current.params` to access the new route's parameters.
+ *
+ * @example
+ * ```js
+ *  // Given:
+ *  // URL: http://server.com/index.html#/Chapter/1/Section/2?search=moby
+ *  // Route: /Chapter/:chapterId/Section/:sectionId
+ *  //
+ *  // Then
+ *  $routeParams ==> {chapterId:'1', sectionId:'2', search:'moby'}
+ * ```
+ */
+function $RouteParamsProvider() {
+  this.$get = function() { return {}; };
+}
+
+ngRouteModule.directive('ngView', ngViewFactory);
+ngRouteModule.directive('ngView', ngViewFillContentFactory);
+
+
+/**
+ * @ngdoc directive
+ * @name ngView
+ * @restrict ECA
+ *
+ * @description
+ * # Overview
+ * `ngView` is a directive that complements the {@link ngRoute.$route $route} service by
+ * including the rendered template of the current route into the main layout (`index.html`) file.
+ * Every time the current route changes, the included view changes with it according to the
+ * configuration of the `$route` service.
+ *
+ * Requires the {@link ngRoute `ngRoute`} module to be installed.
+ *
+ * @animations
+ * | Animation                        | Occurs                              |
+ * |----------------------------------|-------------------------------------|
+ * | {@link ng.$animate#enter enter}  | when the new element is inserted to the DOM |
+ * | {@link ng.$animate#leave leave}  | when the old element is removed from to the DOM  |
+ *
+ * The enter and leave animation occur concurrently.
+ *
+ * @knownIssue If `ngView` is contained in an asynchronously loaded template (e.g. in another
+ *             directive's templateUrl or in a template loaded using `ngInclude`), then you need to
+ *             make sure that `$route` is instantiated in time to capture the initial
+ *             `$locationChangeStart` event and load the appropriate view. One way to achieve this
+ *             is to have it as a dependency in a `.run` block:
+ *             `myModule.run(['$route', function() {}]);`
+ *
+ * @scope
+ * @priority 400
+ * @param {string=} onload Expression to evaluate whenever the view updates.
+ *
+ * @param {string=} autoscroll Whether `ngView` should call {@link ng.$anchorScroll
+ *                  $anchorScroll} to scroll the viewport after the view is updated.
+ *
+ *                  - If the attribute is not set, disable scrolling.
+ *                  - If the attribute is set without value, enable scrolling.
+ *                  - Otherwise enable scrolling only if the `autoscroll` attribute value evaluated
+ *                    as an expression yields a truthy value.
+ * @example
+    <example name="ngView-directive" module="ngViewExample"
+             deps="angular-route.js;angular-animate.js"
+             animations="true" fixBase="true">
+      <file name="index.html">
+        <div ng-controller="MainCtrl as main">
+          Choose:
+          <a href="Book/Moby">Moby</a> |
+          <a href="Book/Moby/ch/1">Moby: Ch1</a> |
+          <a href="Book/Gatsby">Gatsby</a> |
+          <a href="Book/Gatsby/ch/4?key=value">Gatsby: Ch4</a> |
+          <a href="Book/Scarlet">Scarlet Letter</a><br/>
+
+          <div class="view-animate-container">
+            <div ng-view class="view-animate"></div>
+          </div>
+          <hr />
+
+          <pre>$location.path() = {{main.$location.path()}}</pre>
+          <pre>$route.current.templateUrl = {{main.$route.current.templateUrl}}</pre>
+          <pre>$route.current.params = {{main.$route.current.params}}</pre>
+          <pre>$routeParams = {{main.$routeParams}}</pre>
+        </div>
+      </file>
+
+      <file name="book.html">
+        <div>
+          controller: {{book.name}}<br />
+          Book Id: {{book.params.bookId}}<br />
+        </div>
+      </file>
+
+      <file name="chapter.html">
+        <div>
+          controller: {{chapter.name}}<br />
+          Book Id: {{chapter.params.bookId}}<br />
+          Chapter Id: {{chapter.params.chapterId}}
+        </div>
+      </file>
+
+      <file name="animations.css">
+        .view-animate-container {
+          position:relative;
+          height:100px!important;
+          background:white;
+          border:1px solid black;
+          height:40px;
+          overflow:hidden;
+        }
+
+        .view-animate {
+          padding:10px;
+        }
+
+        .view-animate.ng-enter, .view-animate.ng-leave {
+          transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 1.5s;
+
+          display:block;
+          width:100%;
+          border-left:1px solid black;
+
+          position:absolute;
+          top:0;
+          left:0;
+          right:0;
+          bottom:0;
+          padding:10px;
+        }
+
+        .view-animate.ng-enter {
+          left:100%;
+        }
+        .view-animate.ng-enter.ng-enter-active {
+          left:0;
+        }
+        .view-animate.ng-leave.ng-leave-active {
+          left:-100%;
+        }
+      </file>
+
+      <file name="script.js">
+        angular.module('ngViewExample', ['ngRoute', 'ngAnimate'])
+          .config(['$routeProvider', '$locationProvider',
+            function($routeProvider, $locationProvider) {
+              $routeProvider
+                .when('/Book/:bookId', {
+                  templateUrl: 'book.html',
+                  controller: 'BookCtrl',
+                  controllerAs: 'book'
+                })
+                .when('/Book/:bookId/ch/:chapterId', {
+                  templateUrl: 'chapter.html',
+                  controller: 'ChapterCtrl',
+                  controllerAs: 'chapter'
+                });
+
+              $locationProvider.html5Mode(true);
+          }])
+          .controller('MainCtrl', ['$route', '$routeParams', '$location',
+            function($route, $routeParams, $location) {
+              this.$route = $route;
+              this.$location = $location;
+              this.$routeParams = $routeParams;
+          }])
+          .controller('BookCtrl', ['$routeParams', function($routeParams) {
+            this.name = "BookCtrl";
+            this.params = $routeParams;
+          }])
+          .controller('ChapterCtrl', ['$routeParams', function($routeParams) {
+            this.name = "ChapterCtrl";
+            this.params = $routeParams;
+          }]);
+
+      </file>
+
+      <file name="protractor.js" type="protractor">
+        it('should load and compile correct template', function() {
+          element(by.linkText('Moby: Ch1')).click();
+          var content = element(by.css('[ng-view]')).getText();
+          expect(content).toMatch(/controller\: ChapterCtrl/);
+          expect(content).toMatch(/Book Id\: Moby/);
+          expect(content).toMatch(/Chapter Id\: 1/);
+
+          element(by.partialLinkText('Scarlet')).click();
+
+          content = element(by.css('[ng-view]')).getText();
+          expect(content).toMatch(/controller\: BookCtrl/);
+          expect(content).toMatch(/Book Id\: Scarlet/);
+        });
+      </file>
+    </example>
+ */
+
+
+/**
+ * @ngdoc event
+ * @name ngView#$viewContentLoaded
+ * @eventType emit on the current ngView scope
+ * @description
+ * Emitted every time the ngView content is reloaded.
+ */
+ngViewFactory.$inject = ['$route', '$anchorScroll', '$animate'];
+function ngViewFactory($route, $anchorScroll, $animate) {
+  return {
+    restrict: 'ECA',
+    terminal: true,
+    priority: 400,
+    transclude: 'element',
+    link: function(scope, $element, attr, ctrl, $transclude) {
+        var currentScope,
+            currentElement,
+            previousLeaveAnimation,
+            autoScrollExp = attr.autoscroll,
+            onloadExp = attr.onload || '';
+
+        scope.$on('$routeChangeSuccess', update);
+        update();
+
+        function cleanupLastView() {
+          if (previousLeaveAnimation) {
+            $animate.cancel(previousLeaveAnimation);
+            previousLeaveAnimation = null;
+          }
+
+          if (currentScope) {
+            currentScope.$destroy();
+            currentScope = null;
+          }
+          if (currentElement) {
+            previousLeaveAnimation = $animate.leave(currentElement);
+            previousLeaveAnimation.then(function() {
+              previousLeaveAnimation = null;
+            });
+            currentElement = null;
+          }
+        }
+
+        function update() {
+          var locals = $route.current && $route.current.locals,
+              template = locals && locals.$template;
+
+          if (angular.isDefined(template)) {
+            var newScope = scope.$new();
+            var current = $route.current;
+
+            // Note: This will also link all children of ng-view that were contained in the original
+            // html. If that content contains controllers, ... they could pollute/change the scope.
+            // However, using ng-view on an element with additional content does not make sense...
+            // Note: We can't remove them in the cloneAttchFn of $transclude as that
+            // function is called before linking the content, which would apply child
+            // directives to non existing elements.
+            var clone = $transclude(newScope, function(clone) {
+              $animate.enter(clone, null, currentElement || $element).then(function onNgViewEnter() {
+                if (angular.isDefined(autoScrollExp)
+                  && (!autoScrollExp || scope.$eval(autoScrollExp))) {
+                  $anchorScroll();
+                }
+              });
+              cleanupLastView();
+            });
+
+            currentElement = clone;
+            currentScope = current.scope = newScope;
+            currentScope.$emit('$viewContentLoaded');
+            currentScope.$eval(onloadExp);
+          } else {
+            cleanupLastView();
+          }
+        }
+    }
+  };
+}
+
+// This directive is called during the $transclude call of the first `ngView` directive.
+// It will replace and compile the content of the element with the loaded template.
+// We need this directive so that the element content is already filled when
+// the link function of another directive on the same element as ngView
+// is called.
+ngViewFillContentFactory.$inject = ['$compile', '$controller', '$route'];
+function ngViewFillContentFactory($compile, $controller, $route) {
+  return {
+    restrict: 'ECA',
+    priority: -400,
+    link: function(scope, $element) {
+      var current = $route.current,
+          locals = current.locals;
+
+      $element.html(locals.$template);
+
+      var link = $compile($element.contents());
+
+      if (current.controller) {
+        locals.$scope = scope;
+        var controller = $controller(current.controller, locals);
+        if (current.controllerAs) {
+          scope[current.controllerAs] = controller;
+        }
+        $element.data('$ngControllerController', controller);
+        $element.children().data('$ngControllerController', controller);
+      }
+      scope[current.resolveAs || '$resolve'] = locals;
+
+      link(scope);
+    }
+  };
+}
+
+
+})(window, window.angular);



[12/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ff.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ff.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ff.js
new file mode 100644
index 0000000..da4684f
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ff.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "subaka",
+      "kikii\u0257e"
+    ],
+    "DAY": [
+      "dewo",
+      "aa\u0253nde",
+      "mawbaare",
+      "njeslaare",
+      "naasaande",
+      "mawnde",
+      "hoore-biir"
+    ],
+    "ERANAMES": [
+      "Hade Iisa",
+      "Caggal Iisa"
+    ],
+    "ERAS": [
+      "H-I",
+      "C-I"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "siilo",
+      "colte",
+      "mbooy",
+      "see\u0257to",
+      "duujal",
+      "korse",
+      "morso",
+      "juko",
+      "siilto",
+      "yarkomaa",
+      "jolal",
+      "bowte"
+    ],
+    "SHORTDAY": [
+      "dew",
+      "aa\u0253",
+      "maw",
+      "nje",
+      "naa",
+      "mwd",
+      "hbi"
+    ],
+    "SHORTMONTH": [
+      "sii",
+      "col",
+      "mbo",
+      "see",
+      "duu",
+      "kor",
+      "mor",
+      "juk",
+      "slt",
+      "yar",
+      "jol",
+      "bow"
+    ],
+    "STANDALONEMONTH": [
+      "siilo",
+      "colte",
+      "mbooy",
+      "see\u0257to",
+      "duujal",
+      "korse",
+      "morso",
+      "juko",
+      "siilto",
+      "yarkomaa",
+      "jolal",
+      "bowte"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "CFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "ff",
+  "localeID": "ff",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fi-fi.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fi-fi.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fi-fi.js
new file mode 100644
index 0000000..c3e6a46
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fi-fi.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "ap.",
+      "ip."
+    ],
+    "DAY": [
+      "sunnuntaina",
+      "maanantaina",
+      "tiistaina",
+      "keskiviikkona",
+      "torstaina",
+      "perjantaina",
+      "lauantaina"
+    ],
+    "ERANAMES": [
+      "ennen Kristuksen syntym\u00e4\u00e4",
+      "j\u00e4lkeen Kristuksen syntym\u00e4n"
+    ],
+    "ERAS": [
+      "eKr.",
+      "jKr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "tammikuuta",
+      "helmikuuta",
+      "maaliskuuta",
+      "huhtikuuta",
+      "toukokuuta",
+      "kes\u00e4kuuta",
+      "hein\u00e4kuuta",
+      "elokuuta",
+      "syyskuuta",
+      "lokakuuta",
+      "marraskuuta",
+      "joulukuuta"
+    ],
+    "SHORTDAY": [
+      "su",
+      "ma",
+      "ti",
+      "ke",
+      "to",
+      "pe",
+      "la"
+    ],
+    "SHORTMONTH": [
+      "tammikuuta",
+      "helmikuuta",
+      "maaliskuuta",
+      "huhtikuuta",
+      "toukokuuta",
+      "kes\u00e4kuuta",
+      "hein\u00e4kuuta",
+      "elokuuta",
+      "syyskuuta",
+      "lokakuuta",
+      "marraskuuta",
+      "joulukuuta"
+    ],
+    "STANDALONEMONTH": [
+      "tammikuu",
+      "helmikuu",
+      "maaliskuu",
+      "huhtikuu",
+      "toukokuu",
+      "kes\u00e4kuu",
+      "hein\u00e4kuu",
+      "elokuu",
+      "syyskuu",
+      "lokakuu",
+      "marraskuu",
+      "joulukuu"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "cccc d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "d.M.y H.mm.ss",
+    "mediumDate": "d.M.y",
+    "mediumTime": "H.mm.ss",
+    "short": "d.M.y H.mm",
+    "shortDate": "d.M.y",
+    "shortTime": "H.mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fi-fi",
+  "localeID": "fi_FI",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fi.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fi.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fi.js
new file mode 100644
index 0000000..f10f66e
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fi.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "ap.",
+      "ip."
+    ],
+    "DAY": [
+      "sunnuntaina",
+      "maanantaina",
+      "tiistaina",
+      "keskiviikkona",
+      "torstaina",
+      "perjantaina",
+      "lauantaina"
+    ],
+    "ERANAMES": [
+      "ennen Kristuksen syntym\u00e4\u00e4",
+      "j\u00e4lkeen Kristuksen syntym\u00e4n"
+    ],
+    "ERAS": [
+      "eKr.",
+      "jKr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "tammikuuta",
+      "helmikuuta",
+      "maaliskuuta",
+      "huhtikuuta",
+      "toukokuuta",
+      "kes\u00e4kuuta",
+      "hein\u00e4kuuta",
+      "elokuuta",
+      "syyskuuta",
+      "lokakuuta",
+      "marraskuuta",
+      "joulukuuta"
+    ],
+    "SHORTDAY": [
+      "su",
+      "ma",
+      "ti",
+      "ke",
+      "to",
+      "pe",
+      "la"
+    ],
+    "SHORTMONTH": [
+      "tammikuuta",
+      "helmikuuta",
+      "maaliskuuta",
+      "huhtikuuta",
+      "toukokuuta",
+      "kes\u00e4kuuta",
+      "hein\u00e4kuuta",
+      "elokuuta",
+      "syyskuuta",
+      "lokakuuta",
+      "marraskuuta",
+      "joulukuuta"
+    ],
+    "STANDALONEMONTH": [
+      "tammikuu",
+      "helmikuu",
+      "maaliskuu",
+      "huhtikuu",
+      "toukokuu",
+      "kes\u00e4kuu",
+      "hein\u00e4kuu",
+      "elokuu",
+      "syyskuu",
+      "lokakuu",
+      "marraskuu",
+      "joulukuu"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "cccc d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "d.M.y H.mm.ss",
+    "mediumDate": "d.M.y",
+    "mediumTime": "H.mm.ss",
+    "short": "d.M.y H.mm",
+    "shortDate": "d.M.y",
+    "shortTime": "H.mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fi",
+  "localeID": "fi",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fil-ph.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fil-ph.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fil-ph.js
new file mode 100644
index 0000000..2d222db
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fil-ph.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Linggo",
+      "Lunes",
+      "Martes",
+      "Miyerkules",
+      "Huwebes",
+      "Biyernes",
+      "Sabado"
+    ],
+    "ERANAMES": [
+      "BC",
+      "AD"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "Enero",
+      "Pebrero",
+      "Marso",
+      "Abril",
+      "Mayo",
+      "Hunyo",
+      "Hulyo",
+      "Agosto",
+      "Setyembre",
+      "Oktubre",
+      "Nobyembre",
+      "Disyembre"
+    ],
+    "SHORTDAY": [
+      "Lin",
+      "Lun",
+      "Mar",
+      "Miy",
+      "Huw",
+      "Biy",
+      "Sab"
+    ],
+    "SHORTMONTH": [
+      "Ene",
+      "Peb",
+      "Mar",
+      "Abr",
+      "May",
+      "Hun",
+      "Hul",
+      "Ago",
+      "Set",
+      "Okt",
+      "Nob",
+      "Dis"
+    ],
+    "STANDALONEMONTH": [
+      "Enero",
+      "Pebrero",
+      "Marso",
+      "Abril",
+      "Mayo",
+      "Hunyo",
+      "Hulyo",
+      "Agosto",
+      "Setyembre",
+      "Oktubre",
+      "Nobyembre",
+      "Disyembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, MMMM d, y",
+    "longDate": "MMMM d, y",
+    "medium": "MMM d, y h:mm:ss a",
+    "mediumDate": "MMM d, y",
+    "mediumTime": "h:mm:ss a",
+    "short": "M/d/yy h:mm a",
+    "shortDate": "M/d/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20b1",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "fil-ph",
+  "localeID": "fil_PH",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (vf.v == 0 && (i == 1 || i == 2 || i == 3) || vf.v == 0 && i % 10 != 4 && i % 10 != 6 && i % 10 != 9 || vf.v != 0 && vf.f % 10 != 4 && vf.f % 10 != 6 && vf.f % 10 != 9) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fil.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fil.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fil.js
new file mode 100644
index 0000000..b7e3074
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fil.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Linggo",
+      "Lunes",
+      "Martes",
+      "Miyerkules",
+      "Huwebes",
+      "Biyernes",
+      "Sabado"
+    ],
+    "ERANAMES": [
+      "BC",
+      "AD"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "Enero",
+      "Pebrero",
+      "Marso",
+      "Abril",
+      "Mayo",
+      "Hunyo",
+      "Hulyo",
+      "Agosto",
+      "Setyembre",
+      "Oktubre",
+      "Nobyembre",
+      "Disyembre"
+    ],
+    "SHORTDAY": [
+      "Lin",
+      "Lun",
+      "Mar",
+      "Miy",
+      "Huw",
+      "Biy",
+      "Sab"
+    ],
+    "SHORTMONTH": [
+      "Ene",
+      "Peb",
+      "Mar",
+      "Abr",
+      "May",
+      "Hun",
+      "Hul",
+      "Ago",
+      "Set",
+      "Okt",
+      "Nob",
+      "Dis"
+    ],
+    "STANDALONEMONTH": [
+      "Enero",
+      "Pebrero",
+      "Marso",
+      "Abril",
+      "Mayo",
+      "Hunyo",
+      "Hulyo",
+      "Agosto",
+      "Setyembre",
+      "Oktubre",
+      "Nobyembre",
+      "Disyembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, MMMM d, y",
+    "longDate": "MMMM d, y",
+    "medium": "MMM d, y h:mm:ss a",
+    "mediumDate": "MMM d, y",
+    "mediumTime": "h:mm:ss a",
+    "short": "M/d/yy h:mm a",
+    "shortDate": "M/d/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20b1",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "fil",
+  "localeID": "fil",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (vf.v == 0 && (i == 1 || i == 2 || i == 3) || vf.v == 0 && i % 10 != 4 && i % 10 != 6 && i % 10 != 9 || vf.v != 0 && vf.f % 10 != 4 && vf.f % 10 != 6 && vf.f % 10 != 9) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fo-fo.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fo-fo.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fo-fo.js
new file mode 100644
index 0000000..ef42c7a
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fo-fo.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "um fyrrapartur",
+      "um seinnapartur"
+    ],
+    "DAY": [
+      "sunnudagur",
+      "m\u00e1nadagur",
+      "t\u00fdsdagur",
+      "mikudagur",
+      "h\u00f3sdagur",
+      "fr\u00edggjadagur",
+      "leygardagur"
+    ],
+    "ERANAMES": [
+      "fyrir Krist",
+      "eftir Krist"
+    ],
+    "ERAS": [
+      "f.Kr.",
+      "e.Kr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "januar",
+      "februar",
+      "mars",
+      "apr\u00edl",
+      "mai",
+      "juni",
+      "juli",
+      "august",
+      "september",
+      "oktober",
+      "november",
+      "desember"
+    ],
+    "SHORTDAY": [
+      "sun",
+      "m\u00e1n",
+      "t\u00fds",
+      "mik",
+      "h\u00f3s",
+      "fr\u00ed",
+      "ley"
+    ],
+    "SHORTMONTH": [
+      "jan",
+      "feb",
+      "mar",
+      "apr",
+      "mai",
+      "jun",
+      "jul",
+      "aug",
+      "sep",
+      "okt",
+      "nov",
+      "des"
+    ],
+    "STANDALONEMONTH": [
+      "januar",
+      "februar",
+      "mars",
+      "apr\u00edl",
+      "mai",
+      "juni",
+      "juli",
+      "august",
+      "september",
+      "oktober",
+      "november",
+      "desember"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE dd MMMM y",
+    "longDate": "d. MMM y",
+    "medium": "dd-MM-y HH:mm:ss",
+    "mediumDate": "dd-MM-y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd-MM-yy HH:mm",
+    "shortDate": "dd-MM-yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "kr",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4-",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "fo-fo",
+  "localeID": "fo_FO",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fo.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fo.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fo.js
new file mode 100644
index 0000000..9d83231
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fo.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "um fyrrapartur",
+      "um seinnapartur"
+    ],
+    "DAY": [
+      "sunnudagur",
+      "m\u00e1nadagur",
+      "t\u00fdsdagur",
+      "mikudagur",
+      "h\u00f3sdagur",
+      "fr\u00edggjadagur",
+      "leygardagur"
+    ],
+    "ERANAMES": [
+      "fyrir Krist",
+      "eftir Krist"
+    ],
+    "ERAS": [
+      "f.Kr.",
+      "e.Kr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "januar",
+      "februar",
+      "mars",
+      "apr\u00edl",
+      "mai",
+      "juni",
+      "juli",
+      "august",
+      "september",
+      "oktober",
+      "november",
+      "desember"
+    ],
+    "SHORTDAY": [
+      "sun",
+      "m\u00e1n",
+      "t\u00fds",
+      "mik",
+      "h\u00f3s",
+      "fr\u00ed",
+      "ley"
+    ],
+    "SHORTMONTH": [
+      "jan",
+      "feb",
+      "mar",
+      "apr",
+      "mai",
+      "jun",
+      "jul",
+      "aug",
+      "sep",
+      "okt",
+      "nov",
+      "des"
+    ],
+    "STANDALONEMONTH": [
+      "januar",
+      "februar",
+      "mars",
+      "apr\u00edl",
+      "mai",
+      "juni",
+      "juli",
+      "august",
+      "september",
+      "oktober",
+      "november",
+      "desember"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE dd MMMM y",
+    "longDate": "d. MMM y",
+    "medium": "dd-MM-y HH:mm:ss",
+    "mediumDate": "dd-MM-y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd-MM-yy HH:mm",
+    "shortDate": "dd-MM-yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "kr",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4-",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "fo",
+  "localeID": "fo",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-be.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-be.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-be.js
new file mode 100644
index 0000000..a8d99bb
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-be.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/MM/yy HH:mm",
+    "shortDate": "d/MM/yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-be",
+  "localeID": "fr_BE",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-bf.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-bf.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-bf.js
new file mode 100644
index 0000000..6e33697
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-bf.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "CFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-bf",
+  "localeID": "fr_BF",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-bi.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-bi.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-bi.js
new file mode 100644
index 0000000..52bb8fc
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-bi.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FBu",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-bi",
+  "localeID": "fr_BI",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-bj.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-bj.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-bj.js
new file mode 100644
index 0000000..19ee686
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-bj.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "CFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-bj",
+  "localeID": "fr_BJ",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-bl.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-bl.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-bl.js
new file mode 100644
index 0000000..415d9ca
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-bl.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-bl",
+  "localeID": "fr_BL",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-ca.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-ca.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-ca.js
new file mode 100644
index 0000000..4f1327d
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-ca.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "yy-MM-dd HH:mm",
+    "shortDate": "yy-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-ca",
+  "localeID": "fr_CA",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-cd.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-cd.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-cd.js
new file mode 100644
index 0000000..5a920e6
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-cd.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FrCD",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-cd",
+  "localeID": "fr_CD",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-cf.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-cf.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-cf.js
new file mode 100644
index 0000000..e76a32b
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-cf.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-cf",
+  "localeID": "fr_CF",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-cg.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-cg.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-cg.js
new file mode 100644
index 0000000..3b4ee67
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-cg.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-cg",
+  "localeID": "fr_CG",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-ch.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-ch.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-ch.js
new file mode 100644
index 0000000..df05fe9
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-ch.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.yy HH:mm",
+    "shortDate": "dd.MM.yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "CHF",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4-",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "fr-ch",
+  "localeID": "fr_CH",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-ci.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-ci.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-ci.js
new file mode 100644
index 0000000..032a6ff
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-ci.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "CFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-ci",
+  "localeID": "fr_CI",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-cm.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-cm.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-cm.js
new file mode 100644
index 0000000..74d3d1b
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-cm.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-cm",
+  "localeID": "fr_CM",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-dj.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-dj.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-dj.js
new file mode 100644
index 0000000..471c1e7
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-dj.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 5,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Fdj",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-dj",
+  "localeID": "fr_DJ",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-dz.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-dz.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-dz.js
new file mode 100644
index 0000000..c7f4956
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-dz.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 5,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      5
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "din",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-dz",
+  "localeID": "fr_DZ",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-fr.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-fr.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-fr.js
new file mode 100644
index 0000000..b910e03
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-fr.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-fr",
+  "localeID": "fr_FR",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-ga.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-ga.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-ga.js
new file mode 100644
index 0000000..1d4a5a7
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-ga.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-ga",
+  "localeID": "fr_GA",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-gf.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-gf.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-gf.js
new file mode 100644
index 0000000..d1dc69b
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-gf.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-gf",
+  "localeID": "fr_GF",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-gn.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-gn.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-gn.js
new file mode 100644
index 0000000..062e0f4
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-gn.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FG",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-gn",
+  "localeID": "fr_GN",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-gp.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-gp.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-gp.js
new file mode 100644
index 0000000..d0a9b06
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-gp.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-gp",
+  "localeID": "fr_GP",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-gq.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-gq.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-gq.js
new file mode 100644
index 0000000..47a105a
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fr-gq.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "dimanche",
+      "lundi",
+      "mardi",
+      "mercredi",
+      "jeudi",
+      "vendredi",
+      "samedi"
+    ],
+    "ERANAMES": [
+      "avant J\u00e9sus-Christ",
+      "apr\u00e8s J\u00e9sus-Christ"
+    ],
+    "ERAS": [
+      "av. J.-C.",
+      "ap. J.-C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janvier",
+      "f\u00e9vrier",
+      "mars",
+      "avril",
+      "mai",
+      "juin",
+      "juillet",
+      "ao\u00fbt",
+      "septembre",
+      "octobre",
+      "novembre",
+      "d\u00e9cembre"
+    ],
+    "SHORTDAY": [
+      "dim.",
+      "lun.",
+      "mar.",
+      "mer.",
+      "jeu.",
+      "ven.",
+      "sam."
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "f\u00e9vr.",
+      "mars",
+      "avr.",
+      "mai",
+      "juin",
+      "juil.",
+      "ao\u00fbt",
+      "sept.",
+      "oct.",
+      "nov.",
+      "d\u00e9c."
+    ],
+    "STANDALONEMONTH": [
+      "Janvier",
+      "F\u00e9vrier",
+      "Mars",
+      "Avril",
+      "Mai",
+      "Juin",
+      "Juillet",
+      "Ao\u00fbt",
+      "Septembre",
+      "Octobre",
+      "Novembre",
+      "D\u00e9cembre"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "fr-gq",
+  "localeID": "fr_GQ",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);



[50/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/LICENSE
----------------------------------------------------------------------
diff --git a/rocketmq-console/LICENSE b/rocketmq-console/LICENSE
new file mode 100644
index 0000000..812b7f7
--- /dev/null
+++ b/rocketmq-console/LICENSE
@@ -0,0 +1,579 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (properties) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-----------------------------------------------------------------------------
+
+rocket-console
+-------------------------------------------
+develop base on didapinche's rocket-console
+https://github.com/didapinchegit/rocket-console
+      Apache License
+Version 2.0, January 2004
+
+angular
+-------------------------------------------
+https://github.com/angular/angular  
+The MIT License
+
+Copyright (c) 2014-2017 Google, Inc. http://angular.io
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+angular-material
+-----------------------------------------
+https://github.com/angular/material
+The MIT License
+
+Copyright (c) 2014-2017 Google, Inc. http://angularjs.org
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+bootstrap
+-------------------------------------------
+http://getbootstrap.com/  
+The MIT License (MIT)
+
+Copyright (c) 2011-2017 Twitter, Inc.
+Copyright (c) 2011-2017 The Bootstrap Authors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+bootstrap-material-design
+-------------------------------------------------
+
+The MIT License (MIT)
+
+Copyright (c) 2015-2016, Federico Zivolo and contributors - https://github.com/FezVrasta/bootstrap-material-design
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Acknowledgements:
+
+Some original Bootstrap code and documentation http://getbootstrap.com Copyright (c) 2011-2015 Twitter, Inc
+
+Some original MDL code http://www.getmdl.io/ Copyright 2015 Google Inc. All Rights Reserved.
+
+angular-chosen
+--------------------------------------
+
+The MIT License
+
+Copyright (c) 2013 Localytics http://www.localytics.com
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+bootstrap-datetimepicker
+----------------------------------------------------------
+https://github.com/Eonasdan/bootstrap-datetimepicker
+
+The MIT License (MIT)
+
+Copyright (c) 2015 Jonathan Peterson (@Eonasdan)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+echarts
+----------------------------------
+https://github.com/ecomfe/echarts
+
+Copyright (c) 2017, Baidu Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+   list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright notice,
+   this list of conditions and the following disclaimer in the documentation
+   and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+The views and conclusions contained in the software and documentation are those
+of the authors and should not be interpreted as representing official policies,
+either expressed or implied, of the FreeBSD Project.
+
+html5-boilerplate
+------------------------------------------
+https://github.com/h5bp/html5-boilerplate
+Copyright (c) HTML5 Boilerplate
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Font-Awesome
+----------------------
+https://github.com/FortAwesome/Font-Awesome
+
+License
+
+The Font Awesome font is licensed under the SIL OFL 1.1:
+http://scripts.sil.org/OFL
+Font Awesome CSS, LESS, and Sass files are licensed under the MIT License:
+https://opensource.org/licenses/mit-license.html
+The Font Awesome documentation is licensed under the CC BY 3.0 License:
+http://creativecommons.org/licenses/by/3.0/
+Attribution is no longer required as of Font Awesome 3.0, but much appreciated:
+Font Awesome by Dave Gandy - http://fontawesome.io
+Full details: http://fontawesome.io/license/
+
+
+jquery
+---------------------
+Copyright JS Foundation and other contributors, https://js.foundation/
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/jquery/jquery
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+====
+
+All files located in the node_modules and external directories are
+externally maintained libraries used by this software which have their
+own licenses; we recommend you read them, as their terms may differ from
+the terms above.
+12.json-bigint
+https://github.com/sidorares/json-bigint
+
+The MIT License (MIT)
+
+Copyright (c) 2013 Andrey Sidorov
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Ladda
+---------------
+https://github.com/hakimel/Ladda
+Copyright (C) 2016 Hakim El Hattab, http://hakim.se
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+
+ngDialog
+------------
+http://github.com/likeastore/ngDialog
+
+MIT Licensed
+
+Copyright (c) 2013-2015, Likeastore.com info@likeastore.com
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+notification
+---------------------
+https://github.com/alexcrack/angular-ui-notification
+The MIT License (MIT)
+
+Copyright (c) 2014 Alexey Avramchik
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+bootstrap-validator
+---------------------------
+https://github.com/1000hz/bootstrap-validator
+
+The MIT License (MIT)
+
+Copyright (c) 2016 Cina Saffary
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/NOTICE
----------------------------------------------------------------------
diff --git a/rocketmq-console/NOTICE b/rocketmq-console/NOTICE
new file mode 100644
index 0000000..fa6d59e
--- /dev/null
+++ b/rocketmq-console/NOTICE
@@ -0,0 +1,5 @@
+Apache RocketMQ Console
+Copyright 2016-2017 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/README.md
----------------------------------------------------------------------
diff --git a/rocketmq-console/README.md b/rocketmq-console/README.md
new file mode 100644
index 0000000..30dd67c
--- /dev/null
+++ b/rocketmq-console/README.md
@@ -0,0 +1,68 @@
+## RocketMQ-Console-Ng[![Build Status](https://travis-ci.org/rocketmq/rocketmq-console-ng.svg?branch=master)](https://travis-ci.org/rocketmq/rocketmq-console-ng) [![Coverage Status](https://coveralls.io/repos/github/rocketmq/rocketmq-console-ng/badge.svg?branch=master)](https://coveralls.io/github/rocketmq/rocketmq-console-ng?branch=master)
+[![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)
+## How To Install
+
+### With Docker
+
+* get docker image
+
+```
+mvn clean package -Dmaven.test.skip=true docker:build
+```
+
+or
+
+```
+docker pull styletang/rocketmq-console-ng
+```
+* run it (change namesvrAddr and port yourself)
+
+```
+docker run -e "JAVA_OPTS=-Drocketmq.namesrv.addr=127.0.0.1:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8080:8080 -t styletang/rocketmq-console-ng
+```
+
+### Without Docker
+require java 1.7
+```
+mvn spring-boot:run
+```
+or
+```
+mvn clean package -Dmaven.test.skip=true
+java -jar target/rocketmq-console-ng-1.0.0.jar
+```
+
+#### Tips
+* if you download package slow,you can change maven's mirror(maven's settings.xml)
+  
+  ```
+  <mirrors>
+      <mirror>
+            <id>alimaven</id>
+            <name>aliyun maven</name>
+            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
+            <mirrorOf>central</mirrorOf>        
+      </mirror>
+  </mirrors>
+  ```
+  
+* if you use the rocketmq < 3.5.8,please add -Dcom.rocketmq.sendMessageWithVIPChannel=false when you start rocketmq-console-ng(or you can change it in ops page)
+* change the rocketmq.config.namesrvAddr in resource/application.properties.(or you can change it in ops page)
+
+## UserGuide
+
+[English](https://github.com/apache/incubator-rocketmq-externals/blob/master/rocketmq-console/doc/1_0_0/UserGuide_EN.md)
+
+[中文](https://github.com/apache/incubator-rocketmq-externals/blob/master/rocketmq-console/doc/1_0_0/UserGuide_CN.md)
+
+## Contact
+
+* Issue / Pull Request
+* You can join us and make a contribute for rocketmq-console.
+
+[RocketMQ Contact](http://rocketmq.apache.org/about/contact/)
+#### Mailing Lists
+
+DEV dev@rocketmq.incubator.apache.org
+
+USERS users@rocketmq.incubator.apache.org
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/doc/1_0_0/Milestone.md
----------------------------------------------------------------------
diff --git a/rocketmq-console/doc/1_0_0/Milestone.md b/rocketmq-console/doc/1_0_0/Milestone.md
new file mode 100644
index 0000000..6a345eb
--- /dev/null
+++ b/rocketmq-console/doc/1_0_0/Milestone.md
@@ -0,0 +1,102 @@
+#Deploy Plan
+
+we will deploy the first rocketmq-console-ng use rocketmq-tools 3.5.8(or 4.0.0),base on [rocket-console](https://github.com/didapinchegit/rocket-console),thanks didapinche.com
+
+## Framework
+* 0. we use spring-boot + bootstrap + angularjs
+
+## something to improve
+* 0. clean code (checkStyle codeStyle to be done)
+* 1. international
+* 2. compress fe'resource
+* 3. navigation bar can improve
+* 4. write operation need confirm,action show the detail result
+* 5. layout/UI should improve
+* 6. change to spring-boot
+
+
+## something to fix
+* query Message by topic and time is not accurate, will lost some message 
+* consumer can consume the message when topic has been deleted
+* can't show producerList,we can only query a online producer use topic and groupName,not easy to use.
+* resetOffset should be improve,online consumer can return the reset result but offline's can't
+* we can't set clusterName when create topic or consumer 
+* when create a new consumer,if not be consumed,can't be found in consumerList
+
+
+## something to add
+* 1. dashboard 
+
+# Roadmap
+
+## Improve
+- [x] clean code (checkStyle codeStyle to be done) -- StyleTang
+- [x] international -- Deploy by [tcrow](https://github.com/tcrow)
+- [x] layout/UI  -- Deploy by [tcrow](https://github.com/tcrow)
+	- [x] compress fe'resource 
+	- [x] navigation bar can improve
+	- [x] write operation need confirm,action show the detail result || already have
+	- [x] layout/UI should improve
+- [x] change to spring-boot  -- Deploy by syzjava
+- [x] change to bootstrap angularjs   -- Deploy by [tcrow](https://github.com/tcrow)
+- [x] improve search message --StyleTang
+
+## Fix
+- [x] query Message by topic and time is not accurate, will lost some message  -- StyleTang (need test)
+- [x] consumer can consume the message when topic has been deleted // offset be clear.if have problem,reopen it.
+- [ ] can't show producerList,we can only query a online producer use topic and groupName,not easy to use. [need this issues](https://issues.apache.org/jira/browse/ROCKETMQ-49)(next milestone)
+- [ ] resetOffset should be improve,online consumer can return the reset result but offline's can't //this version(3.5.8) may be can't fix (next milestone)
+- [x] we can't set clusterName when create topic or consumer  -- StyleTang
+- [x] when create a new consumer,if not be consumed,can't be found in consumerList //it Fixed,But this page is too slow,need improve --StyleTang
+- [x] message view page,resend message (version >=3.5.8) have bug   -- StyleTang
+
+## Add
+- [ ] DashboardController      -- Deploy by [tcrow](https://github.com/tcrow)
+    - [x] rocketmq topic tps 5m line chart
+    - [x] rocketmq topic top10 table
+    - [x] broker load 5m line chart
+    - [x] broker load top10 table
+    - [ ] topic exception table(next milestone)
+
+## Already Have (Deploy by StyleTang) But Can Improve 
+### Cluster
+- [x] ClusterController
+    - [x] Cluster OverView
+    - [x] Broker Status
+    - [x] Broker Config
+
+### Topic
+- [x] TopicController
+    - [x] TopicList
+    - [x] Topic Status
+    - [x] Topic Router
+    - [x] View Topic Config
+    - [x] Topci Add / Update
+    - [X] Send A Test Topic
+    - [x] Reset ConsumerGroup's Offset Under This Topic
+    - [x] Delete This Topic
+
+### Producer
+- [x] ProducerController
+    - [x] Producer Client Info
+
+
+### Consumer
+- [x] ConsumerController
+    - [x] ConsumerList
+    - [x] Consumer Client Info
+    - [x] Topic Consume Status Under This Consumer Group
+    - [x] View Consumer Config
+    - [x] Consumer Add / Update
+    - [x] Delete This Consumer
+
+### Message
+- [x] MessageController
+    - [x] Query By Topic And Time
+    - [x] Query By Topic And Key
+    - [x] Query By MessageId(OffsetMessageId)
+    - [x] A Nice Message Detail View
+    - [x] Message Consume Status
+    - [x] Resend Message To A Consume Group
+    
+    
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/doc/1_0_0/UserGuide_CN.md
----------------------------------------------------------------------
diff --git a/rocketmq-console/doc/1_0_0/UserGuide_CN.md b/rocketmq-console/doc/1_0_0/UserGuide_CN.md
new file mode 100644
index 0000000..d48333d
--- /dev/null
+++ b/rocketmq-console/doc/1_0_0/UserGuide_CN.md
@@ -0,0 +1,64 @@
+# RocketMQ使用文档
+
+## 运维页面
+* 你可以修改这个服务使用的navesvr的地址
+* 你可以修改这个服务是否使用VIPChannel(如果你的mq server版本小于3.5.8,请设置不使用)
+
+## 驾驶舱
+* 查看broker的消息量(总量/5分钟图)
+* 查看单一主题的消息量(总量/趋势图)
+
+## 集群页面
+* 查看集群的分布情况
+    * cluster与broker关系
+    * broker
+* 查看broker具体信息/运行信息
+* 查看broker配置信息
+
+## 主题页面
+* 展示所有的主题,可以通过搜索框进行过滤
+* 筛选 普通/重试/死信 主题
+* 添加/更新主题
+    * clusterName 创建在哪几个cluster上
+    * brokerName 创建在哪几个broker上
+    * topicName 主题名
+    * writeQueueNums  写队列数量
+    * readQueueNums  读队列数量
+    * perm //2是写 4是读 6是读写
+* 状态 查询消息投递状态(投递到哪些broker/哪些queue/多少量等)
+* 路由 查看消息的路由(现在你发这个主题的消息会发往哪些broker,对应broker的queue信息)
+* CONSUMER管理(这个topic都被哪些group消费了,消费情况何如)
+* topic配置(查看变更当前的配置)
+* 发送消息(向这个主题发送一个测试消息)
+* 重置消费位点(分为在线和不在线两种情况,不过都需要检查重置是否成功)
+* 删除主题 (会删除掉所有broker以及namesvr上的主题配置和路由信息)
+
+## 消费者页面
+* 展示所有的消费组,可以通过搜索框进行过滤
+* 刷新页面/每隔五秒定时刷新页面
+* 按照订阅组/数量/TPS/延迟 进行排序
+* 添加/更新消费组
+    * clusterName 创建咋哪几个集群上
+    * brokerName 创建在哪几个broker上
+    * groupName  消费组名字
+    * consumeEnable //是否可以消费 FALSE的话将无法进行消费
+    * consumeBroadcastEnable //是否可以广播消费
+    * retryQueueNums //重试队列的大小
+    * brokerId //正常情况从哪消费
+    * whichBrokerWhenConsumeSlowly//出问题了从哪消费
+* 终端 在线的消费客户端查看,包括版本订阅信息和消费模式
+* 消费详情 对应消费组的消费明细查看,这个消费组订阅的所有Topic的消费情况,每个queue对应的消费client查看(包括Retry消息)
+* 配置 查看变更消费组的配置
+* 删除 在指定的broker上删除消费组
+
+## 发布管理页面
+* 通过Topic和Group查询在线的消息生产者客户端
+    * 信息包含客户端主机 版本
+    
+## 消息查询页面
+* 根据Topic和时间区间查询
+    *由于数据量大 做多只会展示2000条,多的会被忽略 
+* 根据Topic和Key进行查询
+    * 最多只会展示64条
+* 根据消息主题和消息Id进行消息的查询
+* 消息详情可以展示这条消息的详细信息,查看消息对应到具体消费组的消费情况(如果异常,可以查看具体的异常信息)。可以向指定的消费组重发消息。
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/doc/1_0_0/UserGuide_EN.md
----------------------------------------------------------------------
diff --git a/rocketmq-console/doc/1_0_0/UserGuide_EN.md b/rocketmq-console/doc/1_0_0/UserGuide_EN.md
new file mode 100644
index 0000000..f883f9e
--- /dev/null
+++ b/rocketmq-console/doc/1_0_0/UserGuide_EN.md
@@ -0,0 +1,65 @@
+# RocketMQ User Guide
+
+## OPS Page
+* You can change console's namesvrAddr here
+* You can change the value of useVIPChannel  here (if you rocketMQ version < 3.5.8,the value of useVIPChannel should be false)
+
+## DashBoard Page
+* broker's message count (broker total message count/5 min trend)
+* topic's message count(topic total message count/5 min trend)
+
+## Cluster Page
+* Cluster Detail
+    * relation between cluster and broker
+    * broker's master / salve node
+* broker'a detail info(runtime info)
+* broker's config
+
+## Topic Page
+* show all the topics,you can filter topic by search bar
+* filter (Normal/retry/dead) topic 
+* Add/Update Topic
+    * clusterName (create on which cluster)
+    * brokerName (create on which broker)
+    * topicName 
+    * writeQueueNums  
+    * readQueueNums  
+    * perm //2 for write 4 for read 6 for write and read
+* STATUS look over message send status(send to which broker/which queue/how many messages) 
+* ROUTER look update topic's router(this topic send to which broker,the broker's queue info)
+* CONSUMER MANAGE(this topic consume by which group,how about the consume state)
+* TOPIC CONFIG(check or change the topic's config)
+* SEND MESSAGE(send a test message)
+* Reset CONSUMER OFFSET (the consumer online or not online is different,you need check the reset result)
+* DELETE (will delete the topic on all broker and namesvr)
+
+## Consumer Page
+* show all the consumers,you can filter consumer by search bar
+* refresh page/refresh page per 5 seconds
+* order by SubscriptionGroup/Quantity/TPS/Delay
+* Add/Update Consumer
+    * clusterName (create on which cluster)
+    * brokerName (create on which broker)
+    * groupName  (consumer group name)
+    * consumeEnable (this group can't consume message if this is false)
+    * consumeBroadcastEnable (can't use broadcast is this is false)
+    * retryQueueNums 
+    * brokerId (consume form where when broker is normal)
+    * whichBrokerWhenConsumeSlowly(consume form where when broker has problem)
+* CLIENT (look over online consumer's client,include subscribe info and consume mode)
+* CONSUME DETAIL (look over this consumer's consume detail,broker offset and the consumer offset,queue consumed by which client)
+* CONFIG (check or change the consumer's config)
+* DELETE (delete the consumer group on selected group)
+
+## Producer Page
+* Query online producer client by topic and group
+    * show client's server / version
+    
+## Message Page
+* Query By Topic And Time
+    *Only Return 2000 Messages,the message more than 2000 will be hide
+* Query By Topic And Key
+    * Only Return 64 Messages
+* Query By Topic And MessageId
+* look over this message's detail info.you can see the message's consume state(each group has one line),show the exception message if has exception.
+you can send this message to the group you selected
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/pom.xml
----------------------------------------------------------------------
diff --git a/rocketmq-console/pom.xml b/rocketmq-console/pom.xml
new file mode 100644
index 0000000..f0f42e7
--- /dev/null
+++ b/rocketmq-console/pom.xml
@@ -0,0 +1,276 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>1.4.3.RELEASE</version>
+    </parent>
+    <groupId>org.apache</groupId>
+    <artifactId>rocketmq-console-ng</artifactId>
+    <packaging>jar</packaging>
+    <version>1.0.0</version>
+    <name>rocketmq-console-ng</name>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <java.version>1.7</java.version>
+        <guava.version>16.0.1</guava.version>
+        <commons-digester.version>2.1</commons-digester.version>
+        <commons-lang.version>2.6</commons-lang.version>
+        <commons-io.version>2.4</commons-io.version>
+        <commons-cli.version>1.2</commons-cli.version>
+        <rocketmq.version>4.0.0-incubating</rocketmq.version>
+        <surefire.version>2.19.1</surefire.version>
+        <aspectj.version>1.6.11</aspectj.version>
+        <main.basedir>${basedir}/../..</main.basedir>
+        <docker.image.prefix>styletang</docker.image.prefix>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>commons-collections</groupId>
+            <artifactId>commons-collections</artifactId>
+            <version>3.2.2</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.rocketmq</groupId>
+            <artifactId>rocketmq-tools</artifactId>
+            <version>${rocketmq.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.rocketmq</groupId>
+            <artifactId>rocketmq-namesrv</artifactId>
+            <version>${rocketmq.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.rocketmq</groupId>
+            <artifactId>rocketmq-broker</artifactId>
+            <version>${rocketmq.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+            <version>${guava.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.aspectj</groupId>
+            <artifactId>aspectjrt</artifactId>
+            <version>${aspectj.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.aspectj</groupId>
+            <artifactId>aspectjweaver</artifactId>
+            <version>${aspectj.version}</version>
+        </dependency>
+        <!-- Spring AOP + AspectJ -->
+        <dependency>
+            <groupId>cglib</groupId>
+            <artifactId>cglib</artifactId>
+            <version>2.2.2</version>
+        </dependency>
+        <dependency>
+            <groupId>org.jooq</groupId>
+            <artifactId>joor</artifactId>
+            <version>0.9.6</version>
+        </dependency>
+
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>com.spotify</groupId>
+                <artifactId>docker-maven-plugin</artifactId>
+                <version>0.4.11</version>
+                <configuration>
+                    <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
+                    <dockerDirectory>src/main/docker</dockerDirectory>
+                    <resources>
+                        <resource>
+                            <targetPath>/</targetPath>
+                            <directory>${project.build.directory}</directory>
+                            <include>${project.build.finalName}.jar</include>
+                        </resource>
+                    </resources>
+                    <imageTags>
+                        <imageTag>${project.version}</imageTag>
+                        <imageTag>latest</imageTag>
+                    </imageTags>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-checkstyle-plugin</artifactId>
+                <version>2.17</version>
+                <executions>
+                    <execution>
+                        <id>validate</id>
+                        <phase>validate</phase>
+                        <configuration>
+                            <excludes>src/main/resources</excludes>
+                            <configLocation>style/rmq_checkstyle.xml</configLocation>
+                            <encoding>UTF-8</encoding>
+                            <consoleOutput>true</consoleOutput>
+                            <failsOnError>true</failsOnError>
+                        </configuration>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <version>${surefire.version}</version>
+                <configuration>
+                    <excludes>
+                        <exclude>src/test/**</exclude>
+                    </excludes>
+                    <forkCount>1</forkCount>
+                    <reuseForks>true</reuseForks>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-failsafe-plugin</artifactId>
+                <version>2.19.1</version>
+                <configuration>
+                    <forkCount>1</forkCount>
+                    <reuseForks>true</reuseForks>
+                    <argLine>@{failsafeArgLine}</argLine>
+                    <includes>
+                        <include>src/test/**</include>
+                    </includes>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>integration-test</goal>
+                            <goal>verify</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <artifactId>maven-source-plugin</artifactId>
+                <version>3.0.1</version>
+                <executions>
+                    <execution>
+                        <id>attach-sources</id>
+                        <goals>
+                            <goal>jar</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <!--<plugin>-->
+                <!--<artifactId>maven-javadoc-plugin</artifactId>-->
+                <!--<version>2.10.4</version>-->
+                <!--<configuration>-->
+                    <!--<charset>UTF-8</charset>-->
+                <!--</configuration>-->
+                <!--<executions>-->
+                    <!--<execution>-->
+                        <!--<id>attach-javadocs</id>-->
+                        <!--<goals>-->
+                            <!--<goal>jar</goal>-->
+                        <!--</goals>-->
+                    <!--</execution>-->
+                <!--</executions>-->
+            <!--</plugin>-->
+            <plugin>
+                <groupId>org.jacoco</groupId>
+                <artifactId>jacoco-maven-plugin</artifactId>
+                <version>0.7.9</version>
+                <executions>
+                    <execution>
+                        <id>default-prepare-agent</id>
+                        <goals>
+                            <goal>prepare-agent</goal>
+                        </goals>
+                        <configuration>
+                            <destFile>${project.build.directory}/jacoco.exec</destFile>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>default-prepare-agent-integration</id>
+                        <phase>pre-integration-test</phase>
+                        <goals>
+                            <goal>prepare-agent-integration</goal>
+                        </goals>
+                        <configuration>
+                            <destFile>${project.build.directory}/jacoco-it.exec</destFile>
+                            <propertyName>failsafeArgLine</propertyName>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>default-report</id>
+                        <goals>
+                            <goal>report</goal>
+                        </goals>
+                    </execution>
+                    <execution>
+                        <id>default-report-integration</id>
+                        <goals>
+                            <goal>report-integration</goal>
+                        </goals>
+                    </execution>
+                    <execution>
+                        <id>default-check</id>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                        <configuration>
+                            <rules>
+                                <!-- implementation is needed only for Maven 2 -->
+                                <rule implementation="org.jacoco.maven.RuleConfiguration">
+                                    <element>BUNDLE</element>
+                                    <limits>
+                                        <!-- implementation is needed only for Maven 2 -->
+                                        <limit implementation="org.jacoco.report.check.Limit">
+                                            <counter>COMPLEXITY</counter>
+                                            <value>COVEREDRATIO</value>
+                                            <minimum>0.20</minimum>
+                                        </limit>
+                                    </limits>
+                                </rule>
+                            </rules>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.eluder.coveralls</groupId>
+                <artifactId>coveralls-maven-plugin</artifactId>
+                <version>4.3.0</version>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>findbugs-maven-plugin</artifactId>
+                <version>3.0.4</version>
+            </plugin>
+
+            
+        </plugins>
+    </build>
+
+</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/docker/Dockerfile
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/docker/Dockerfile b/rocketmq-console/src/main/docker/Dockerfile
new file mode 100644
index 0000000..46917b1
--- /dev/null
+++ b/rocketmq-console/src/main/docker/Dockerfile
@@ -0,0 +1,6 @@
+FROM java:8
+VOLUME /tmp
+ADD rocketmq-console-ng-1.0.0.jar app.jar
+RUN sh -c 'touch /app.jar'
+ENV JAVA_OPTS=""
+ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -jar /app.jar" ]

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/App.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/App.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/App.java
new file mode 100644
index 0000000..6ed5831
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/App.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@EnableAutoConfiguration
+@SpringBootApplication
+public class App {
+
+    public static void main(String[] args) {
+        SpringApplication.run(App.class, args);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/aspect/admin/MQAdminAspect.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/aspect/admin/MQAdminAspect.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/aspect/admin/MQAdminAspect.java
new file mode 100644
index 0000000..8c7cf06
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/aspect/admin/MQAdminAspect.java
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.aspect.admin;
+
+import java.lang.reflect.Method;
+import org.apache.rocketmq.console.aspect.admin.annotation.MultiMQAdminCmdMethod;
+import org.apache.rocketmq.console.service.client.MQAdminInstance;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Pointcut;
+import org.aspectj.lang.reflect.MethodSignature;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+@Aspect
+@Service
+public class MQAdminAspect {
+    private Logger logger = LoggerFactory.getLogger(MQAdminAspect.class);
+
+    public MQAdminAspect() {
+    }
+
+    @Pointcut("execution(* org.apache.rocketmq.console.service.client.MQAdminExtImpl..*(..))")
+    public void mQAdminMethodPointCut() {
+
+    }
+
+    @Pointcut("@annotation(org.apache.rocketmq.console.aspect.admin.annotation.MultiMQAdminCmdMethod)")
+    public void multiMQAdminMethodPointCut() {
+
+    }
+
+    @Around(value = "mQAdminMethodPointCut() || multiMQAdminMethodPointCut()")
+    public Object aroundMQAdminMethod(ProceedingJoinPoint joinPoint) throws Throwable {
+        long start = System.currentTimeMillis();
+        Object obj = null;
+        try {
+            MethodSignature signature = (MethodSignature)joinPoint.getSignature();
+            Method method = signature.getMethod();
+            MultiMQAdminCmdMethod multiMQAdminCmdMethod = method.getAnnotation(MultiMQAdminCmdMethod.class);
+            if (multiMQAdminCmdMethod != null && multiMQAdminCmdMethod.timeoutMillis() > 0) {
+                MQAdminInstance.initMQAdminInstance(multiMQAdminCmdMethod.timeoutMillis());
+            }
+            else {
+                MQAdminInstance.initMQAdminInstance(0);
+            }
+            obj = joinPoint.proceed();
+        }
+        finally {
+            MQAdminInstance.destroyMQAdminInstance();
+            logger.debug("op=look method={} cost={}", joinPoint.getSignature().getName(), System.currentTimeMillis() - start);
+        }
+        return obj;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/aspect/admin/annotation/MultiMQAdminCmdMethod.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/aspect/admin/annotation/MultiMQAdminCmdMethod.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/aspect/admin/annotation/MultiMQAdminCmdMethod.java
new file mode 100644
index 0000000..103e094
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/aspect/admin/annotation/MultiMQAdminCmdMethod.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package org.apache.rocketmq.console.aspect.admin.annotation;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target({ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface MultiMQAdminCmdMethod {
+    long timeoutMillis() default 0;
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/aspect/admin/annotation/OriginalControllerReturnValue.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/aspect/admin/annotation/OriginalControllerReturnValue.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/aspect/admin/annotation/OriginalControllerReturnValue.java
new file mode 100644
index 0000000..9a31bd3
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/aspect/admin/annotation/OriginalControllerReturnValue.java
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package org.apache.rocketmq.console.aspect.admin.annotation;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target({ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface OriginalControllerReturnValue {
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/config/RMQConfigure.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/config/RMQConfigure.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/config/RMQConfigure.java
new file mode 100644
index 0000000..0d9457e
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/config/RMQConfigure.java
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.config;
+
+import java.io.File;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.rocketmq.common.MixAll;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+import static org.apache.rocketmq.client.ClientConfig.SEND_MESSAGE_WITH_VIP_CHANNEL_PROPERTY;
+
+@Configuration
+@ConfigurationProperties(prefix = "rocketmq.config")
+public class RMQConfigure {
+
+    private Logger logger = LoggerFactory.getLogger(RMQConfigure.class);
+    //use rocketmq.namesrv.addr first,if it is empty,than use system proerty or system env
+    private volatile String namesrvAddr = System.getProperty(MixAll.NAMESRV_ADDR_PROPERTY, System.getenv(MixAll.NAMESRV_ADDR_ENV));
+
+    private volatile String isVIPChannel = System.getProperty(SEND_MESSAGE_WITH_VIP_CHANNEL_PROPERTY, "true");
+
+
+    private String dataPath;
+
+    private boolean enableDashBoardCollect;
+
+    public String getNamesrvAddr() {
+        return namesrvAddr;
+    }
+
+    public void setNamesrvAddr(String namesrvAddr) {
+        if (StringUtils.isNotBlank(namesrvAddr)) {
+            this.namesrvAddr = namesrvAddr;
+            System.setProperty(MixAll.NAMESRV_ADDR_PROPERTY, namesrvAddr);
+            logger.info("setNameSrvAddrByProperty nameSrvAddr={}", namesrvAddr);
+        }
+    }
+
+    public String getRocketMqConsoleDataPath() {
+        return dataPath;
+    }
+
+    public String getConsoleCollectData() {
+        return dataPath + File.separator + "dashboard";
+    }
+
+    public void setDataPath(String dataPath) {
+        this.dataPath = dataPath;
+    }
+
+    public String getIsVIPChannel() {
+        return isVIPChannel;
+    }
+
+    public void setIsVIPChannel(String isVIPChannel) {
+        if (StringUtils.isNotBlank(isVIPChannel)) {
+            this.isVIPChannel = isVIPChannel;
+            System.setProperty(SEND_MESSAGE_WITH_VIP_CHANNEL_PROPERTY, isVIPChannel);
+            logger.info("setIsVIPChannel isVIPChannel={}", isVIPChannel);
+        }
+    }
+
+    public boolean isEnableDashBoardCollect() {
+        return enableDashBoardCollect;
+    }
+
+    public void setEnableDashBoardCollect(String enableDashBoardCollect) {
+        this.enableDashBoardCollect = Boolean.valueOf(enableDashBoardCollect);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/ClusterController.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/ClusterController.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/ClusterController.java
new file mode 100644
index 0000000..718f75d
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/ClusterController.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.controller;
+
+import org.apache.rocketmq.console.service.ClusterService;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import javax.annotation.Resource;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+@Controller
+@RequestMapping("/cluster")
+public class ClusterController {
+
+    @Resource
+    private ClusterService clusterService;
+
+    @RequestMapping(value = "/list.query", method = RequestMethod.GET)
+    @ResponseBody
+    public Object list() {
+        return clusterService.list();
+    }
+
+    @RequestMapping(value = "/brokerConfig.query", method = RequestMethod.GET)
+    @ResponseBody
+    public Object brokerConfig(@RequestParam String brokerAddr) {
+        return clusterService.getBrokerConfig(brokerAddr);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/ConsumerController.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/ConsumerController.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/ConsumerController.java
new file mode 100644
index 0000000..107e7c9
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/ConsumerController.java
@@ -0,0 +1,111 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.controller;
+
+import com.google.common.base.Preconditions;
+import javax.annotation.Resource;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.rocketmq.common.protocol.body.ConsumerConnection;
+import org.apache.rocketmq.console.model.ConnectionInfo;
+import org.apache.rocketmq.console.model.request.ConsumerConfigInfo;
+import org.apache.rocketmq.console.model.request.DeleteSubGroupRequest;
+import org.apache.rocketmq.console.model.request.ResetOffsetRequest;
+import org.apache.rocketmq.console.service.ConsumerService;
+import org.apache.rocketmq.console.util.JsonUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+@Controller
+@RequestMapping("/consumer")
+public class ConsumerController {
+    private Logger logger = LoggerFactory.getLogger(ConsumerController.class);
+
+    @Resource
+    private ConsumerService consumerService;
+
+    @RequestMapping(value = "/groupList.query")
+    @ResponseBody
+    public Object list() {
+        return consumerService.queryGroupList();
+    }
+
+    @RequestMapping(value = "/group.query")
+    @ResponseBody
+    public Object groupQuery(@RequestParam String consumerGroup) {
+        return consumerService.queryGroup(consumerGroup);
+    }
+
+    @RequestMapping(value = "/resetOffset.do", method = {RequestMethod.POST})
+    @ResponseBody
+    public Object resetOffset(@RequestBody ResetOffsetRequest resetOffsetRequest) {
+        logger.info("op=look resetOffsetRequest={}", JsonUtil.obj2String(resetOffsetRequest));
+        return consumerService.resetOffset(resetOffsetRequest);
+    }
+
+    @RequestMapping(value = "/examineSubscriptionGroupConfig.query")
+    @ResponseBody
+    public Object examineSubscriptionGroupConfig(@RequestParam String consumerGroup) {
+        return consumerService.examineSubscriptionGroupConfig(consumerGroup);
+    }
+
+    @RequestMapping(value = "/deleteSubGroup.do", method = {RequestMethod.POST})
+    @ResponseBody
+    public Object deleteSubGroup(@RequestBody DeleteSubGroupRequest deleteSubGroupRequest) {
+        return consumerService.deleteSubGroup(deleteSubGroupRequest);
+    }
+
+    @RequestMapping(value = "/createOrUpdate.do", method = {RequestMethod.POST})
+    @ResponseBody
+    public Object consumerCreateOrUpdateRequest(@RequestBody ConsumerConfigInfo consumerConfigInfo) {
+        Preconditions.checkArgument(CollectionUtils.isNotEmpty(consumerConfigInfo.getBrokerNameList()) || CollectionUtils.isNotEmpty(consumerConfigInfo.getClusterNameList()),
+            "clusterName or brokerName can not be all blank");
+        return consumerService.createAndUpdateSubscriptionGroupConfig(consumerConfigInfo);
+    }
+
+    @RequestMapping(value = "/fetchBrokerNameList.query", method = {RequestMethod.GET})
+    @ResponseBody
+    public Object fetchBrokerNameList(@RequestParam String consumerGroup) {
+        return consumerService.fetchBrokerNameSetBySubscriptionGroup(consumerGroup);
+    }
+
+    @RequestMapping(value = "/queryTopicByConsumer.query")
+    @ResponseBody
+    public Object queryConsumerByTopic(@RequestParam String consumerGroup) {
+        return consumerService.queryConsumeStatsListByGroupName(consumerGroup);
+    }
+
+    @RequestMapping(value = "/consumerConnection.query")
+    @ResponseBody
+    public Object consumerConnection(@RequestParam(required = false) String consumerGroup) {
+        ConsumerConnection consumerConnection = consumerService.getConsumerConnection(consumerGroup);
+        consumerConnection.setConnectionSet(ConnectionInfo.buildConnectionInfoHashSet(consumerConnection.getConnectionSet()));
+        return consumerConnection;
+    }
+
+    @RequestMapping(value = "/consumerRunningInfo.query")
+    @ResponseBody
+    public Object getConsumerRunningInfo(@RequestParam String consumerGroup, @RequestParam String clientId,
+        @RequestParam boolean jstack) {
+        return consumerService.getConsumerRunningInfo(consumerGroup, clientId, jstack);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/DashboardController.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/DashboardController.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/DashboardController.java
new file mode 100644
index 0000000..985c028
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/DashboardController.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.rocketmq.console.controller;
+
+import javax.annotation.Resource;
+
+import com.google.common.base.Strings;
+import org.apache.rocketmq.console.service.DashboardService;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+@Controller
+@RequestMapping("/dashboard")
+public class DashboardController {
+
+    @Resource
+    DashboardService dashboardService;
+
+    @RequestMapping(value = "/broker.query", method = RequestMethod.GET)
+    @ResponseBody
+    public Object broker(@RequestParam String date) {
+        return dashboardService.queryBrokerData(date);
+    }
+
+    @RequestMapping(value = "/topic.query", method = RequestMethod.GET)
+    @ResponseBody
+    public Object topic(@RequestParam String date, String topicName) {
+        if (Strings.isNullOrEmpty(topicName)) {
+            return dashboardService.queryTopicData(date);
+        }
+        return dashboardService.queryTopicData(date,topicName);
+    }
+
+    @RequestMapping(value = "/topicCurrent", method = RequestMethod.GET)
+    @ResponseBody
+    public Object topicCurrent() {
+        return dashboardService.queryTopicCurrentData();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/MessageController.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/MessageController.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/MessageController.java
new file mode 100644
index 0000000..dd3cdb8
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/MessageController.java
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.controller;
+
+import org.apache.rocketmq.common.Pair;
+import org.apache.rocketmq.common.protocol.body.ConsumeMessageDirectlyResult;
+import org.apache.rocketmq.tools.admin.api.MessageTrack;
+import org.apache.rocketmq.console.model.MessageView;
+import org.apache.rocketmq.console.service.MessageService;
+import org.apache.rocketmq.console.util.JsonUtil;
+import com.google.common.collect.Maps;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+@Controller
+@RequestMapping("/message")
+public class MessageController {
+    private Logger logger = LoggerFactory.getLogger(MessageController.class);
+    @Resource
+    private MessageService messageService;
+
+    @RequestMapping(value = "/viewMessage.query", method = RequestMethod.GET)
+    @ResponseBody
+    public Object viewMessage(@RequestParam(required = false) String topic, @RequestParam String msgId) {
+        Map<String, Object> messageViewMap = Maps.newHashMap();
+        Pair<MessageView, List<MessageTrack>> messageViewListPair = messageService.viewMessage(topic, msgId);
+        messageViewMap.put("messageView", messageViewListPair.getObject1());
+        messageViewMap.put("messageTrackList", messageViewListPair.getObject2());
+        return messageViewMap;
+    }
+
+    @RequestMapping(value = "/queryMessageByTopicAndKey.query", method = RequestMethod.GET)
+    @ResponseBody
+    public Object queryMessageByTopicAndKey(@RequestParam String topic, @RequestParam String key) {
+        return messageService.queryMessageByTopicAndKey(topic, key);
+    }
+
+    @RequestMapping(value = "/queryMessageByTopic.query", method = RequestMethod.GET)
+    @ResponseBody
+    public Object queryMessageByTopic(@RequestParam String topic, @RequestParam long begin,
+        @RequestParam long end) {
+        return messageService.queryMessageByTopic(topic, begin, end);
+    }
+
+    @RequestMapping(value = "/consumeMessageDirectly.do", method = RequestMethod.POST)
+    @ResponseBody
+    public Object consumeMessageDirectly(@RequestParam String topic, @RequestParam String consumerGroup,
+        @RequestParam String msgId,
+        @RequestParam(required = false) String clientId) {
+        logger.info("msgId={} consumerGroup={} clientId={}", msgId, consumerGroup, clientId);
+        ConsumeMessageDirectlyResult consumeMessageDirectlyResult = messageService.consumeMessageDirectly(topic, msgId, consumerGroup, clientId);
+        logger.info("consumeMessageDirectlyResult={}", JsonUtil.obj2String(consumeMessageDirectlyResult));
+        return consumeMessageDirectlyResult;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/MonitorController.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/MonitorController.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/MonitorController.java
new file mode 100644
index 0000000..8bc89e9
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/MonitorController.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.controller;
+
+import javax.annotation.Resource;
+import org.apache.rocketmq.console.model.ConsumerMonitorConfig;
+import org.apache.rocketmq.console.service.MonitorService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+@Controller
+@RequestMapping("/monitor")
+public class MonitorController {
+
+    private Logger logger = LoggerFactory.getLogger(MonitorController.class);
+    @Resource
+    private MonitorService monitorService;
+
+    @RequestMapping(value = "/createOrUpdateConsumerMonitor.do", method = {RequestMethod.POST})
+    @ResponseBody
+    public Object createOrUpdateConsumerMonitor(@RequestParam String consumeGroupName, @RequestParam int minCount,
+        @RequestParam int maxDiffTotal) {
+        return monitorService.createOrUpdateConsumerMonitor(consumeGroupName, new ConsumerMonitorConfig(minCount, maxDiffTotal));
+    }
+
+    @RequestMapping(value = "/consumerMonitorConfig.query", method = {RequestMethod.GET})
+    @ResponseBody
+    public Object consumerMonitorConfig() {
+        return monitorService.queryConsumerMonitorConfig();
+    }
+
+    @RequestMapping(value = "/consumerMonitorConfigByGroupName.query", method = {RequestMethod.GET})
+    @ResponseBody
+    public Object consumerMonitorConfigByGroupName(@RequestParam String consumeGroupName) {
+        return monitorService.queryConsumerMonitorConfigByGroupName(consumeGroupName);
+    }
+
+    @RequestMapping(value = "/deleteConsumerMonitor.do", method = {RequestMethod.POST})
+    @ResponseBody
+    public Object deleteConsumerMonitor(@RequestParam String consumeGroupName) {
+        return monitorService.deleteConsumerMonitor(consumeGroupName);
+    }
+}



[15/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-nr.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-nr.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-nr.js
new file mode 100644
index 0000000..43ccef7
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-nr.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-nr",
+  "localeID": "en_NR",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-nu.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-nu.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-nu.js
new file mode 100644
index 0000000..cf38b29
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-nu.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-nu",
+  "localeID": "en_NU",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-nz.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-nz.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-nz.js
new file mode 100644
index 0000000..ed8882d
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-nz.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d/MM/y h:mm:ss a",
+    "mediumDate": "d/MM/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/MM/yy h:mm a",
+    "shortDate": "d/MM/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-nz",
+  "localeID": "en_NZ",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-pg.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-pg.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-pg.js
new file mode 100644
index 0000000..2d1f0f2
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-pg.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "PGK",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-pg",
+  "localeID": "en_PG",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ph.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ph.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ph.js
new file mode 100644
index 0000000..d0de5aa
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ph.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20b1",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-ph",
+  "localeID": "en_PH",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-pk.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-pk.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-pk.js
new file mode 100644
index 0000000..8b29fb5
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-pk.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "dd-MMM-y h:mm:ss a",
+    "mediumDate": "dd-MMM-y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Rs",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-pk",
+  "localeID": "en_PK",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-pn.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-pn.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-pn.js
new file mode 100644
index 0000000..ea48b8c
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-pn.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-pn",
+  "localeID": "en_PN",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-pr.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-pr.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-pr.js
new file mode 100644
index 0000000..0afbf67
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-pr.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, MMMM d, y",
+    "longDate": "MMMM d, y",
+    "medium": "MMM d, y h:mm:ss a",
+    "mediumDate": "MMM d, y",
+    "mediumTime": "h:mm:ss a",
+    "short": "M/d/yy h:mm a",
+    "shortDate": "M/d/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-pr",
+  "localeID": "en_PR",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-pw.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-pw.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-pw.js
new file mode 100644
index 0000000..b8ae591
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-pw.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-pw",
+  "localeID": "en_PW",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-rw.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-rw.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-rw.js
new file mode 100644
index 0000000..f61e44f
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-rw.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "RF",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-rw",
+  "localeID": "en_RW",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-sb.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-sb.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-sb.js
new file mode 100644
index 0000000..86078c7
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-sb.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-sb",
+  "localeID": "en_SB",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-sc.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-sc.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-sc.js
new file mode 100644
index 0000000..2a568dc
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-sc.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "SCR",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-sc",
+  "localeID": "en_SC",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-sd.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-sd.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-sd.js
new file mode 100644
index 0000000..661129d
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-sd.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 5,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      5
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "SDG",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-sd",
+  "localeID": "en_SD",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-sg.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-sg.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-sg.js
new file mode 100644
index 0000000..d27b9b2
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-sg.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/M/yy h:mm a",
+    "shortDate": "d/M/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-sg",
+  "localeID": "en_SG",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-sh.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-sh.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-sh.js
new file mode 100644
index 0000000..14d81f9
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-sh.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u00a3",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-sh",
+  "localeID": "en_SH",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-sl.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-sl.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-sl.js
new file mode 100644
index 0000000..752d458
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-sl.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "SLL",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-sl",
+  "localeID": "en_SL",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ss.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ss.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ss.js
new file mode 100644
index 0000000..691fa95
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ss.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u00a3",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-ss",
+  "localeID": "en_SS",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-sx.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-sx.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-sx.js
new file mode 100644
index 0000000..dc3610a
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-sx.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "NAf.",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-sx",
+  "localeID": "en_SX",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-sz.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-sz.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-sz.js
new file mode 100644
index 0000000..502409c
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-sz.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "SZL",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-sz",
+  "localeID": "en_SZ",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-tc.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-tc.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-tc.js
new file mode 100644
index 0000000..f9a8a67
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-tc.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-tc",
+  "localeID": "en_TC",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-tk.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-tk.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-tk.js
new file mode 100644
index 0000000..0180bdd
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-tk.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-tk",
+  "localeID": "en_TK",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-to.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-to.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-to.js
new file mode 100644
index 0000000..34890a7
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-to.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "T$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-to",
+  "localeID": "en_TO",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-tt.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-tt.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-tt.js
new file mode 100644
index 0000000..f261440
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-tt.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-tt",
+  "localeID": "en_TT",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-tv.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-tv.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-tv.js
new file mode 100644
index 0000000..9726bbe
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-tv.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-tv",
+  "localeID": "en_TV",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-tz.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-tz.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-tz.js
new file mode 100644
index 0000000..d6ae6b9
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-tz.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "TSh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-tz",
+  "localeID": "en_TZ",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ug.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ug.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ug.js
new file mode 100644
index 0000000..da8b433
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_en-ug.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sunday",
+      "Monday",
+      "Tuesday",
+      "Wednesday",
+      "Thursday",
+      "Friday",
+      "Saturday"
+    ],
+    "ERANAMES": [
+      "Before Christ",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "SHORTDAY": [
+      "Sun",
+      "Mon",
+      "Tue",
+      "Wed",
+      "Thu",
+      "Fri",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "May",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Oct",
+      "Nov",
+      "Dec"
+    ],
+    "STANDALONEMONTH": [
+      "January",
+      "February",
+      "March",
+      "April",
+      "May",
+      "June",
+      "July",
+      "August",
+      "September",
+      "October",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "UGX",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "en-ug",
+  "localeID": "en_UG",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);



[05/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lkt-us.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lkt-us.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lkt-us.js
new file mode 100644
index 0000000..8f0f754
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lkt-us.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "A\u014bp\u00e9tuwak\u021fa\u014b",
+      "A\u014bp\u00e9tuwa\u014b\u017ei",
+      "A\u014bp\u00e9tunu\u014bpa",
+      "A\u014bp\u00e9tuyamni",
+      "A\u014bp\u00e9tutopa",
+      "A\u014bp\u00e9tuzapta\u014b",
+      "Ow\u00e1\u014bgyu\u017ea\u017eapi"
+    ],
+    "ERANAMES": [
+      "BCE",
+      "CE"
+    ],
+    "ERAS": [
+      "BCE",
+      "CE"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Wi\u00f3the\u021fika W\u00ed",
+      "Thiy\u00f3\u021feyu\u014bka W\u00ed",
+      "I\u0161t\u00e1wi\u010dhayaza\u014b W\u00ed",
+      "P\u021fe\u017e\u00edt\u021fo W\u00ed",
+      "\u010cha\u014bw\u00e1pet\u021fo W\u00ed",
+      "W\u00edpazuk\u021fa-wa\u0161t\u00e9 W\u00ed",
+      "\u010cha\u014bp\u021f\u00e1sapa W\u00ed",
+      "Was\u00fat\u021fu\u014b W\u00ed",
+      "\u010cha\u014bw\u00e1pe\u01e7i W\u00ed",
+      "\u010cha\u014bw\u00e1pe-kasn\u00e1 W\u00ed",
+      "Wan\u00edyetu W\u00ed",
+      "T\u021fah\u00e9kap\u0161u\u014b W\u00ed"
+    ],
+    "SHORTDAY": [
+      "A\u014bp\u00e9tuwak\u021fa\u014b",
+      "A\u014bp\u00e9tuwa\u014b\u017ei",
+      "A\u014bp\u00e9tunu\u014bpa",
+      "A\u014bp\u00e9tuyamni",
+      "A\u014bp\u00e9tutopa",
+      "A\u014bp\u00e9tuzapta\u014b",
+      "Ow\u00e1\u014bgyu\u017ea\u017eapi"
+    ],
+    "SHORTMONTH": [
+      "Wi\u00f3the\u021fika W\u00ed",
+      "Thiy\u00f3\u021feyu\u014bka W\u00ed",
+      "I\u0161t\u00e1wi\u010dhayaza\u014b W\u00ed",
+      "P\u021fe\u017e\u00edt\u021fo W\u00ed",
+      "\u010cha\u014bw\u00e1pet\u021fo W\u00ed",
+      "W\u00edpazuk\u021fa-wa\u0161t\u00e9 W\u00ed",
+      "\u010cha\u014bp\u021f\u00e1sapa W\u00ed",
+      "Was\u00fat\u021fu\u014b W\u00ed",
+      "\u010cha\u014bw\u00e1pe\u01e7i W\u00ed",
+      "\u010cha\u014bw\u00e1pe-kasn\u00e1 W\u00ed",
+      "Wan\u00edyetu W\u00ed",
+      "T\u021fah\u00e9kap\u0161u\u014b W\u00ed"
+    ],
+    "STANDALONEMONTH": [
+      "Wi\u00f3the\u021fika W\u00ed",
+      "Thiy\u00f3\u021feyu\u014bka W\u00ed",
+      "I\u0161t\u00e1wi\u010dhayaza\u014b W\u00ed",
+      "P\u021fe\u017e\u00edt\u021fo W\u00ed",
+      "\u010cha\u014bw\u00e1pet\u021fo W\u00ed",
+      "W\u00edpazuk\u021fa-wa\u0161t\u00e9 W\u00ed",
+      "\u010cha\u014bp\u021f\u00e1sapa W\u00ed",
+      "Was\u00fat\u021fu\u014b W\u00ed",
+      "\u010cha\u014bw\u00e1pe\u01e7i W\u00ed",
+      "\u010cha\u014bw\u00e1pe-kasn\u00e1 W\u00ed",
+      "Wan\u00edyetu W\u00ed",
+      "T\u021fah\u00e9kap\u0161u\u014b W\u00ed"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, MMMM d, y",
+    "longDate": "MMMM d, y",
+    "medium": "MMM d, y h:mm:ss a",
+    "mediumDate": "MMM d, y",
+    "mediumTime": "h:mm:ss a",
+    "short": "M/d/yy h:mm a",
+    "shortDate": "M/d/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "lkt-us",
+  "localeID": "lkt_US",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lkt.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lkt.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lkt.js
new file mode 100644
index 0000000..7b66c44
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lkt.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "A\u014bp\u00e9tuwak\u021fa\u014b",
+      "A\u014bp\u00e9tuwa\u014b\u017ei",
+      "A\u014bp\u00e9tunu\u014bpa",
+      "A\u014bp\u00e9tuyamni",
+      "A\u014bp\u00e9tutopa",
+      "A\u014bp\u00e9tuzapta\u014b",
+      "Ow\u00e1\u014bgyu\u017ea\u017eapi"
+    ],
+    "ERANAMES": [
+      "BCE",
+      "CE"
+    ],
+    "ERAS": [
+      "BCE",
+      "CE"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Wi\u00f3the\u021fika W\u00ed",
+      "Thiy\u00f3\u021feyu\u014bka W\u00ed",
+      "I\u0161t\u00e1wi\u010dhayaza\u014b W\u00ed",
+      "P\u021fe\u017e\u00edt\u021fo W\u00ed",
+      "\u010cha\u014bw\u00e1pet\u021fo W\u00ed",
+      "W\u00edpazuk\u021fa-wa\u0161t\u00e9 W\u00ed",
+      "\u010cha\u014bp\u021f\u00e1sapa W\u00ed",
+      "Was\u00fat\u021fu\u014b W\u00ed",
+      "\u010cha\u014bw\u00e1pe\u01e7i W\u00ed",
+      "\u010cha\u014bw\u00e1pe-kasn\u00e1 W\u00ed",
+      "Wan\u00edyetu W\u00ed",
+      "T\u021fah\u00e9kap\u0161u\u014b W\u00ed"
+    ],
+    "SHORTDAY": [
+      "A\u014bp\u00e9tuwak\u021fa\u014b",
+      "A\u014bp\u00e9tuwa\u014b\u017ei",
+      "A\u014bp\u00e9tunu\u014bpa",
+      "A\u014bp\u00e9tuyamni",
+      "A\u014bp\u00e9tutopa",
+      "A\u014bp\u00e9tuzapta\u014b",
+      "Ow\u00e1\u014bgyu\u017ea\u017eapi"
+    ],
+    "SHORTMONTH": [
+      "Wi\u00f3the\u021fika W\u00ed",
+      "Thiy\u00f3\u021feyu\u014bka W\u00ed",
+      "I\u0161t\u00e1wi\u010dhayaza\u014b W\u00ed",
+      "P\u021fe\u017e\u00edt\u021fo W\u00ed",
+      "\u010cha\u014bw\u00e1pet\u021fo W\u00ed",
+      "W\u00edpazuk\u021fa-wa\u0161t\u00e9 W\u00ed",
+      "\u010cha\u014bp\u021f\u00e1sapa W\u00ed",
+      "Was\u00fat\u021fu\u014b W\u00ed",
+      "\u010cha\u014bw\u00e1pe\u01e7i W\u00ed",
+      "\u010cha\u014bw\u00e1pe-kasn\u00e1 W\u00ed",
+      "Wan\u00edyetu W\u00ed",
+      "T\u021fah\u00e9kap\u0161u\u014b W\u00ed"
+    ],
+    "STANDALONEMONTH": [
+      "Wi\u00f3the\u021fika W\u00ed",
+      "Thiy\u00f3\u021feyu\u014bka W\u00ed",
+      "I\u0161t\u00e1wi\u010dhayaza\u014b W\u00ed",
+      "P\u021fe\u017e\u00edt\u021fo W\u00ed",
+      "\u010cha\u014bw\u00e1pet\u021fo W\u00ed",
+      "W\u00edpazuk\u021fa-wa\u0161t\u00e9 W\u00ed",
+      "\u010cha\u014bp\u021f\u00e1sapa W\u00ed",
+      "Was\u00fat\u021fu\u014b W\u00ed",
+      "\u010cha\u014bw\u00e1pe\u01e7i W\u00ed",
+      "\u010cha\u014bw\u00e1pe-kasn\u00e1 W\u00ed",
+      "Wan\u00edyetu W\u00ed",
+      "T\u021fah\u00e9kap\u0161u\u014b W\u00ed"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, MMMM d, y",
+    "longDate": "MMMM d, y",
+    "medium": "MMM d, y h:mm:ss a",
+    "mediumDate": "MMM d, y",
+    "mediumTime": "h:mm:ss a",
+    "short": "M/d/yy h:mm a",
+    "shortDate": "M/d/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "lkt",
+  "localeID": "lkt",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ln-ao.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ln-ao.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ln-ao.js
new file mode 100644
index 0000000..a3bc109
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ln-ao.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "nt\u0254\u0301ng\u0254\u0301",
+      "mp\u00f3kwa"
+    ],
+    "DAY": [
+      "eyenga",
+      "mok\u0254l\u0254 mwa yambo",
+      "mok\u0254l\u0254 mwa m\u00edbal\u00e9",
+      "mok\u0254l\u0254 mwa m\u00eds\u00e1to",
+      "mok\u0254l\u0254 ya m\u00edn\u00e9i",
+      "mok\u0254l\u0254 ya m\u00edt\u00e1no",
+      "mp\u0254\u0301s\u0254"
+    ],
+    "ERANAMES": [
+      "Yambo ya Y\u00e9zu Kr\u00eds",
+      "Nsima ya Y\u00e9zu Kr\u00eds"
+    ],
+    "ERAS": [
+      "lib\u00f3so ya",
+      "nsima ya Y"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "s\u00e1nz\u00e1 ya yambo",
+      "s\u00e1nz\u00e1 ya m\u00edbal\u00e9",
+      "s\u00e1nz\u00e1 ya m\u00eds\u00e1to",
+      "s\u00e1nz\u00e1 ya m\u00ednei",
+      "s\u00e1nz\u00e1 ya m\u00edt\u00e1no",
+      "s\u00e1nz\u00e1 ya mot\u00f3b\u00e1",
+      "s\u00e1nz\u00e1 ya nsambo",
+      "s\u00e1nz\u00e1 ya mwambe",
+      "s\u00e1nz\u00e1 ya libwa",
+      "s\u00e1nz\u00e1 ya z\u00f3mi",
+      "s\u00e1nz\u00e1 ya z\u00f3mi na m\u0254\u030ck\u0254\u0301",
+      "s\u00e1nz\u00e1 ya z\u00f3mi na m\u00edbal\u00e9"
+    ],
+    "SHORTDAY": [
+      "eye",
+      "ybo",
+      "mbl",
+      "mst",
+      "min",
+      "mtn",
+      "mps"
+    ],
+    "SHORTMONTH": [
+      "yan",
+      "fbl",
+      "msi",
+      "apl",
+      "mai",
+      "yun",
+      "yul",
+      "agt",
+      "stb",
+      "\u0254tb",
+      "nvb",
+      "dsb"
+    ],
+    "STANDALONEMONTH": [
+      "s\u00e1nz\u00e1 ya yambo",
+      "s\u00e1nz\u00e1 ya m\u00edbal\u00e9",
+      "s\u00e1nz\u00e1 ya m\u00eds\u00e1to",
+      "s\u00e1nz\u00e1 ya m\u00ednei",
+      "s\u00e1nz\u00e1 ya m\u00edt\u00e1no",
+      "s\u00e1nz\u00e1 ya mot\u00f3b\u00e1",
+      "s\u00e1nz\u00e1 ya nsambo",
+      "s\u00e1nz\u00e1 ya mwambe",
+      "s\u00e1nz\u00e1 ya libwa",
+      "s\u00e1nz\u00e1 ya z\u00f3mi",
+      "s\u00e1nz\u00e1 ya z\u00f3mi na m\u0254\u030ck\u0254\u0301",
+      "s\u00e1nz\u00e1 ya z\u00f3mi na m\u00edbal\u00e9"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Kz",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "ln-ao",
+  "localeID": "ln_AO",
+  "pluralCat": function(n, opt_precision) {  if (n >= 0 && n <= 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ln-cd.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ln-cd.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ln-cd.js
new file mode 100644
index 0000000..d46aa94
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ln-cd.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "nt\u0254\u0301ng\u0254\u0301",
+      "mp\u00f3kwa"
+    ],
+    "DAY": [
+      "eyenga",
+      "mok\u0254l\u0254 mwa yambo",
+      "mok\u0254l\u0254 mwa m\u00edbal\u00e9",
+      "mok\u0254l\u0254 mwa m\u00eds\u00e1to",
+      "mok\u0254l\u0254 ya m\u00edn\u00e9i",
+      "mok\u0254l\u0254 ya m\u00edt\u00e1no",
+      "mp\u0254\u0301s\u0254"
+    ],
+    "ERANAMES": [
+      "Yambo ya Y\u00e9zu Kr\u00eds",
+      "Nsima ya Y\u00e9zu Kr\u00eds"
+    ],
+    "ERAS": [
+      "lib\u00f3so ya",
+      "nsima ya Y"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "s\u00e1nz\u00e1 ya yambo",
+      "s\u00e1nz\u00e1 ya m\u00edbal\u00e9",
+      "s\u00e1nz\u00e1 ya m\u00eds\u00e1to",
+      "s\u00e1nz\u00e1 ya m\u00ednei",
+      "s\u00e1nz\u00e1 ya m\u00edt\u00e1no",
+      "s\u00e1nz\u00e1 ya mot\u00f3b\u00e1",
+      "s\u00e1nz\u00e1 ya nsambo",
+      "s\u00e1nz\u00e1 ya mwambe",
+      "s\u00e1nz\u00e1 ya libwa",
+      "s\u00e1nz\u00e1 ya z\u00f3mi",
+      "s\u00e1nz\u00e1 ya z\u00f3mi na m\u0254\u030ck\u0254\u0301",
+      "s\u00e1nz\u00e1 ya z\u00f3mi na m\u00edbal\u00e9"
+    ],
+    "SHORTDAY": [
+      "eye",
+      "ybo",
+      "mbl",
+      "mst",
+      "min",
+      "mtn",
+      "mps"
+    ],
+    "SHORTMONTH": [
+      "yan",
+      "fbl",
+      "msi",
+      "apl",
+      "mai",
+      "yun",
+      "yul",
+      "agt",
+      "stb",
+      "\u0254tb",
+      "nvb",
+      "dsb"
+    ],
+    "STANDALONEMONTH": [
+      "s\u00e1nz\u00e1 ya yambo",
+      "s\u00e1nz\u00e1 ya m\u00edbal\u00e9",
+      "s\u00e1nz\u00e1 ya m\u00eds\u00e1to",
+      "s\u00e1nz\u00e1 ya m\u00ednei",
+      "s\u00e1nz\u00e1 ya m\u00edt\u00e1no",
+      "s\u00e1nz\u00e1 ya mot\u00f3b\u00e1",
+      "s\u00e1nz\u00e1 ya nsambo",
+      "s\u00e1nz\u00e1 ya mwambe",
+      "s\u00e1nz\u00e1 ya libwa",
+      "s\u00e1nz\u00e1 ya z\u00f3mi",
+      "s\u00e1nz\u00e1 ya z\u00f3mi na m\u0254\u030ck\u0254\u0301",
+      "s\u00e1nz\u00e1 ya z\u00f3mi na m\u00edbal\u00e9"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FrCD",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "ln-cd",
+  "localeID": "ln_CD",
+  "pluralCat": function(n, opt_precision) {  if (n >= 0 && n <= 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ln-cf.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ln-cf.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ln-cf.js
new file mode 100644
index 0000000..8a2d999
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ln-cf.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "nt\u0254\u0301ng\u0254\u0301",
+      "mp\u00f3kwa"
+    ],
+    "DAY": [
+      "eyenga",
+      "mok\u0254l\u0254 mwa yambo",
+      "mok\u0254l\u0254 mwa m\u00edbal\u00e9",
+      "mok\u0254l\u0254 mwa m\u00eds\u00e1to",
+      "mok\u0254l\u0254 ya m\u00edn\u00e9i",
+      "mok\u0254l\u0254 ya m\u00edt\u00e1no",
+      "mp\u0254\u0301s\u0254"
+    ],
+    "ERANAMES": [
+      "Yambo ya Y\u00e9zu Kr\u00eds",
+      "Nsima ya Y\u00e9zu Kr\u00eds"
+    ],
+    "ERAS": [
+      "lib\u00f3so ya",
+      "nsima ya Y"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "s\u00e1nz\u00e1 ya yambo",
+      "s\u00e1nz\u00e1 ya m\u00edbal\u00e9",
+      "s\u00e1nz\u00e1 ya m\u00eds\u00e1to",
+      "s\u00e1nz\u00e1 ya m\u00ednei",
+      "s\u00e1nz\u00e1 ya m\u00edt\u00e1no",
+      "s\u00e1nz\u00e1 ya mot\u00f3b\u00e1",
+      "s\u00e1nz\u00e1 ya nsambo",
+      "s\u00e1nz\u00e1 ya mwambe",
+      "s\u00e1nz\u00e1 ya libwa",
+      "s\u00e1nz\u00e1 ya z\u00f3mi",
+      "s\u00e1nz\u00e1 ya z\u00f3mi na m\u0254\u030ck\u0254\u0301",
+      "s\u00e1nz\u00e1 ya z\u00f3mi na m\u00edbal\u00e9"
+    ],
+    "SHORTDAY": [
+      "eye",
+      "ybo",
+      "mbl",
+      "mst",
+      "min",
+      "mtn",
+      "mps"
+    ],
+    "SHORTMONTH": [
+      "yan",
+      "fbl",
+      "msi",
+      "apl",
+      "mai",
+      "yun",
+      "yul",
+      "agt",
+      "stb",
+      "\u0254tb",
+      "nvb",
+      "dsb"
+    ],
+    "STANDALONEMONTH": [
+      "s\u00e1nz\u00e1 ya yambo",
+      "s\u00e1nz\u00e1 ya m\u00edbal\u00e9",
+      "s\u00e1nz\u00e1 ya m\u00eds\u00e1to",
+      "s\u00e1nz\u00e1 ya m\u00ednei",
+      "s\u00e1nz\u00e1 ya m\u00edt\u00e1no",
+      "s\u00e1nz\u00e1 ya mot\u00f3b\u00e1",
+      "s\u00e1nz\u00e1 ya nsambo",
+      "s\u00e1nz\u00e1 ya mwambe",
+      "s\u00e1nz\u00e1 ya libwa",
+      "s\u00e1nz\u00e1 ya z\u00f3mi",
+      "s\u00e1nz\u00e1 ya z\u00f3mi na m\u0254\u030ck\u0254\u0301",
+      "s\u00e1nz\u00e1 ya z\u00f3mi na m\u00edbal\u00e9"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "ln-cf",
+  "localeID": "ln_CF",
+  "pluralCat": function(n, opt_precision) {  if (n >= 0 && n <= 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ln-cg.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ln-cg.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ln-cg.js
new file mode 100644
index 0000000..fd47f4a
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ln-cg.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "nt\u0254\u0301ng\u0254\u0301",
+      "mp\u00f3kwa"
+    ],
+    "DAY": [
+      "eyenga",
+      "mok\u0254l\u0254 mwa yambo",
+      "mok\u0254l\u0254 mwa m\u00edbal\u00e9",
+      "mok\u0254l\u0254 mwa m\u00eds\u00e1to",
+      "mok\u0254l\u0254 ya m\u00edn\u00e9i",
+      "mok\u0254l\u0254 ya m\u00edt\u00e1no",
+      "mp\u0254\u0301s\u0254"
+    ],
+    "ERANAMES": [
+      "Yambo ya Y\u00e9zu Kr\u00eds",
+      "Nsima ya Y\u00e9zu Kr\u00eds"
+    ],
+    "ERAS": [
+      "lib\u00f3so ya",
+      "nsima ya Y"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "s\u00e1nz\u00e1 ya yambo",
+      "s\u00e1nz\u00e1 ya m\u00edbal\u00e9",
+      "s\u00e1nz\u00e1 ya m\u00eds\u00e1to",
+      "s\u00e1nz\u00e1 ya m\u00ednei",
+      "s\u00e1nz\u00e1 ya m\u00edt\u00e1no",
+      "s\u00e1nz\u00e1 ya mot\u00f3b\u00e1",
+      "s\u00e1nz\u00e1 ya nsambo",
+      "s\u00e1nz\u00e1 ya mwambe",
+      "s\u00e1nz\u00e1 ya libwa",
+      "s\u00e1nz\u00e1 ya z\u00f3mi",
+      "s\u00e1nz\u00e1 ya z\u00f3mi na m\u0254\u030ck\u0254\u0301",
+      "s\u00e1nz\u00e1 ya z\u00f3mi na m\u00edbal\u00e9"
+    ],
+    "SHORTDAY": [
+      "eye",
+      "ybo",
+      "mbl",
+      "mst",
+      "min",
+      "mtn",
+      "mps"
+    ],
+    "SHORTMONTH": [
+      "yan",
+      "fbl",
+      "msi",
+      "apl",
+      "mai",
+      "yun",
+      "yul",
+      "agt",
+      "stb",
+      "\u0254tb",
+      "nvb",
+      "dsb"
+    ],
+    "STANDALONEMONTH": [
+      "s\u00e1nz\u00e1 ya yambo",
+      "s\u00e1nz\u00e1 ya m\u00edbal\u00e9",
+      "s\u00e1nz\u00e1 ya m\u00eds\u00e1to",
+      "s\u00e1nz\u00e1 ya m\u00ednei",
+      "s\u00e1nz\u00e1 ya m\u00edt\u00e1no",
+      "s\u00e1nz\u00e1 ya mot\u00f3b\u00e1",
+      "s\u00e1nz\u00e1 ya nsambo",
+      "s\u00e1nz\u00e1 ya mwambe",
+      "s\u00e1nz\u00e1 ya libwa",
+      "s\u00e1nz\u00e1 ya z\u00f3mi",
+      "s\u00e1nz\u00e1 ya z\u00f3mi na m\u0254\u030ck\u0254\u0301",
+      "s\u00e1nz\u00e1 ya z\u00f3mi na m\u00edbal\u00e9"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "ln-cg",
+  "localeID": "ln_CG",
+  "pluralCat": function(n, opt_precision) {  if (n >= 0 && n <= 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ln.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ln.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ln.js
new file mode 100644
index 0000000..63ad366
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ln.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "nt\u0254\u0301ng\u0254\u0301",
+      "mp\u00f3kwa"
+    ],
+    "DAY": [
+      "eyenga",
+      "mok\u0254l\u0254 mwa yambo",
+      "mok\u0254l\u0254 mwa m\u00edbal\u00e9",
+      "mok\u0254l\u0254 mwa m\u00eds\u00e1to",
+      "mok\u0254l\u0254 ya m\u00edn\u00e9i",
+      "mok\u0254l\u0254 ya m\u00edt\u00e1no",
+      "mp\u0254\u0301s\u0254"
+    ],
+    "ERANAMES": [
+      "Yambo ya Y\u00e9zu Kr\u00eds",
+      "Nsima ya Y\u00e9zu Kr\u00eds"
+    ],
+    "ERAS": [
+      "lib\u00f3so ya",
+      "nsima ya Y"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "s\u00e1nz\u00e1 ya yambo",
+      "s\u00e1nz\u00e1 ya m\u00edbal\u00e9",
+      "s\u00e1nz\u00e1 ya m\u00eds\u00e1to",
+      "s\u00e1nz\u00e1 ya m\u00ednei",
+      "s\u00e1nz\u00e1 ya m\u00edt\u00e1no",
+      "s\u00e1nz\u00e1 ya mot\u00f3b\u00e1",
+      "s\u00e1nz\u00e1 ya nsambo",
+      "s\u00e1nz\u00e1 ya mwambe",
+      "s\u00e1nz\u00e1 ya libwa",
+      "s\u00e1nz\u00e1 ya z\u00f3mi",
+      "s\u00e1nz\u00e1 ya z\u00f3mi na m\u0254\u030ck\u0254\u0301",
+      "s\u00e1nz\u00e1 ya z\u00f3mi na m\u00edbal\u00e9"
+    ],
+    "SHORTDAY": [
+      "eye",
+      "ybo",
+      "mbl",
+      "mst",
+      "min",
+      "mtn",
+      "mps"
+    ],
+    "SHORTMONTH": [
+      "yan",
+      "fbl",
+      "msi",
+      "apl",
+      "mai",
+      "yun",
+      "yul",
+      "agt",
+      "stb",
+      "\u0254tb",
+      "nvb",
+      "dsb"
+    ],
+    "STANDALONEMONTH": [
+      "s\u00e1nz\u00e1 ya yambo",
+      "s\u00e1nz\u00e1 ya m\u00edbal\u00e9",
+      "s\u00e1nz\u00e1 ya m\u00eds\u00e1to",
+      "s\u00e1nz\u00e1 ya m\u00ednei",
+      "s\u00e1nz\u00e1 ya m\u00edt\u00e1no",
+      "s\u00e1nz\u00e1 ya mot\u00f3b\u00e1",
+      "s\u00e1nz\u00e1 ya nsambo",
+      "s\u00e1nz\u00e1 ya mwambe",
+      "s\u00e1nz\u00e1 ya libwa",
+      "s\u00e1nz\u00e1 ya z\u00f3mi",
+      "s\u00e1nz\u00e1 ya z\u00f3mi na m\u0254\u030ck\u0254\u0301",
+      "s\u00e1nz\u00e1 ya z\u00f3mi na m\u00edbal\u00e9"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FrCD",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "ln",
+  "localeID": "ln",
+  "pluralCat": function(n, opt_precision) {  if (n >= 0 && n <= 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lo-la.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lo-la.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lo-la.js
new file mode 100644
index 0000000..1709269
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lo-la.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0e81\u0ec8\u0ead\u0e99\u0e97\u0ec8\u0ebd\u0e87",
+      "\u0eab\u0ebc\u0eb1\u0e87\u0e97\u0ec8\u0ebd\u0e87"
+    ],
+    "DAY": [
+      "\u0ea7\u0eb1\u0e99\u0ead\u0eb2\u0e97\u0eb4\u0e94",
+      "\u0ea7\u0eb1\u0e99\u0e88\u0eb1\u0e99",
+      "\u0ea7\u0eb1\u0e99\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99",
+      "\u0ea7\u0eb1\u0e99\u0e9e\u0eb8\u0e94",
+      "\u0ea7\u0eb1\u0e99\u0e9e\u0eb0\u0eab\u0eb1\u0e94",
+      "\u0ea7\u0eb1\u0e99\u0eaa\u0eb8\u0e81",
+      "\u0ea7\u0eb1\u0e99\u0ec0\u0eaa\u0ebb\u0eb2"
+    ],
+    "ERANAMES": [
+      "\u0e81\u0ec8\u0ead\u0e99\u0e84\u0ea3\u0eb4\u0e94\u0eaa\u0eb1\u0e81\u0e81\u0eb0\u0ea5\u0eb2\u0e94",
+      "\u0e84\u0ea3\u0eb4\u0e94\u0eaa\u0eb1\u0e81\u0e81\u0eb0\u0ea5\u0eb2\u0e94"
+    ],
+    "ERAS": [
+      "\u0e81\u0ec8\u0ead\u0e99 \u0e84.\u0eaa.",
+      "\u0e84.\u0eaa."
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99",
+      "\u0e81\u0eb8\u0ea1\u0e9e\u0eb2",
+      "\u0ea1\u0eb5\u0e99\u0eb2",
+      "\u0ec0\u0ea1\u0eaa\u0eb2",
+      "\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2",
+      "\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2",
+      "\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94",
+      "\u0eaa\u0eb4\u0e87\u0eab\u0eb2",
+      "\u0e81\u0eb1\u0e99\u0e8d\u0eb2",
+      "\u0e95\u0eb8\u0ea5\u0eb2",
+      "\u0e9e\u0eb0\u0e88\u0eb4\u0e81",
+      "\u0e97\u0eb1\u0e99\u0ea7\u0eb2"
+    ],
+    "SHORTDAY": [
+      "\u0ea7\u0eb1\u0e99\u0ead\u0eb2\u0e97\u0eb4\u0e94",
+      "\u0ea7\u0eb1\u0e99\u0e88\u0eb1\u0e99",
+      "\u0ea7\u0eb1\u0e99\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99",
+      "\u0ea7\u0eb1\u0e99\u0e9e\u0eb8\u0e94",
+      "\u0ea7\u0eb1\u0e99\u0e9e\u0eb0\u0eab\u0eb1\u0e94",
+      "\u0ea7\u0eb1\u0e99\u0eaa\u0eb8\u0e81",
+      "\u0ea7\u0eb1\u0e99\u0ec0\u0eaa\u0ebb\u0eb2"
+    ],
+    "SHORTMONTH": [
+      "\u0ea1.\u0e81.",
+      "\u0e81.\u0e9e.",
+      "\u0ea1.\u0e99.",
+      "\u0ea1.\u0eaa.",
+      "\u0e9e.\u0e9e.",
+      "\u0ea1\u0eb4.\u0e96.",
+      "\u0e81.\u0ea5.",
+      "\u0eaa.\u0eab.",
+      "\u0e81.\u0e8d.",
+      "\u0e95.\u0ea5.",
+      "\u0e9e.\u0e88.",
+      "\u0e97.\u0ea7."
+    ],
+    "STANDALONEMONTH": [
+      "\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99",
+      "\u0e81\u0eb8\u0ea1\u0e9e\u0eb2",
+      "\u0ea1\u0eb5\u0e99\u0eb2",
+      "\u0ec0\u0ea1\u0eaa\u0eb2",
+      "\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2",
+      "\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2",
+      "\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94",
+      "\u0eaa\u0eb4\u0e87\u0eab\u0eb2",
+      "\u0e81\u0eb1\u0e99\u0e8d\u0eb2",
+      "\u0e95\u0eb8\u0ea5\u0eb2",
+      "\u0e9e\u0eb0\u0e88\u0eb4\u0e81",
+      "\u0e97\u0eb1\u0e99\u0ea7\u0eb2"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE \u0e97\u0eb5 d MMMM G y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y H:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "H:mm:ss",
+    "short": "d/M/y H:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "H:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ad",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4-",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "lo-la",
+  "localeID": "lo_LA",
+  "pluralCat": function(n, opt_precision) {  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lo.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lo.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lo.js
new file mode 100644
index 0000000..9d27393
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lo.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0e81\u0ec8\u0ead\u0e99\u0e97\u0ec8\u0ebd\u0e87",
+      "\u0eab\u0ebc\u0eb1\u0e87\u0e97\u0ec8\u0ebd\u0e87"
+    ],
+    "DAY": [
+      "\u0ea7\u0eb1\u0e99\u0ead\u0eb2\u0e97\u0eb4\u0e94",
+      "\u0ea7\u0eb1\u0e99\u0e88\u0eb1\u0e99",
+      "\u0ea7\u0eb1\u0e99\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99",
+      "\u0ea7\u0eb1\u0e99\u0e9e\u0eb8\u0e94",
+      "\u0ea7\u0eb1\u0e99\u0e9e\u0eb0\u0eab\u0eb1\u0e94",
+      "\u0ea7\u0eb1\u0e99\u0eaa\u0eb8\u0e81",
+      "\u0ea7\u0eb1\u0e99\u0ec0\u0eaa\u0ebb\u0eb2"
+    ],
+    "ERANAMES": [
+      "\u0e81\u0ec8\u0ead\u0e99\u0e84\u0ea3\u0eb4\u0e94\u0eaa\u0eb1\u0e81\u0e81\u0eb0\u0ea5\u0eb2\u0e94",
+      "\u0e84\u0ea3\u0eb4\u0e94\u0eaa\u0eb1\u0e81\u0e81\u0eb0\u0ea5\u0eb2\u0e94"
+    ],
+    "ERAS": [
+      "\u0e81\u0ec8\u0ead\u0e99 \u0e84.\u0eaa.",
+      "\u0e84.\u0eaa."
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99",
+      "\u0e81\u0eb8\u0ea1\u0e9e\u0eb2",
+      "\u0ea1\u0eb5\u0e99\u0eb2",
+      "\u0ec0\u0ea1\u0eaa\u0eb2",
+      "\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2",
+      "\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2",
+      "\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94",
+      "\u0eaa\u0eb4\u0e87\u0eab\u0eb2",
+      "\u0e81\u0eb1\u0e99\u0e8d\u0eb2",
+      "\u0e95\u0eb8\u0ea5\u0eb2",
+      "\u0e9e\u0eb0\u0e88\u0eb4\u0e81",
+      "\u0e97\u0eb1\u0e99\u0ea7\u0eb2"
+    ],
+    "SHORTDAY": [
+      "\u0ea7\u0eb1\u0e99\u0ead\u0eb2\u0e97\u0eb4\u0e94",
+      "\u0ea7\u0eb1\u0e99\u0e88\u0eb1\u0e99",
+      "\u0ea7\u0eb1\u0e99\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99",
+      "\u0ea7\u0eb1\u0e99\u0e9e\u0eb8\u0e94",
+      "\u0ea7\u0eb1\u0e99\u0e9e\u0eb0\u0eab\u0eb1\u0e94",
+      "\u0ea7\u0eb1\u0e99\u0eaa\u0eb8\u0e81",
+      "\u0ea7\u0eb1\u0e99\u0ec0\u0eaa\u0ebb\u0eb2"
+    ],
+    "SHORTMONTH": [
+      "\u0ea1.\u0e81.",
+      "\u0e81.\u0e9e.",
+      "\u0ea1.\u0e99.",
+      "\u0ea1.\u0eaa.",
+      "\u0e9e.\u0e9e.",
+      "\u0ea1\u0eb4.\u0e96.",
+      "\u0e81.\u0ea5.",
+      "\u0eaa.\u0eab.",
+      "\u0e81.\u0e8d.",
+      "\u0e95.\u0ea5.",
+      "\u0e9e.\u0e88.",
+      "\u0e97.\u0ea7."
+    ],
+    "STANDALONEMONTH": [
+      "\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99",
+      "\u0e81\u0eb8\u0ea1\u0e9e\u0eb2",
+      "\u0ea1\u0eb5\u0e99\u0eb2",
+      "\u0ec0\u0ea1\u0eaa\u0eb2",
+      "\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2",
+      "\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2",
+      "\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94",
+      "\u0eaa\u0eb4\u0e87\u0eab\u0eb2",
+      "\u0e81\u0eb1\u0e99\u0e8d\u0eb2",
+      "\u0e95\u0eb8\u0ea5\u0eb2",
+      "\u0e9e\u0eb0\u0e88\u0eb4\u0e81",
+      "\u0e97\u0eb1\u0e99\u0ea7\u0eb2"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE \u0e97\u0eb5 d MMMM G y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y H:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "H:mm:ss",
+    "short": "d/M/y H:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "H:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ad",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4-",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "lo",
+  "localeID": "lo",
+  "pluralCat": function(n, opt_precision) {  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lt-lt.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lt-lt.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lt-lt.js
new file mode 100644
index 0000000..cd4d0e9
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lt-lt.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "prie\u0161piet",
+      "popiet"
+    ],
+    "DAY": [
+      "sekmadienis",
+      "pirmadienis",
+      "antradienis",
+      "tre\u010diadienis",
+      "ketvirtadienis",
+      "penktadienis",
+      "\u0161e\u0161tadienis"
+    ],
+    "ERANAMES": [
+      "prie\u0161 Krist\u0173",
+      "po Kristaus"
+    ],
+    "ERAS": [
+      "pr. Kr.",
+      "po Kr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "sausio",
+      "vasario",
+      "kovo",
+      "baland\u017eio",
+      "gegu\u017e\u0117s",
+      "bir\u017eelio",
+      "liepos",
+      "rugpj\u016b\u010dio",
+      "rugs\u0117jo",
+      "spalio",
+      "lapkri\u010dio",
+      "gruod\u017eio"
+    ],
+    "SHORTDAY": [
+      "sk",
+      "pr",
+      "an",
+      "tr",
+      "kt",
+      "pn",
+      "\u0161t"
+    ],
+    "SHORTMONTH": [
+      "saus.",
+      "vas.",
+      "kov.",
+      "bal.",
+      "geg.",
+      "bir\u017e.",
+      "liep.",
+      "rugp.",
+      "rugs.",
+      "spal.",
+      "lapkr.",
+      "gruod."
+    ],
+    "STANDALONEMONTH": [
+      "sausis",
+      "vasaris",
+      "kovas",
+      "balandis",
+      "gegu\u017e\u0117",
+      "bir\u017eelis",
+      "liepa",
+      "rugpj\u016btis",
+      "rugs\u0117jis",
+      "spalis",
+      "lapkritis",
+      "gruodis"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "y 'm'. MMMM d 'd'., EEEE",
+    "longDate": "y 'm'. MMMM d 'd'.",
+    "medium": "y-MM-dd HH:mm:ss",
+    "mediumDate": "y-MM-dd",
+    "mediumTime": "HH:mm:ss",
+    "short": "y-MM-dd HH:mm",
+    "shortDate": "y-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "lt-lt",
+  "localeID": "lt_LT",
+  "pluralCat": function(n, opt_precision) {  var vf = getVF(n, opt_precision);  if (n % 10 == 1 && (n % 100 < 11 || n % 100 > 19)) {    return PLURAL_CATEGORY.ONE;  }  if (n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19)) {    return PLURAL_CATEGORY.FEW;  }  if (vf.f != 0) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lt.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lt.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lt.js
new file mode 100644
index 0000000..24cb315
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lt.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "prie\u0161piet",
+      "popiet"
+    ],
+    "DAY": [
+      "sekmadienis",
+      "pirmadienis",
+      "antradienis",
+      "tre\u010diadienis",
+      "ketvirtadienis",
+      "penktadienis",
+      "\u0161e\u0161tadienis"
+    ],
+    "ERANAMES": [
+      "prie\u0161 Krist\u0173",
+      "po Kristaus"
+    ],
+    "ERAS": [
+      "pr. Kr.",
+      "po Kr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "sausio",
+      "vasario",
+      "kovo",
+      "baland\u017eio",
+      "gegu\u017e\u0117s",
+      "bir\u017eelio",
+      "liepos",
+      "rugpj\u016b\u010dio",
+      "rugs\u0117jo",
+      "spalio",
+      "lapkri\u010dio",
+      "gruod\u017eio"
+    ],
+    "SHORTDAY": [
+      "sk",
+      "pr",
+      "an",
+      "tr",
+      "kt",
+      "pn",
+      "\u0161t"
+    ],
+    "SHORTMONTH": [
+      "saus.",
+      "vas.",
+      "kov.",
+      "bal.",
+      "geg.",
+      "bir\u017e.",
+      "liep.",
+      "rugp.",
+      "rugs.",
+      "spal.",
+      "lapkr.",
+      "gruod."
+    ],
+    "STANDALONEMONTH": [
+      "sausis",
+      "vasaris",
+      "kovas",
+      "balandis",
+      "gegu\u017e\u0117",
+      "bir\u017eelis",
+      "liepa",
+      "rugpj\u016btis",
+      "rugs\u0117jis",
+      "spalis",
+      "lapkritis",
+      "gruodis"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "y 'm'. MMMM d 'd'., EEEE",
+    "longDate": "y 'm'. MMMM d 'd'.",
+    "medium": "y-MM-dd HH:mm:ss",
+    "mediumDate": "y-MM-dd",
+    "mediumTime": "HH:mm:ss",
+    "short": "y-MM-dd HH:mm",
+    "shortDate": "y-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "lt",
+  "localeID": "lt",
+  "pluralCat": function(n, opt_precision) {  var vf = getVF(n, opt_precision);  if (n % 10 == 1 && (n % 100 < 11 || n % 100 > 19)) {    return PLURAL_CATEGORY.ONE;  }  if (n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19)) {    return PLURAL_CATEGORY.FEW;  }  if (vf.f != 0) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lu-cd.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lu-cd.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lu-cd.js
new file mode 100644
index 0000000..a274e9d
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lu-cd.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "Dinda",
+      "Dilolo"
+    ],
+    "DAY": [
+      "Lumingu",
+      "Nkodya",
+      "Nd\u00e0ay\u00e0",
+      "Ndang\u00f9",
+      "Nj\u00f2wa",
+      "Ng\u00f2vya",
+      "Lubingu"
+    ],
+    "ERANAMES": [
+      "Kumpala kwa Yezu Kli",
+      "Kunyima kwa Yezu Kli"
+    ],
+    "ERAS": [
+      "kmp. Y.K.",
+      "kny. Y. K."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Ciongo",
+      "L\u00f9ishi",
+      "Lus\u00f2lo",
+      "M\u00f9uy\u00e0",
+      "Lum\u00f9ng\u00f9l\u00f9",
+      "Lufuimi",
+      "Kab\u00e0l\u00e0sh\u00ecp\u00f9",
+      "L\u00f9sh\u00eck\u00e0",
+      "Lutongolo",
+      "Lung\u00f9di",
+      "Kasw\u00e8k\u00e8s\u00e8",
+      "Cisw\u00e0"
+    ],
+    "SHORTDAY": [
+      "Lum",
+      "Nko",
+      "Ndy",
+      "Ndg",
+      "Njw",
+      "Ngv",
+      "Lub"
+    ],
+    "SHORTMONTH": [
+      "Cio",
+      "Lui",
+      "Lus",
+      "Muu",
+      "Lum",
+      "Luf",
+      "Kab",
+      "Lush",
+      "Lut",
+      "Lun",
+      "Kas",
+      "Cis"
+    ],
+    "STANDALONEMONTH": [
+      "Ciongo",
+      "L\u00f9ishi",
+      "Lus\u00f2lo",
+      "M\u00f9uy\u00e0",
+      "Lum\u00f9ng\u00f9l\u00f9",
+      "Lufuimi",
+      "Kab\u00e0l\u00e0sh\u00ecp\u00f9",
+      "L\u00f9sh\u00eck\u00e0",
+      "Lutongolo",
+      "Lung\u00f9di",
+      "Kasw\u00e8k\u00e8s\u00e8",
+      "Cisw\u00e0"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FrCD",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a4"
+      }
+    ]
+  },
+  "id": "lu-cd",
+  "localeID": "lu_CD",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lu.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lu.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lu.js
new file mode 100644
index 0000000..efbfd6a
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lu.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "Dinda",
+      "Dilolo"
+    ],
+    "DAY": [
+      "Lumingu",
+      "Nkodya",
+      "Nd\u00e0ay\u00e0",
+      "Ndang\u00f9",
+      "Nj\u00f2wa",
+      "Ng\u00f2vya",
+      "Lubingu"
+    ],
+    "ERANAMES": [
+      "Kumpala kwa Yezu Kli",
+      "Kunyima kwa Yezu Kli"
+    ],
+    "ERAS": [
+      "kmp. Y.K.",
+      "kny. Y. K."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Ciongo",
+      "L\u00f9ishi",
+      "Lus\u00f2lo",
+      "M\u00f9uy\u00e0",
+      "Lum\u00f9ng\u00f9l\u00f9",
+      "Lufuimi",
+      "Kab\u00e0l\u00e0sh\u00ecp\u00f9",
+      "L\u00f9sh\u00eck\u00e0",
+      "Lutongolo",
+      "Lung\u00f9di",
+      "Kasw\u00e8k\u00e8s\u00e8",
+      "Cisw\u00e0"
+    ],
+    "SHORTDAY": [
+      "Lum",
+      "Nko",
+      "Ndy",
+      "Ndg",
+      "Njw",
+      "Ngv",
+      "Lub"
+    ],
+    "SHORTMONTH": [
+      "Cio",
+      "Lui",
+      "Lus",
+      "Muu",
+      "Lum",
+      "Luf",
+      "Kab",
+      "Lush",
+      "Lut",
+      "Lun",
+      "Kas",
+      "Cis"
+    ],
+    "STANDALONEMONTH": [
+      "Ciongo",
+      "L\u00f9ishi",
+      "Lus\u00f2lo",
+      "M\u00f9uy\u00e0",
+      "Lum\u00f9ng\u00f9l\u00f9",
+      "Lufuimi",
+      "Kab\u00e0l\u00e0sh\u00ecp\u00f9",
+      "L\u00f9sh\u00eck\u00e0",
+      "Lutongolo",
+      "Lung\u00f9di",
+      "Kasw\u00e8k\u00e8s\u00e8",
+      "Cisw\u00e0"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FrCD",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a4"
+      }
+    ]
+  },
+  "id": "lu",
+  "localeID": "lu",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_luo-ke.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_luo-ke.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_luo-ke.js
new file mode 100644
index 0000000..2bb386f
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_luo-ke.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "OD",
+      "OT"
+    ],
+    "DAY": [
+      "Jumapil",
+      "Wuok Tich",
+      "Tich Ariyo",
+      "Tich Adek",
+      "Tich Ang\u2019wen",
+      "Tich Abich",
+      "Ngeso"
+    ],
+    "ERANAMES": [
+      "Kapok Kristo obiro",
+      "Ka Kristo osebiro"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Dwe mar Achiel",
+      "Dwe mar Ariyo",
+      "Dwe mar Adek",
+      "Dwe mar Ang\u2019wen",
+      "Dwe mar Abich",
+      "Dwe mar Auchiel",
+      "Dwe mar Abiriyo",
+      "Dwe mar Aboro",
+      "Dwe mar Ochiko",
+      "Dwe mar Apar",
+      "Dwe mar gi achiel",
+      "Dwe mar Apar gi ariyo"
+    ],
+    "SHORTDAY": [
+      "JMP",
+      "WUT",
+      "TAR",
+      "TAD",
+      "TAN",
+      "TAB",
+      "NGS"
+    ],
+    "SHORTMONTH": [
+      "DAC",
+      "DAR",
+      "DAD",
+      "DAN",
+      "DAH",
+      "DAU",
+      "DAO",
+      "DAB",
+      "DOC",
+      "DAP",
+      "DGI",
+      "DAG"
+    ],
+    "STANDALONEMONTH": [
+      "Dwe mar Achiel",
+      "Dwe mar Ariyo",
+      "Dwe mar Adek",
+      "Dwe mar Ang\u2019wen",
+      "Dwe mar Abich",
+      "Dwe mar Auchiel",
+      "Dwe mar Abiriyo",
+      "Dwe mar Aboro",
+      "Dwe mar Ochiko",
+      "Dwe mar Apar",
+      "Dwe mar gi achiel",
+      "Dwe mar Apar gi ariyo"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Ksh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a4"
+      }
+    ]
+  },
+  "id": "luo-ke",
+  "localeID": "luo_KE",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_luo.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_luo.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_luo.js
new file mode 100644
index 0000000..8ca950b
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_luo.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "OD",
+      "OT"
+    ],
+    "DAY": [
+      "Jumapil",
+      "Wuok Tich",
+      "Tich Ariyo",
+      "Tich Adek",
+      "Tich Ang\u2019wen",
+      "Tich Abich",
+      "Ngeso"
+    ],
+    "ERANAMES": [
+      "Kapok Kristo obiro",
+      "Ka Kristo osebiro"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Dwe mar Achiel",
+      "Dwe mar Ariyo",
+      "Dwe mar Adek",
+      "Dwe mar Ang\u2019wen",
+      "Dwe mar Abich",
+      "Dwe mar Auchiel",
+      "Dwe mar Abiriyo",
+      "Dwe mar Aboro",
+      "Dwe mar Ochiko",
+      "Dwe mar Apar",
+      "Dwe mar gi achiel",
+      "Dwe mar Apar gi ariyo"
+    ],
+    "SHORTDAY": [
+      "JMP",
+      "WUT",
+      "TAR",
+      "TAD",
+      "TAN",
+      "TAB",
+      "NGS"
+    ],
+    "SHORTMONTH": [
+      "DAC",
+      "DAR",
+      "DAD",
+      "DAN",
+      "DAH",
+      "DAU",
+      "DAO",
+      "DAB",
+      "DOC",
+      "DAP",
+      "DGI",
+      "DAG"
+    ],
+    "STANDALONEMONTH": [
+      "Dwe mar Achiel",
+      "Dwe mar Ariyo",
+      "Dwe mar Adek",
+      "Dwe mar Ang\u2019wen",
+      "Dwe mar Abich",
+      "Dwe mar Auchiel",
+      "Dwe mar Abiriyo",
+      "Dwe mar Aboro",
+      "Dwe mar Ochiko",
+      "Dwe mar Apar",
+      "Dwe mar gi achiel",
+      "Dwe mar Apar gi ariyo"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Ksh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a4"
+      }
+    ]
+  },
+  "id": "luo",
+  "localeID": "luo",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_luy-ke.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_luy-ke.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_luy-ke.js
new file mode 100644
index 0000000..7747423
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_luy-ke.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a.m.",
+      "p.m."
+    ],
+    "DAY": [
+      "Jumapiri",
+      "Jumatatu",
+      "Jumanne",
+      "Jumatano",
+      "Murwa wa Kanne",
+      "Murwa wa Katano",
+      "Jumamosi"
+    ],
+    "ERANAMES": [
+      "Imberi ya Kuuza Kwa",
+      "Muhiga Kuvita Kuuza"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Januari",
+      "Februari",
+      "Machi",
+      "Aprili",
+      "Mei",
+      "Juni",
+      "Julai",
+      "Agosti",
+      "Septemba",
+      "Oktoba",
+      "Novemba",
+      "Desemba"
+    ],
+    "SHORTDAY": [
+      "J2",
+      "J3",
+      "J4",
+      "J5",
+      "Al",
+      "Ij",
+      "J1"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "Mei",
+      "Jun",
+      "Jul",
+      "Ago",
+      "Sep",
+      "Okt",
+      "Nov",
+      "Des"
+    ],
+    "STANDALONEMONTH": [
+      "Januari",
+      "Februari",
+      "Machi",
+      "Aprili",
+      "Mei",
+      "Juni",
+      "Julai",
+      "Agosti",
+      "Septemba",
+      "Oktoba",
+      "Novemba",
+      "Desemba"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Ksh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4-\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "luy-ke",
+  "localeID": "luy_KE",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_luy.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_luy.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_luy.js
new file mode 100644
index 0000000..23a74ab
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_luy.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a.m.",
+      "p.m."
+    ],
+    "DAY": [
+      "Jumapiri",
+      "Jumatatu",
+      "Jumanne",
+      "Jumatano",
+      "Murwa wa Kanne",
+      "Murwa wa Katano",
+      "Jumamosi"
+    ],
+    "ERANAMES": [
+      "Imberi ya Kuuza Kwa",
+      "Muhiga Kuvita Kuuza"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Januari",
+      "Februari",
+      "Machi",
+      "Aprili",
+      "Mei",
+      "Juni",
+      "Julai",
+      "Agosti",
+      "Septemba",
+      "Oktoba",
+      "Novemba",
+      "Desemba"
+    ],
+    "SHORTDAY": [
+      "J2",
+      "J3",
+      "J4",
+      "J5",
+      "Al",
+      "Ij",
+      "J1"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "Mei",
+      "Jun",
+      "Jul",
+      "Ago",
+      "Sep",
+      "Okt",
+      "Nov",
+      "Des"
+    ],
+    "STANDALONEMONTH": [
+      "Januari",
+      "Februari",
+      "Machi",
+      "Aprili",
+      "Mei",
+      "Juni",
+      "Julai",
+      "Agosti",
+      "Septemba",
+      "Oktoba",
+      "Novemba",
+      "Desemba"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Ksh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4-\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "luy",
+  "localeID": "luy",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lv-lv.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lv-lv.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lv-lv.js
new file mode 100644
index 0000000..55d42b4
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lv-lv.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "priek\u0161pusdien\u0101",
+      "p\u0113cpusdien\u0101"
+    ],
+    "DAY": [
+      "sv\u0113tdiena",
+      "pirmdiena",
+      "otrdiena",
+      "tre\u0161diena",
+      "ceturtdiena",
+      "piektdiena",
+      "sestdiena"
+    ],
+    "ERANAMES": [
+      "pirms m\u016bsu \u0113ras",
+      "m\u016bsu \u0113r\u0101"
+    ],
+    "ERAS": [
+      "p.m.\u0113.",
+      "m.\u0113."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janv\u0101ris",
+      "febru\u0101ris",
+      "marts",
+      "apr\u012blis",
+      "maijs",
+      "j\u016bnijs",
+      "j\u016blijs",
+      "augusts",
+      "septembris",
+      "oktobris",
+      "novembris",
+      "decembris"
+    ],
+    "SHORTDAY": [
+      "Sv",
+      "Pr",
+      "Ot",
+      "Tr",
+      "Ce",
+      "Pk",
+      "Se"
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "febr.",
+      "marts",
+      "apr.",
+      "maijs",
+      "j\u016bn.",
+      "j\u016bl.",
+      "aug.",
+      "sept.",
+      "okt.",
+      "nov.",
+      "dec."
+    ],
+    "STANDALONEMONTH": [
+      "Janv\u0101ris",
+      "Febru\u0101ris",
+      "Marts",
+      "Apr\u012blis",
+      "Maijs",
+      "J\u016bnijs",
+      "J\u016blijs",
+      "Augusts",
+      "Septembris",
+      "Oktobris",
+      "Novembris",
+      "Decembris"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, y. 'gada' d. MMMM",
+    "longDate": "y. 'gada' d. MMMM",
+    "medium": "y. 'gada' d. MMM HH:mm:ss",
+    "mediumDate": "y. 'gada' d. MMM",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.yy HH:mm",
+    "shortDate": "dd.MM.yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 0,
+        "lgSize": 0,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "lv-lv",
+  "localeID": "lv_LV",
+  "pluralCat": function(n, opt_precision) {  var vf = getVF(n, opt_precision);  if (n % 10 == 0 || n % 100 >= 11 && n % 100 <= 19 || vf.v == 2 && vf.f % 100 >= 11 && vf.f % 100 <= 19) {    return PLURAL_CATEGORY.ZERO;  }  if (n % 10 == 1 && n % 100 != 11 || vf.v == 2 && vf.f % 10 == 1 && vf.f % 100 != 11 || vf.v != 2 && vf.f % 10 == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lv.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lv.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lv.js
new file mode 100644
index 0000000..5394baf
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_lv.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "priek\u0161pusdien\u0101",
+      "p\u0113cpusdien\u0101"
+    ],
+    "DAY": [
+      "sv\u0113tdiena",
+      "pirmdiena",
+      "otrdiena",
+      "tre\u0161diena",
+      "ceturtdiena",
+      "piektdiena",
+      "sestdiena"
+    ],
+    "ERANAMES": [
+      "pirms m\u016bsu \u0113ras",
+      "m\u016bsu \u0113r\u0101"
+    ],
+    "ERAS": [
+      "p.m.\u0113.",
+      "m.\u0113."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janv\u0101ris",
+      "febru\u0101ris",
+      "marts",
+      "apr\u012blis",
+      "maijs",
+      "j\u016bnijs",
+      "j\u016blijs",
+      "augusts",
+      "septembris",
+      "oktobris",
+      "novembris",
+      "decembris"
+    ],
+    "SHORTDAY": [
+      "Sv",
+      "Pr",
+      "Ot",
+      "Tr",
+      "Ce",
+      "Pk",
+      "Se"
+    ],
+    "SHORTMONTH": [
+      "janv.",
+      "febr.",
+      "marts",
+      "apr.",
+      "maijs",
+      "j\u016bn.",
+      "j\u016bl.",
+      "aug.",
+      "sept.",
+      "okt.",
+      "nov.",
+      "dec."
+    ],
+    "STANDALONEMONTH": [
+      "Janv\u0101ris",
+      "Febru\u0101ris",
+      "Marts",
+      "Apr\u012blis",
+      "Maijs",
+      "J\u016bnijs",
+      "J\u016blijs",
+      "Augusts",
+      "Septembris",
+      "Oktobris",
+      "Novembris",
+      "Decembris"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, y. 'gada' d. MMMM",
+    "longDate": "y. 'gada' d. MMMM",
+    "medium": "y. 'gada' d. MMM HH:mm:ss",
+    "mediumDate": "y. 'gada' d. MMM",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.yy HH:mm",
+    "shortDate": "dd.MM.yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 0,
+        "lgSize": 0,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "lv",
+  "localeID": "lv",
+  "pluralCat": function(n, opt_precision) {  var vf = getVF(n, opt_precision);  if (n % 10 == 0 || n % 100 >= 11 && n % 100 <= 19 || vf.v == 2 && vf.f % 100 >= 11 && vf.f % 100 <= 19) {    return PLURAL_CATEGORY.ZERO;  }  if (n % 10 == 1 && n % 100 != 11 || vf.v == 2 && vf.f % 10 == 1 && vf.f % 100 != 11 || vf.v != 2 && vf.f % 10 == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mas-ke.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mas-ke.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mas-ke.js
new file mode 100644
index 0000000..4b5be41
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mas-ke.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0190nkak\u025bny\u00e1",
+      "\u0190nd\u00e1m\u00e2"
+    ],
+    "DAY": [
+      "Jumap\u00edl\u00ed",
+      "Jumat\u00e1tu",
+      "Jumane",
+      "Jumat\u00e1n\u0254",
+      "Ala\u00e1misi",
+      "Jum\u00e1a",
+      "Jumam\u00f3si"
+    ],
+    "ERANAMES": [
+      "Me\u00edn\u014d Y\u025b\u0301s\u0289",
+      "E\u00edn\u014d Y\u025b\u0301s\u0289"
+    ],
+    "ERAS": [
+      "MY",
+      "EY"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Oladal\u0289\u0301",
+      "Ar\u00e1t",
+      "\u0186\u025bn\u0268\u0301\u0254\u0268\u014b\u0254k",
+      "Olodoy\u00ed\u00f3r\u00ed\u00ea ink\u00f3k\u00fa\u00e2",
+      "Oloil\u00e9p\u016bny\u012b\u0113 ink\u00f3k\u00fa\u00e2",
+      "K\u00faj\u00fa\u0254r\u0254k",
+      "M\u00f3rus\u00e1sin",
+      "\u0186l\u0254\u0301\u0268\u0301b\u0254\u0301r\u00e1r\u025b",
+      "K\u00fash\u00een",
+      "Olg\u00edsan",
+      "P\u0289sh\u0289\u0301ka",
+      "Nt\u0289\u0301\u014b\u0289\u0301s"
+    ],
+    "SHORTDAY": [
+      "Jpi",
+      "Jtt",
+      "Jnn",
+      "Jtn",
+      "Alh",
+      "Iju",
+      "Jmo"
+    ],
+    "SHORTMONTH": [
+      "Dal",
+      "Ar\u00e1",
+      "\u0186\u025bn",
+      "Doy",
+      "L\u00e9p",
+      "Rok",
+      "S\u00e1s",
+      "B\u0254\u0301r",
+      "K\u00fas",
+      "G\u00eds",
+      "Sh\u0289\u0301",
+      "Nt\u0289\u0301"
+    ],
+    "STANDALONEMONTH": [
+      "Oladal\u0289\u0301",
+      "Ar\u00e1t",
+      "\u0186\u025bn\u0268\u0301\u0254\u0268\u014b\u0254k",
+      "Olodoy\u00ed\u00f3r\u00ed\u00ea ink\u00f3k\u00fa\u00e2",
+      "Oloil\u00e9p\u016bny\u012b\u0113 ink\u00f3k\u00fa\u00e2",
+      "K\u00faj\u00fa\u0254r\u0254k",
+      "M\u00f3rus\u00e1sin",
+      "\u0186l\u0254\u0301\u0268\u0301b\u0254\u0301r\u00e1r\u025b",
+      "K\u00fash\u00een",
+      "Olg\u00edsan",
+      "P\u0289sh\u0289\u0301ka",
+      "Nt\u0289\u0301\u014b\u0289\u0301s"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Ksh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "mas-ke",
+  "localeID": "mas_KE",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mas-tz.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mas-tz.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mas-tz.js
new file mode 100644
index 0000000..bf88154
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mas-tz.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0190nkak\u025bny\u00e1",
+      "\u0190nd\u00e1m\u00e2"
+    ],
+    "DAY": [
+      "Jumap\u00edl\u00ed",
+      "Jumat\u00e1tu",
+      "Jumane",
+      "Jumat\u00e1n\u0254",
+      "Ala\u00e1misi",
+      "Jum\u00e1a",
+      "Jumam\u00f3si"
+    ],
+    "ERANAMES": [
+      "Me\u00edn\u014d Y\u025b\u0301s\u0289",
+      "E\u00edn\u014d Y\u025b\u0301s\u0289"
+    ],
+    "ERAS": [
+      "MY",
+      "EY"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Oladal\u0289\u0301",
+      "Ar\u00e1t",
+      "\u0186\u025bn\u0268\u0301\u0254\u0268\u014b\u0254k",
+      "Olodoy\u00ed\u00f3r\u00ed\u00ea ink\u00f3k\u00fa\u00e2",
+      "Oloil\u00e9p\u016bny\u012b\u0113 ink\u00f3k\u00fa\u00e2",
+      "K\u00faj\u00fa\u0254r\u0254k",
+      "M\u00f3rus\u00e1sin",
+      "\u0186l\u0254\u0301\u0268\u0301b\u0254\u0301r\u00e1r\u025b",
+      "K\u00fash\u00een",
+      "Olg\u00edsan",
+      "P\u0289sh\u0289\u0301ka",
+      "Nt\u0289\u0301\u014b\u0289\u0301s"
+    ],
+    "SHORTDAY": [
+      "Jpi",
+      "Jtt",
+      "Jnn",
+      "Jtn",
+      "Alh",
+      "Iju",
+      "Jmo"
+    ],
+    "SHORTMONTH": [
+      "Dal",
+      "Ar\u00e1",
+      "\u0186\u025bn",
+      "Doy",
+      "L\u00e9p",
+      "Rok",
+      "S\u00e1s",
+      "B\u0254\u0301r",
+      "K\u00fas",
+      "G\u00eds",
+      "Sh\u0289\u0301",
+      "Nt\u0289\u0301"
+    ],
+    "STANDALONEMONTH": [
+      "Oladal\u0289\u0301",
+      "Ar\u00e1t",
+      "\u0186\u025bn\u0268\u0301\u0254\u0268\u014b\u0254k",
+      "Olodoy\u00ed\u00f3r\u00ed\u00ea ink\u00f3k\u00fa\u00e2",
+      "Oloil\u00e9p\u016bny\u012b\u0113 ink\u00f3k\u00fa\u00e2",
+      "K\u00faj\u00fa\u0254r\u0254k",
+      "M\u00f3rus\u00e1sin",
+      "\u0186l\u0254\u0301\u0268\u0301b\u0254\u0301r\u00e1r\u025b",
+      "K\u00fash\u00een",
+      "Olg\u00edsan",
+      "P\u0289sh\u0289\u0301ka",
+      "Nt\u0289\u0301\u014b\u0289\u0301s"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "TSh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "mas-tz",
+  "localeID": "mas_TZ",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mas.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mas.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mas.js
new file mode 100644
index 0000000..a1557f5
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_mas.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0190nkak\u025bny\u00e1",
+      "\u0190nd\u00e1m\u00e2"
+    ],
+    "DAY": [
+      "Jumap\u00edl\u00ed",
+      "Jumat\u00e1tu",
+      "Jumane",
+      "Jumat\u00e1n\u0254",
+      "Ala\u00e1misi",
+      "Jum\u00e1a",
+      "Jumam\u00f3si"
+    ],
+    "ERANAMES": [
+      "Me\u00edn\u014d Y\u025b\u0301s\u0289",
+      "E\u00edn\u014d Y\u025b\u0301s\u0289"
+    ],
+    "ERAS": [
+      "MY",
+      "EY"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Oladal\u0289\u0301",
+      "Ar\u00e1t",
+      "\u0186\u025bn\u0268\u0301\u0254\u0268\u014b\u0254k",
+      "Olodoy\u00ed\u00f3r\u00ed\u00ea ink\u00f3k\u00fa\u00e2",
+      "Oloil\u00e9p\u016bny\u012b\u0113 ink\u00f3k\u00fa\u00e2",
+      "K\u00faj\u00fa\u0254r\u0254k",
+      "M\u00f3rus\u00e1sin",
+      "\u0186l\u0254\u0301\u0268\u0301b\u0254\u0301r\u00e1r\u025b",
+      "K\u00fash\u00een",
+      "Olg\u00edsan",
+      "P\u0289sh\u0289\u0301ka",
+      "Nt\u0289\u0301\u014b\u0289\u0301s"
+    ],
+    "SHORTDAY": [
+      "Jpi",
+      "Jtt",
+      "Jnn",
+      "Jtn",
+      "Alh",
+      "Iju",
+      "Jmo"
+    ],
+    "SHORTMONTH": [
+      "Dal",
+      "Ar\u00e1",
+      "\u0186\u025bn",
+      "Doy",
+      "L\u00e9p",
+      "Rok",
+      "S\u00e1s",
+      "B\u0254\u0301r",
+      "K\u00fas",
+      "G\u00eds",
+      "Sh\u0289\u0301",
+      "Nt\u0289\u0301"
+    ],
+    "STANDALONEMONTH": [
+      "Oladal\u0289\u0301",
+      "Ar\u00e1t",
+      "\u0186\u025bn\u0268\u0301\u0254\u0268\u014b\u0254k",
+      "Olodoy\u00ed\u00f3r\u00ed\u00ea ink\u00f3k\u00fa\u00e2",
+      "Oloil\u00e9p\u016bny\u012b\u0113 ink\u00f3k\u00fa\u00e2",
+      "K\u00faj\u00fa\u0254r\u0254k",
+      "M\u00f3rus\u00e1sin",
+      "\u0186l\u0254\u0301\u0268\u0301b\u0254\u0301r\u00e1r\u025b",
+      "K\u00fash\u00een",
+      "Olg\u00edsan",
+      "P\u0289sh\u0289\u0301ka",
+      "Nt\u0289\u0301\u014b\u0289\u0301s"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Ksh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "mas",
+  "localeID": "mas",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);



[09/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_haw.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_haw.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_haw.js
new file mode 100644
index 0000000..c1cd77e
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_haw.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "L\u0101pule",
+      "Po\u02bbakahi",
+      "Po\u02bbalua",
+      "Po\u02bbakolu",
+      "Po\u02bbah\u0101",
+      "Po\u02bbalima",
+      "Po\u02bbaono"
+    ],
+    "ERANAMES": [
+      "BCE",
+      "CE"
+    ],
+    "ERAS": [
+      "BCE",
+      "CE"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "Ianuali",
+      "Pepeluali",
+      "Malaki",
+      "\u02bbApelila",
+      "Mei",
+      "Iune",
+      "Iulai",
+      "\u02bbAukake",
+      "Kepakemapa",
+      "\u02bbOkakopa",
+      "Nowemapa",
+      "Kekemapa"
+    ],
+    "SHORTDAY": [
+      "LP",
+      "P1",
+      "P2",
+      "P3",
+      "P4",
+      "P5",
+      "P6"
+    ],
+    "SHORTMONTH": [
+      "Ian.",
+      "Pep.",
+      "Mal.",
+      "\u02bbAp.",
+      "Mei",
+      "Iun.",
+      "Iul.",
+      "\u02bbAu.",
+      "Kep.",
+      "\u02bbOk.",
+      "Now.",
+      "Kek."
+    ],
+    "STANDALONEMONTH": [
+      "Ianuali",
+      "Pepeluali",
+      "Malaki",
+      "\u02bbApelila",
+      "Mei",
+      "Iune",
+      "Iulai",
+      "\u02bbAukake",
+      "Kepakemapa",
+      "\u02bbOkakopa",
+      "Nowemapa",
+      "Kekemapa"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/M/yy h:mm a",
+    "shortDate": "d/M/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "haw",
+  "localeID": "haw",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_he-il.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_he-il.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_he-il.js
new file mode 100644
index 0000000..df764ad
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_he-il.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u05dc\u05e4\u05e0\u05d4\u05f4\u05e6",
+      "\u05d0\u05d7\u05d4\u05f4\u05e6"
+    ],
+    "DAY": [
+      "\u05d9\u05d5\u05dd \u05e8\u05d0\u05e9\u05d5\u05df",
+      "\u05d9\u05d5\u05dd \u05e9\u05e0\u05d9",
+      "\u05d9\u05d5\u05dd \u05e9\u05dc\u05d9\u05e9\u05d9",
+      "\u05d9\u05d5\u05dd \u05e8\u05d1\u05d9\u05e2\u05d9",
+      "\u05d9\u05d5\u05dd \u05d7\u05de\u05d9\u05e9\u05d9",
+      "\u05d9\u05d5\u05dd \u05e9\u05d9\u05e9\u05d9",
+      "\u05d9\u05d5\u05dd \u05e9\u05d1\u05ea"
+    ],
+    "ERANAMES": [
+      "\u05dc\u05e4\u05e0\u05d9 \u05d4\u05e1\u05e4\u05d9\u05e8\u05d4",
+      "\u05dc\u05e1\u05e4\u05d9\u05e8\u05d4"
+    ],
+    "ERAS": [
+      "\u05dc\u05e4\u05e0\u05d4\u05f4\u05e1",
+      "\u05dc\u05e1\u05e4\u05d9\u05e8\u05d4"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u05d9\u05e0\u05d5\u05d0\u05e8",
+      "\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8",
+      "\u05de\u05e8\u05e5",
+      "\u05d0\u05e4\u05e8\u05d9\u05dc",
+      "\u05de\u05d0\u05d9",
+      "\u05d9\u05d5\u05e0\u05d9",
+      "\u05d9\u05d5\u05dc\u05d9",
+      "\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8",
+      "\u05e1\u05e4\u05d8\u05de\u05d1\u05e8",
+      "\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8",
+      "\u05e0\u05d5\u05d1\u05de\u05d1\u05e8",
+      "\u05d3\u05e6\u05de\u05d1\u05e8"
+    ],
+    "SHORTDAY": [
+      "\u05d9\u05d5\u05dd \u05d0\u05f3",
+      "\u05d9\u05d5\u05dd \u05d1\u05f3",
+      "\u05d9\u05d5\u05dd \u05d2\u05f3",
+      "\u05d9\u05d5\u05dd \u05d3\u05f3",
+      "\u05d9\u05d5\u05dd \u05d4\u05f3",
+      "\u05d9\u05d5\u05dd \u05d5\u05f3",
+      "\u05e9\u05d1\u05ea"
+    ],
+    "SHORTMONTH": [
+      "\u05d9\u05e0\u05d5\u05f3",
+      "\u05e4\u05d1\u05e8\u05f3",
+      "\u05de\u05e8\u05e5",
+      "\u05d0\u05e4\u05e8\u05f3",
+      "\u05de\u05d0\u05d9",
+      "\u05d9\u05d5\u05e0\u05d9",
+      "\u05d9\u05d5\u05dc\u05d9",
+      "\u05d0\u05d5\u05d2\u05f3",
+      "\u05e1\u05e4\u05d8\u05f3",
+      "\u05d0\u05d5\u05e7\u05f3",
+      "\u05e0\u05d5\u05d1\u05f3",
+      "\u05d3\u05e6\u05de\u05f3"
+    ],
+    "STANDALONEMONTH": [
+      "\u05d9\u05e0\u05d5\u05d0\u05e8",
+      "\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8",
+      "\u05de\u05e8\u05e5",
+      "\u05d0\u05e4\u05e8\u05d9\u05dc",
+      "\u05de\u05d0\u05d9",
+      "\u05d9\u05d5\u05e0\u05d9",
+      "\u05d9\u05d5\u05dc\u05d9",
+      "\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8",
+      "\u05e1\u05e4\u05d8\u05de\u05d1\u05e8",
+      "\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8",
+      "\u05e0\u05d5\u05d1\u05de\u05d1\u05e8",
+      "\u05d3\u05e6\u05de\u05d1\u05e8"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      5
+    ],
+    "fullDate": "EEEE, d \u05d1MMMM y",
+    "longDate": "d \u05d1MMMM y",
+    "medium": "d \u05d1MMM y H:mm:ss",
+    "mediumDate": "d \u05d1MMM y",
+    "mediumTime": "H:mm:ss",
+    "short": "d.M.y H:mm",
+    "shortDate": "d.M.y",
+    "shortTime": "H:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20aa",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "he-il",
+  "localeID": "he_IL",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  if (i == 2 && vf.v == 0) {    return PLURAL_CATEGORY.TWO;  }  if (vf.v == 0 && (n < 0 || n > 10) && n % 10 == 0) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_he.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_he.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_he.js
new file mode 100644
index 0000000..9978dc7
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_he.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u05dc\u05e4\u05e0\u05d4\u05f4\u05e6",
+      "\u05d0\u05d7\u05d4\u05f4\u05e6"
+    ],
+    "DAY": [
+      "\u05d9\u05d5\u05dd \u05e8\u05d0\u05e9\u05d5\u05df",
+      "\u05d9\u05d5\u05dd \u05e9\u05e0\u05d9",
+      "\u05d9\u05d5\u05dd \u05e9\u05dc\u05d9\u05e9\u05d9",
+      "\u05d9\u05d5\u05dd \u05e8\u05d1\u05d9\u05e2\u05d9",
+      "\u05d9\u05d5\u05dd \u05d7\u05de\u05d9\u05e9\u05d9",
+      "\u05d9\u05d5\u05dd \u05e9\u05d9\u05e9\u05d9",
+      "\u05d9\u05d5\u05dd \u05e9\u05d1\u05ea"
+    ],
+    "ERANAMES": [
+      "\u05dc\u05e4\u05e0\u05d9 \u05d4\u05e1\u05e4\u05d9\u05e8\u05d4",
+      "\u05dc\u05e1\u05e4\u05d9\u05e8\u05d4"
+    ],
+    "ERAS": [
+      "\u05dc\u05e4\u05e0\u05d4\u05f4\u05e1",
+      "\u05dc\u05e1\u05e4\u05d9\u05e8\u05d4"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u05d9\u05e0\u05d5\u05d0\u05e8",
+      "\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8",
+      "\u05de\u05e8\u05e5",
+      "\u05d0\u05e4\u05e8\u05d9\u05dc",
+      "\u05de\u05d0\u05d9",
+      "\u05d9\u05d5\u05e0\u05d9",
+      "\u05d9\u05d5\u05dc\u05d9",
+      "\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8",
+      "\u05e1\u05e4\u05d8\u05de\u05d1\u05e8",
+      "\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8",
+      "\u05e0\u05d5\u05d1\u05de\u05d1\u05e8",
+      "\u05d3\u05e6\u05de\u05d1\u05e8"
+    ],
+    "SHORTDAY": [
+      "\u05d9\u05d5\u05dd \u05d0\u05f3",
+      "\u05d9\u05d5\u05dd \u05d1\u05f3",
+      "\u05d9\u05d5\u05dd \u05d2\u05f3",
+      "\u05d9\u05d5\u05dd \u05d3\u05f3",
+      "\u05d9\u05d5\u05dd \u05d4\u05f3",
+      "\u05d9\u05d5\u05dd \u05d5\u05f3",
+      "\u05e9\u05d1\u05ea"
+    ],
+    "SHORTMONTH": [
+      "\u05d9\u05e0\u05d5\u05f3",
+      "\u05e4\u05d1\u05e8\u05f3",
+      "\u05de\u05e8\u05e5",
+      "\u05d0\u05e4\u05e8\u05f3",
+      "\u05de\u05d0\u05d9",
+      "\u05d9\u05d5\u05e0\u05d9",
+      "\u05d9\u05d5\u05dc\u05d9",
+      "\u05d0\u05d5\u05d2\u05f3",
+      "\u05e1\u05e4\u05d8\u05f3",
+      "\u05d0\u05d5\u05e7\u05f3",
+      "\u05e0\u05d5\u05d1\u05f3",
+      "\u05d3\u05e6\u05de\u05f3"
+    ],
+    "STANDALONEMONTH": [
+      "\u05d9\u05e0\u05d5\u05d0\u05e8",
+      "\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8",
+      "\u05de\u05e8\u05e5",
+      "\u05d0\u05e4\u05e8\u05d9\u05dc",
+      "\u05de\u05d0\u05d9",
+      "\u05d9\u05d5\u05e0\u05d9",
+      "\u05d9\u05d5\u05dc\u05d9",
+      "\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8",
+      "\u05e1\u05e4\u05d8\u05de\u05d1\u05e8",
+      "\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8",
+      "\u05e0\u05d5\u05d1\u05de\u05d1\u05e8",
+      "\u05d3\u05e6\u05de\u05d1\u05e8"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      5
+    ],
+    "fullDate": "EEEE, d \u05d1MMMM y",
+    "longDate": "d \u05d1MMMM y",
+    "medium": "d \u05d1MMM y H:mm:ss",
+    "mediumDate": "d \u05d1MMM y",
+    "mediumTime": "H:mm:ss",
+    "short": "d.M.y H:mm",
+    "shortDate": "d.M.y",
+    "shortTime": "H:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20aa",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "he",
+  "localeID": "he",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  if (i == 2 && vf.v == 0) {    return PLURAL_CATEGORY.TWO;  }  if (vf.v == 0 && (n < 0 || n > 10) && n % 10 == 0) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hi-in.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hi-in.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hi-in.js
new file mode 100644
index 0000000..f611700
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hi-in.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "am",
+      "pm"
+    ],
+    "DAY": [
+      "\u0930\u0935\u093f\u0935\u093e\u0930",
+      "\u0938\u094b\u092e\u0935\u093e\u0930",
+      "\u092e\u0902\u0917\u0932\u0935\u093e\u0930",
+      "\u092c\u0941\u0927\u0935\u093e\u0930",
+      "\u0917\u0941\u0930\u0941\u0935\u093e\u0930",
+      "\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930",
+      "\u0936\u0928\u093f\u0935\u093e\u0930"
+    ],
+    "ERANAMES": [
+      "\u0908\u0938\u093e-\u092a\u0942\u0930\u094d\u0935",
+      "\u0908\u0938\u0935\u0940 \u0938\u0928"
+    ],
+    "ERAS": [
+      "\u0908\u0938\u093e-\u092a\u0942\u0930\u094d\u0935",
+      "\u0908\u0938\u094d\u0935\u0940"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u091c\u0928\u0935\u0930\u0940",
+      "\u092b\u093c\u0930\u0935\u0930\u0940",
+      "\u092e\u093e\u0930\u094d\u091a",
+      "\u0905\u092a\u094d\u0930\u0948\u0932",
+      "\u092e\u0908",
+      "\u091c\u0942\u0928",
+      "\u091c\u0941\u0932\u093e\u0908",
+      "\u0905\u0917\u0938\u094d\u0924",
+      "\u0938\u093f\u0924\u0902\u092c\u0930",
+      "\u0905\u0915\u094d\u0924\u0942\u092c\u0930",
+      "\u0928\u0935\u0902\u092c\u0930",
+      "\u0926\u093f\u0938\u0902\u092c\u0930"
+    ],
+    "SHORTDAY": [
+      "\u0930\u0935\u093f",
+      "\u0938\u094b\u092e",
+      "\u092e\u0902\u0917\u0932",
+      "\u092c\u0941\u0927",
+      "\u0917\u0941\u0930\u0941",
+      "\u0936\u0941\u0915\u094d\u0930",
+      "\u0936\u0928\u093f"
+    ],
+    "SHORTMONTH": [
+      "\u091c\u0928\u0970",
+      "\u092b\u093c\u0930\u0970",
+      "\u092e\u093e\u0930\u094d\u091a",
+      "\u0905\u092a\u094d\u0930\u0948\u0932",
+      "\u092e\u0908",
+      "\u091c\u0942\u0928",
+      "\u091c\u0941\u0932\u0970",
+      "\u0905\u0917\u0970",
+      "\u0938\u093f\u0924\u0970",
+      "\u0905\u0915\u094d\u0924\u0942\u0970",
+      "\u0928\u0935\u0970",
+      "\u0926\u093f\u0938\u0970"
+    ],
+    "STANDALONEMONTH": [
+      "\u091c\u0928\u0935\u0930\u0940",
+      "\u092b\u093c\u0930\u0935\u0930\u0940",
+      "\u092e\u093e\u0930\u094d\u091a",
+      "\u0905\u092a\u094d\u0930\u0948\u0932",
+      "\u092e\u0908",
+      "\u091c\u0942\u0928",
+      "\u091c\u0941\u0932\u093e\u0908",
+      "\u0905\u0917\u0938\u094d\u0924",
+      "\u0938\u093f\u0924\u0902\u092c\u0930",
+      "\u0905\u0915\u094d\u0924\u0942\u092c\u0930",
+      "\u0928\u0935\u0902\u092c\u0930",
+      "\u0926\u093f\u0938\u0902\u092c\u0930"
+    ],
+    "WEEKENDRANGE": [
+      6,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "dd/MM/y h:mm:ss a",
+    "mediumDate": "dd/MM/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/M/yy h:mm a",
+    "shortDate": "d/M/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20b9",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "hi-in",
+  "localeID": "hi_IN",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hi.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hi.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hi.js
new file mode 100644
index 0000000..246678f
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hi.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "am",
+      "pm"
+    ],
+    "DAY": [
+      "\u0930\u0935\u093f\u0935\u093e\u0930",
+      "\u0938\u094b\u092e\u0935\u093e\u0930",
+      "\u092e\u0902\u0917\u0932\u0935\u093e\u0930",
+      "\u092c\u0941\u0927\u0935\u093e\u0930",
+      "\u0917\u0941\u0930\u0941\u0935\u093e\u0930",
+      "\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930",
+      "\u0936\u0928\u093f\u0935\u093e\u0930"
+    ],
+    "ERANAMES": [
+      "\u0908\u0938\u093e-\u092a\u0942\u0930\u094d\u0935",
+      "\u0908\u0938\u0935\u0940 \u0938\u0928"
+    ],
+    "ERAS": [
+      "\u0908\u0938\u093e-\u092a\u0942\u0930\u094d\u0935",
+      "\u0908\u0938\u094d\u0935\u0940"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u091c\u0928\u0935\u0930\u0940",
+      "\u092b\u093c\u0930\u0935\u0930\u0940",
+      "\u092e\u093e\u0930\u094d\u091a",
+      "\u0905\u092a\u094d\u0930\u0948\u0932",
+      "\u092e\u0908",
+      "\u091c\u0942\u0928",
+      "\u091c\u0941\u0932\u093e\u0908",
+      "\u0905\u0917\u0938\u094d\u0924",
+      "\u0938\u093f\u0924\u0902\u092c\u0930",
+      "\u0905\u0915\u094d\u0924\u0942\u092c\u0930",
+      "\u0928\u0935\u0902\u092c\u0930",
+      "\u0926\u093f\u0938\u0902\u092c\u0930"
+    ],
+    "SHORTDAY": [
+      "\u0930\u0935\u093f",
+      "\u0938\u094b\u092e",
+      "\u092e\u0902\u0917\u0932",
+      "\u092c\u0941\u0927",
+      "\u0917\u0941\u0930\u0941",
+      "\u0936\u0941\u0915\u094d\u0930",
+      "\u0936\u0928\u093f"
+    ],
+    "SHORTMONTH": [
+      "\u091c\u0928\u0970",
+      "\u092b\u093c\u0930\u0970",
+      "\u092e\u093e\u0930\u094d\u091a",
+      "\u0905\u092a\u094d\u0930\u0948\u0932",
+      "\u092e\u0908",
+      "\u091c\u0942\u0928",
+      "\u091c\u0941\u0932\u0970",
+      "\u0905\u0917\u0970",
+      "\u0938\u093f\u0924\u0970",
+      "\u0905\u0915\u094d\u0924\u0942\u0970",
+      "\u0928\u0935\u0970",
+      "\u0926\u093f\u0938\u0970"
+    ],
+    "STANDALONEMONTH": [
+      "\u091c\u0928\u0935\u0930\u0940",
+      "\u092b\u093c\u0930\u0935\u0930\u0940",
+      "\u092e\u093e\u0930\u094d\u091a",
+      "\u0905\u092a\u094d\u0930\u0948\u0932",
+      "\u092e\u0908",
+      "\u091c\u0942\u0928",
+      "\u091c\u0941\u0932\u093e\u0908",
+      "\u0905\u0917\u0938\u094d\u0924",
+      "\u0938\u093f\u0924\u0902\u092c\u0930",
+      "\u0905\u0915\u094d\u0924\u0942\u092c\u0930",
+      "\u0928\u0935\u0902\u092c\u0930",
+      "\u0926\u093f\u0938\u0902\u092c\u0930"
+    ],
+    "WEEKENDRANGE": [
+      6,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "dd/MM/y h:mm:ss a",
+    "mediumDate": "dd/MM/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/M/yy h:mm a",
+    "shortDate": "d/M/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20b9",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "hi",
+  "localeID": "hi",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hr-ba.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hr-ba.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hr-ba.js
new file mode 100644
index 0000000..a01047f
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hr-ba.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "nedjelja",
+      "ponedjeljak",
+      "utorak",
+      "srijeda",
+      "\u010detvrtak",
+      "petak",
+      "subota"
+    ],
+    "ERANAMES": [
+      "Prije Krista",
+      "Poslije Krista"
+    ],
+    "ERAS": [
+      "pr. Kr.",
+      "p. Kr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "sije\u010dnja",
+      "velja\u010de",
+      "o\u017eujka",
+      "travnja",
+      "svibnja",
+      "lipnja",
+      "srpnja",
+      "kolovoza",
+      "rujna",
+      "listopada",
+      "studenoga",
+      "prosinca"
+    ],
+    "SHORTDAY": [
+      "ned",
+      "pon",
+      "uto",
+      "sri",
+      "\u010det",
+      "pet",
+      "sub"
+    ],
+    "SHORTMONTH": [
+      "sij",
+      "velj",
+      "o\u017eu",
+      "tra",
+      "svi",
+      "lip",
+      "srp",
+      "kol",
+      "ruj",
+      "lis",
+      "stu",
+      "pro"
+    ],
+    "STANDALONEMONTH": [
+      "sije\u010danj",
+      "velja\u010da",
+      "o\u017eujak",
+      "travanj",
+      "svibanj",
+      "lipanj",
+      "srpanj",
+      "kolovoz",
+      "rujan",
+      "listopad",
+      "studeni",
+      "prosinac"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d. MMMM y.",
+    "longDate": "d. MMMM y.",
+    "medium": "d. MMM y. HH:mm:ss",
+    "mediumDate": "d. MMM y.",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.y. HH:mm",
+    "shortDate": "dd.MM.y.",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "KM",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "hr-ba",
+  "localeID": "hr_BA",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (vf.v == 0 && i % 10 == 1 && i % 100 != 11 || vf.f % 10 == 1 && vf.f % 100 != 11) {    return PLURAL_CATEGORY.ONE;  }  if (vf.v == 0 && i % 10 >= 2 && i % 10 <= 4 && (i % 100 < 12 || i % 100 > 14) || vf.f % 10 >= 2 && vf.f % 10 <= 4 && (vf.f % 100 < 12 || vf.f % 100 > 14)) {    return PLURAL_CATEGORY.FEW;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hr-hr.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hr-hr.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hr-hr.js
new file mode 100644
index 0000000..31f0059
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hr-hr.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "nedjelja",
+      "ponedjeljak",
+      "utorak",
+      "srijeda",
+      "\u010detvrtak",
+      "petak",
+      "subota"
+    ],
+    "ERANAMES": [
+      "Prije Krista",
+      "Poslije Krista"
+    ],
+    "ERAS": [
+      "pr. Kr.",
+      "p. Kr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "sije\u010dnja",
+      "velja\u010de",
+      "o\u017eujka",
+      "travnja",
+      "svibnja",
+      "lipnja",
+      "srpnja",
+      "kolovoza",
+      "rujna",
+      "listopada",
+      "studenoga",
+      "prosinca"
+    ],
+    "SHORTDAY": [
+      "ned",
+      "pon",
+      "uto",
+      "sri",
+      "\u010det",
+      "pet",
+      "sub"
+    ],
+    "SHORTMONTH": [
+      "sij",
+      "velj",
+      "o\u017eu",
+      "tra",
+      "svi",
+      "lip",
+      "srp",
+      "kol",
+      "ruj",
+      "lis",
+      "stu",
+      "pro"
+    ],
+    "STANDALONEMONTH": [
+      "sije\u010danj",
+      "velja\u010da",
+      "o\u017eujak",
+      "travanj",
+      "svibanj",
+      "lipanj",
+      "srpanj",
+      "kolovoz",
+      "rujan",
+      "listopad",
+      "studeni",
+      "prosinac"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d. MMMM y.",
+    "longDate": "d. MMMM y.",
+    "medium": "d. MMM y. HH:mm:ss",
+    "mediumDate": "d. MMM y.",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.y. HH:mm",
+    "shortDate": "dd.MM.y.",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "kn",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "hr-hr",
+  "localeID": "hr_HR",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (vf.v == 0 && i % 10 == 1 && i % 100 != 11 || vf.f % 10 == 1 && vf.f % 100 != 11) {    return PLURAL_CATEGORY.ONE;  }  if (vf.v == 0 && i % 10 >= 2 && i % 10 <= 4 && (i % 100 < 12 || i % 100 > 14) || vf.f % 10 >= 2 && vf.f % 10 <= 4 && (vf.f % 100 < 12 || vf.f % 100 > 14)) {    return PLURAL_CATEGORY.FEW;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hr.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hr.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hr.js
new file mode 100644
index 0000000..d56c770
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hr.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "nedjelja",
+      "ponedjeljak",
+      "utorak",
+      "srijeda",
+      "\u010detvrtak",
+      "petak",
+      "subota"
+    ],
+    "ERANAMES": [
+      "Prije Krista",
+      "Poslije Krista"
+    ],
+    "ERAS": [
+      "pr. Kr.",
+      "p. Kr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "sije\u010dnja",
+      "velja\u010de",
+      "o\u017eujka",
+      "travnja",
+      "svibnja",
+      "lipnja",
+      "srpnja",
+      "kolovoza",
+      "rujna",
+      "listopada",
+      "studenoga",
+      "prosinca"
+    ],
+    "SHORTDAY": [
+      "ned",
+      "pon",
+      "uto",
+      "sri",
+      "\u010det",
+      "pet",
+      "sub"
+    ],
+    "SHORTMONTH": [
+      "sij",
+      "velj",
+      "o\u017eu",
+      "tra",
+      "svi",
+      "lip",
+      "srp",
+      "kol",
+      "ruj",
+      "lis",
+      "stu",
+      "pro"
+    ],
+    "STANDALONEMONTH": [
+      "sije\u010danj",
+      "velja\u010da",
+      "o\u017eujak",
+      "travanj",
+      "svibanj",
+      "lipanj",
+      "srpanj",
+      "kolovoz",
+      "rujan",
+      "listopad",
+      "studeni",
+      "prosinac"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d. MMMM y.",
+    "longDate": "d. MMMM y.",
+    "medium": "d. MMM y. HH:mm:ss",
+    "mediumDate": "d. MMM y.",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.y. HH:mm",
+    "shortDate": "dd.MM.y.",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "kn",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "hr",
+  "localeID": "hr",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (vf.v == 0 && i % 10 == 1 && i % 100 != 11 || vf.f % 10 == 1 && vf.f % 100 != 11) {    return PLURAL_CATEGORY.ONE;  }  if (vf.v == 0 && i % 10 >= 2 && i % 10 <= 4 && (i % 100 < 12 || i % 100 > 14) || vf.f % 10 >= 2 && vf.f % 10 <= 4 && (vf.f % 100 < 12 || vf.f % 100 > 14)) {    return PLURAL_CATEGORY.FEW;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hsb-de.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hsb-de.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hsb-de.js
new file mode 100644
index 0000000..5e5ff8d
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hsb-de.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "dopo\u0142dnja",
+      "popo\u0142dnju"
+    ],
+    "DAY": [
+      "njed\u017aela",
+      "p\u00f3nd\u017aela",
+      "wutora",
+      "srjeda",
+      "\u0161tw\u00f3rtk",
+      "pjatk",
+      "sobota"
+    ],
+    "ERANAMES": [
+      "p\u0159ed Chrystowym narod\u017aenjom",
+      "po Chrystowym narod\u017aenju"
+    ],
+    "ERAS": [
+      "p\u0159.Chr.n.",
+      "po Chr.n."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "januara",
+      "februara",
+      "m\u011brca",
+      "apryla",
+      "meje",
+      "junija",
+      "julija",
+      "awgusta",
+      "septembra",
+      "oktobra",
+      "nowembra",
+      "decembra"
+    ],
+    "SHORTDAY": [
+      "nje",
+      "p\u00f3n",
+      "wut",
+      "srj",
+      "\u0161tw",
+      "pja",
+      "sob"
+    ],
+    "SHORTMONTH": [
+      "jan.",
+      "feb.",
+      "m\u011br.",
+      "apr.",
+      "mej.",
+      "jun.",
+      "jul.",
+      "awg.",
+      "sep.",
+      "okt.",
+      "now.",
+      "dec."
+    ],
+    "STANDALONEMONTH": [
+      "januar",
+      "februar",
+      "m\u011brc",
+      "apryl",
+      "meja",
+      "junij",
+      "julij",
+      "awgust",
+      "september",
+      "oktober",
+      "nowember",
+      "december"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "d.M.y H:mm:ss",
+    "mediumDate": "d.M.y",
+    "mediumTime": "H:mm:ss",
+    "short": "d.M.yy H:mm 'hod\u017a'.",
+    "shortDate": "d.M.yy",
+    "shortTime": "H:mm 'hod\u017a'."
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "hsb-de",
+  "localeID": "hsb_DE",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hsb.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hsb.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hsb.js
new file mode 100644
index 0000000..513d701
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hsb.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "dopo\u0142dnja",
+      "popo\u0142dnju"
+    ],
+    "DAY": [
+      "njed\u017aela",
+      "p\u00f3nd\u017aela",
+      "wutora",
+      "srjeda",
+      "\u0161tw\u00f3rtk",
+      "pjatk",
+      "sobota"
+    ],
+    "ERANAMES": [
+      "p\u0159ed Chrystowym narod\u017aenjom",
+      "po Chrystowym narod\u017aenju"
+    ],
+    "ERAS": [
+      "p\u0159.Chr.n.",
+      "po Chr.n."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "januara",
+      "februara",
+      "m\u011brca",
+      "apryla",
+      "meje",
+      "junija",
+      "julija",
+      "awgusta",
+      "septembra",
+      "oktobra",
+      "nowembra",
+      "decembra"
+    ],
+    "SHORTDAY": [
+      "nje",
+      "p\u00f3n",
+      "wut",
+      "srj",
+      "\u0161tw",
+      "pja",
+      "sob"
+    ],
+    "SHORTMONTH": [
+      "jan.",
+      "feb.",
+      "m\u011br.",
+      "apr.",
+      "mej.",
+      "jun.",
+      "jul.",
+      "awg.",
+      "sep.",
+      "okt.",
+      "now.",
+      "dec."
+    ],
+    "STANDALONEMONTH": [
+      "januar",
+      "februar",
+      "m\u011brc",
+      "apryl",
+      "meja",
+      "junij",
+      "julij",
+      "awgust",
+      "september",
+      "oktober",
+      "nowember",
+      "december"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "d.M.y H:mm:ss",
+    "mediumDate": "d.M.y",
+    "mediumTime": "H:mm:ss",
+    "short": "d.M.yy H:mm 'hod\u017a'.",
+    "shortDate": "d.M.yy",
+    "shortTime": "H:mm 'hod\u017a'."
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "hsb",
+  "localeID": "hsb",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hu-hu.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hu-hu.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hu-hu.js
new file mode 100644
index 0000000..9d0bd6d
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hu-hu.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "de.",
+      "du."
+    ],
+    "DAY": [
+      "vas\u00e1rnap",
+      "h\u00e9tf\u0151",
+      "kedd",
+      "szerda",
+      "cs\u00fct\u00f6rt\u00f6k",
+      "p\u00e9ntek",
+      "szombat"
+    ],
+    "ERANAMES": [
+      "id\u0151sz\u00e1m\u00edt\u00e1sunk el\u0151tt",
+      "id\u0151sz\u00e1m\u00edt\u00e1sunk szerint"
+    ],
+    "ERAS": [
+      "i. e.",
+      "i. sz."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janu\u00e1r",
+      "febru\u00e1r",
+      "m\u00e1rcius",
+      "\u00e1prilis",
+      "m\u00e1jus",
+      "j\u00fanius",
+      "j\u00falius",
+      "augusztus",
+      "szeptember",
+      "okt\u00f3ber",
+      "november",
+      "december"
+    ],
+    "SHORTDAY": [
+      "V",
+      "H",
+      "K",
+      "Sze",
+      "Cs",
+      "P",
+      "Szo"
+    ],
+    "SHORTMONTH": [
+      "jan.",
+      "febr.",
+      "m\u00e1rc.",
+      "\u00e1pr.",
+      "m\u00e1j.",
+      "j\u00fan.",
+      "j\u00fal.",
+      "aug.",
+      "szept.",
+      "okt.",
+      "nov.",
+      "dec."
+    ],
+    "STANDALONEMONTH": [
+      "janu\u00e1r",
+      "febru\u00e1r",
+      "m\u00e1rcius",
+      "\u00e1prilis",
+      "m\u00e1jus",
+      "j\u00fanius",
+      "j\u00falius",
+      "augusztus",
+      "szeptember",
+      "okt\u00f3ber",
+      "november",
+      "december"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "y. MMMM d., EEEE",
+    "longDate": "y. MMMM d.",
+    "medium": "y. MMM d. H:mm:ss",
+    "mediumDate": "y. MMM d.",
+    "mediumTime": "H:mm:ss",
+    "short": "y. MM. dd. H:mm",
+    "shortDate": "y. MM. dd.",
+    "shortTime": "H:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Ft",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "hu-hu",
+  "localeID": "hu_HU",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hu.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hu.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hu.js
new file mode 100644
index 0000000..6fe1ec1
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hu.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "de.",
+      "du."
+    ],
+    "DAY": [
+      "vas\u00e1rnap",
+      "h\u00e9tf\u0151",
+      "kedd",
+      "szerda",
+      "cs\u00fct\u00f6rt\u00f6k",
+      "p\u00e9ntek",
+      "szombat"
+    ],
+    "ERANAMES": [
+      "id\u0151sz\u00e1m\u00edt\u00e1sunk el\u0151tt",
+      "id\u0151sz\u00e1m\u00edt\u00e1sunk szerint"
+    ],
+    "ERAS": [
+      "i. e.",
+      "i. sz."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "janu\u00e1r",
+      "febru\u00e1r",
+      "m\u00e1rcius",
+      "\u00e1prilis",
+      "m\u00e1jus",
+      "j\u00fanius",
+      "j\u00falius",
+      "augusztus",
+      "szeptember",
+      "okt\u00f3ber",
+      "november",
+      "december"
+    ],
+    "SHORTDAY": [
+      "V",
+      "H",
+      "K",
+      "Sze",
+      "Cs",
+      "P",
+      "Szo"
+    ],
+    "SHORTMONTH": [
+      "jan.",
+      "febr.",
+      "m\u00e1rc.",
+      "\u00e1pr.",
+      "m\u00e1j.",
+      "j\u00fan.",
+      "j\u00fal.",
+      "aug.",
+      "szept.",
+      "okt.",
+      "nov.",
+      "dec."
+    ],
+    "STANDALONEMONTH": [
+      "janu\u00e1r",
+      "febru\u00e1r",
+      "m\u00e1rcius",
+      "\u00e1prilis",
+      "m\u00e1jus",
+      "j\u00fanius",
+      "j\u00falius",
+      "augusztus",
+      "szeptember",
+      "okt\u00f3ber",
+      "november",
+      "december"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "y. MMMM d., EEEE",
+    "longDate": "y. MMMM d.",
+    "medium": "y. MMM d. H:mm:ss",
+    "mediumDate": "y. MMM d.",
+    "mediumTime": "H:mm:ss",
+    "short": "y. MM. dd. H:mm",
+    "shortDate": "y. MM. dd.",
+    "shortTime": "H:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Ft",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "hu",
+  "localeID": "hu",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hy-am.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hy-am.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hy-am.js
new file mode 100644
index 0000000..a11f55a
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hy-am.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u056f\u0565\u057d\u0585\u0580\u056b\u0581 \u0561\u057c\u0561\u057b",
+      "\u056f\u0565\u057d\u0585\u0580\u056b\u0581 \u0570\u0565\u057f\u0578"
+    ],
+    "DAY": [
+      "\u056f\u056b\u0580\u0561\u056f\u056b",
+      "\u0565\u0580\u056f\u0578\u0582\u0577\u0561\u0562\u0569\u056b",
+      "\u0565\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b",
+      "\u0579\u0578\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b",
+      "\u0570\u056b\u0576\u0563\u0577\u0561\u0562\u0569\u056b",
+      "\u0578\u0582\u0580\u0562\u0561\u0569",
+      "\u0577\u0561\u0562\u0561\u0569"
+    ],
+    "ERANAMES": [
+      "\u0574.\u0569.\u0561.",
+      "\u0574.\u0569."
+    ],
+    "ERAS": [
+      "\u0574.\u0569.\u0561.",
+      "\u0574.\u0569."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u0570\u0578\u0582\u0576\u057e\u0561\u0580\u056b",
+      "\u0583\u0565\u057f\u0580\u057e\u0561\u0580\u056b",
+      "\u0574\u0561\u0580\u057f\u056b",
+      "\u0561\u057a\u0580\u056b\u056c\u056b",
+      "\u0574\u0561\u0575\u056b\u057d\u056b",
+      "\u0570\u0578\u0582\u0576\u056b\u057d\u056b",
+      "\u0570\u0578\u0582\u056c\u056b\u057d\u056b",
+      "\u0585\u0563\u0578\u057d\u057f\u0578\u057d\u056b",
+      "\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580\u056b",
+      "\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b",
+      "\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580\u056b",
+      "\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b"
+    ],
+    "SHORTDAY": [
+      "\u056f\u056b\u0580",
+      "\u0565\u0580\u056f",
+      "\u0565\u0580\u0584",
+      "\u0579\u0580\u0584",
+      "\u0570\u0576\u0563",
+      "\u0578\u0582\u0580",
+      "\u0577\u0562\u0569"
+    ],
+    "SHORTMONTH": [
+      "\u0570\u0576\u057e",
+      "\u0583\u057f\u057e",
+      "\u0574\u0580\u057f",
+      "\u0561\u057a\u0580",
+      "\u0574\u0575\u057d",
+      "\u0570\u0576\u057d",
+      "\u0570\u056c\u057d",
+      "\u0585\u0563\u057d",
+      "\u057d\u0565\u057a",
+      "\u0570\u0578\u056f",
+      "\u0576\u0578\u0575",
+      "\u0564\u0565\u056f"
+    ],
+    "STANDALONEMONTH": [
+      "\u0570\u0578\u0582\u0576\u057e\u0561\u0580",
+      "\u0583\u0565\u057f\u0580\u057e\u0561\u0580",
+      "\u0574\u0561\u0580\u057f",
+      "\u0561\u057a\u0580\u056b\u056c",
+      "\u0574\u0561\u0575\u056b\u057d",
+      "\u0570\u0578\u0582\u0576\u056b\u057d",
+      "\u0570\u0578\u0582\u056c\u056b\u057d",
+      "\u0585\u0563\u0578\u057d\u057f\u0578\u057d",
+      "\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580",
+      "\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580",
+      "\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580",
+      "\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "y\u0569. MMMM d, EEEE",
+    "longDate": "dd MMMM, y\u0569.",
+    "medium": "dd MMM, y\u0569. H:mm:ss",
+    "mediumDate": "dd MMM, y\u0569.",
+    "mediumTime": "H:mm:ss",
+    "short": "dd.MM.yy H:mm",
+    "shortDate": "dd.MM.yy",
+    "shortTime": "H:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Dram",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 0,
+        "lgSize": 0,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 0,
+        "lgSize": 0,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "hy-am",
+  "localeID": "hy_AM",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hy.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hy.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hy.js
new file mode 100644
index 0000000..8e49339
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_hy.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u056f\u0565\u057d\u0585\u0580\u056b\u0581 \u0561\u057c\u0561\u057b",
+      "\u056f\u0565\u057d\u0585\u0580\u056b\u0581 \u0570\u0565\u057f\u0578"
+    ],
+    "DAY": [
+      "\u056f\u056b\u0580\u0561\u056f\u056b",
+      "\u0565\u0580\u056f\u0578\u0582\u0577\u0561\u0562\u0569\u056b",
+      "\u0565\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b",
+      "\u0579\u0578\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b",
+      "\u0570\u056b\u0576\u0563\u0577\u0561\u0562\u0569\u056b",
+      "\u0578\u0582\u0580\u0562\u0561\u0569",
+      "\u0577\u0561\u0562\u0561\u0569"
+    ],
+    "ERANAMES": [
+      "\u0574.\u0569.\u0561.",
+      "\u0574.\u0569."
+    ],
+    "ERAS": [
+      "\u0574.\u0569.\u0561.",
+      "\u0574.\u0569."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u0570\u0578\u0582\u0576\u057e\u0561\u0580\u056b",
+      "\u0583\u0565\u057f\u0580\u057e\u0561\u0580\u056b",
+      "\u0574\u0561\u0580\u057f\u056b",
+      "\u0561\u057a\u0580\u056b\u056c\u056b",
+      "\u0574\u0561\u0575\u056b\u057d\u056b",
+      "\u0570\u0578\u0582\u0576\u056b\u057d\u056b",
+      "\u0570\u0578\u0582\u056c\u056b\u057d\u056b",
+      "\u0585\u0563\u0578\u057d\u057f\u0578\u057d\u056b",
+      "\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580\u056b",
+      "\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b",
+      "\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580\u056b",
+      "\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b"
+    ],
+    "SHORTDAY": [
+      "\u056f\u056b\u0580",
+      "\u0565\u0580\u056f",
+      "\u0565\u0580\u0584",
+      "\u0579\u0580\u0584",
+      "\u0570\u0576\u0563",
+      "\u0578\u0582\u0580",
+      "\u0577\u0562\u0569"
+    ],
+    "SHORTMONTH": [
+      "\u0570\u0576\u057e",
+      "\u0583\u057f\u057e",
+      "\u0574\u0580\u057f",
+      "\u0561\u057a\u0580",
+      "\u0574\u0575\u057d",
+      "\u0570\u0576\u057d",
+      "\u0570\u056c\u057d",
+      "\u0585\u0563\u057d",
+      "\u057d\u0565\u057a",
+      "\u0570\u0578\u056f",
+      "\u0576\u0578\u0575",
+      "\u0564\u0565\u056f"
+    ],
+    "STANDALONEMONTH": [
+      "\u0570\u0578\u0582\u0576\u057e\u0561\u0580",
+      "\u0583\u0565\u057f\u0580\u057e\u0561\u0580",
+      "\u0574\u0561\u0580\u057f",
+      "\u0561\u057a\u0580\u056b\u056c",
+      "\u0574\u0561\u0575\u056b\u057d",
+      "\u0570\u0578\u0582\u0576\u056b\u057d",
+      "\u0570\u0578\u0582\u056c\u056b\u057d",
+      "\u0585\u0563\u0578\u057d\u057f\u0578\u057d",
+      "\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580",
+      "\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580",
+      "\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580",
+      "\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "y\u0569. MMMM d, EEEE",
+    "longDate": "dd MMMM, y\u0569.",
+    "medium": "dd MMM, y\u0569. H:mm:ss",
+    "mediumDate": "dd MMM, y\u0569.",
+    "mediumTime": "H:mm:ss",
+    "short": "dd.MM.yy H:mm",
+    "shortDate": "dd.MM.yy",
+    "shortTime": "H:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Dram",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 0,
+        "lgSize": 0,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 0,
+        "lgSize": 0,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "hy",
+  "localeID": "hy",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || i == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ia-fr.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ia-fr.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ia-fr.js
new file mode 100644
index 0000000..f7b636b
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ia-fr.js
@@ -0,0 +1,128 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a.m.",
+      "p.m."
+    ],
+    "DAY": [
+      "dominica",
+      "lunedi",
+      "martedi",
+      "mercuridi",
+      "jovedi",
+      "venerdi",
+      "sabbato"
+    ],
+    "ERANAMES": [
+      "ante Christo",
+      "post Christo"
+    ],
+    "ERAS": [
+      "a.Chr.",
+      "p.Chr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "januario",
+      "februario",
+      "martio",
+      "april",
+      "maio",
+      "junio",
+      "julio",
+      "augusto",
+      "septembre",
+      "octobre",
+      "novembre",
+      "decembre"
+    ],
+    "SHORTDAY": [
+      "dom",
+      "lun",
+      "mar",
+      "mer",
+      "jov",
+      "ven",
+      "sab"
+    ],
+    "SHORTMONTH": [
+      "jan",
+      "feb",
+      "mar",
+      "apr",
+      "mai",
+      "jun",
+      "jul",
+      "aug",
+      "sep",
+      "oct",
+      "nov",
+      "dec"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, y MMMM dd",
+    "longDate": "y MMMM d",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "yy/MM/dd HH:mm",
+    "shortDate": "yy/MM/dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4\u00a0-",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ia-fr",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ia.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ia.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ia.js
new file mode 100644
index 0000000..38ead22
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ia.js
@@ -0,0 +1,128 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a.m.",
+      "p.m."
+    ],
+    "DAY": [
+      "dominica",
+      "lunedi",
+      "martedi",
+      "mercuridi",
+      "jovedi",
+      "venerdi",
+      "sabbato"
+    ],
+    "ERANAMES": [
+      "ante Christo",
+      "post Christo"
+    ],
+    "ERAS": [
+      "a.Chr.",
+      "p.Chr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "januario",
+      "februario",
+      "martio",
+      "april",
+      "maio",
+      "junio",
+      "julio",
+      "augusto",
+      "septembre",
+      "octobre",
+      "novembre",
+      "decembre"
+    ],
+    "SHORTDAY": [
+      "dom",
+      "lun",
+      "mar",
+      "mer",
+      "jov",
+      "ven",
+      "sab"
+    ],
+    "SHORTMONTH": [
+      "jan",
+      "feb",
+      "mar",
+      "apr",
+      "mai",
+      "jun",
+      "jul",
+      "aug",
+      "sep",
+      "oct",
+      "nov",
+      "dec"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, y MMMM dd",
+    "longDate": "y MMMM d",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "yy/MM/dd HH:mm",
+    "shortDate": "yy/MM/dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4\u00a0-",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ia",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_id-id.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_id-id.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_id-id.js
new file mode 100644
index 0000000..021ede1
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_id-id.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Minggu",
+      "Senin",
+      "Selasa",
+      "Rabu",
+      "Kamis",
+      "Jumat",
+      "Sabtu"
+    ],
+    "ERANAMES": [
+      "Sebelum Masehi",
+      "M"
+    ],
+    "ERAS": [
+      "SM",
+      "M"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "Januari",
+      "Februari",
+      "Maret",
+      "April",
+      "Mei",
+      "Juni",
+      "Juli",
+      "Agustus",
+      "September",
+      "Oktober",
+      "November",
+      "Desember"
+    ],
+    "SHORTDAY": [
+      "Min",
+      "Sen",
+      "Sel",
+      "Rab",
+      "Kam",
+      "Jum",
+      "Sab"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "Mei",
+      "Jun",
+      "Jul",
+      "Agt",
+      "Sep",
+      "Okt",
+      "Nov",
+      "Des"
+    ],
+    "STANDALONEMONTH": [
+      "Januari",
+      "Februari",
+      "Maret",
+      "April",
+      "Mei",
+      "Juni",
+      "Juli",
+      "Agustus",
+      "September",
+      "Oktober",
+      "November",
+      "Desember"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, dd MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH.mm.ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH.mm.ss",
+    "short": "dd/MM/yy HH.mm",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "HH.mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Rp",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "id-id",
+  "localeID": "id_ID",
+  "pluralCat": function(n, opt_precision) {  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_id.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_id.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_id.js
new file mode 100644
index 0000000..09a2c51
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_id.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Minggu",
+      "Senin",
+      "Selasa",
+      "Rabu",
+      "Kamis",
+      "Jumat",
+      "Sabtu"
+    ],
+    "ERANAMES": [
+      "Sebelum Masehi",
+      "M"
+    ],
+    "ERAS": [
+      "SM",
+      "M"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "Januari",
+      "Februari",
+      "Maret",
+      "April",
+      "Mei",
+      "Juni",
+      "Juli",
+      "Agustus",
+      "September",
+      "Oktober",
+      "November",
+      "Desember"
+    ],
+    "SHORTDAY": [
+      "Min",
+      "Sen",
+      "Sel",
+      "Rab",
+      "Kam",
+      "Jum",
+      "Sab"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "Mei",
+      "Jun",
+      "Jul",
+      "Agt",
+      "Sep",
+      "Okt",
+      "Nov",
+      "Des"
+    ],
+    "STANDALONEMONTH": [
+      "Januari",
+      "Februari",
+      "Maret",
+      "April",
+      "Mei",
+      "Juni",
+      "Juli",
+      "Agustus",
+      "September",
+      "Oktober",
+      "November",
+      "Desember"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, dd MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH.mm.ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH.mm.ss",
+    "short": "dd/MM/yy HH.mm",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "HH.mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Rp",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "id",
+  "localeID": "id",
+  "pluralCat": function(n, opt_precision) {  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ig-ng.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ig-ng.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ig-ng.js
new file mode 100644
index 0000000..c6691f9
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ig-ng.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "A.M.",
+      "P.M."
+    ],
+    "DAY": [
+      "Mb\u1ecds\u1ecb \u1ee4ka",
+      "M\u1ecdnde",
+      "Tiuzdee",
+      "Wenezdee",
+      "T\u1ecd\u1ecdzdee",
+      "Fra\u1ecbdee",
+      "Sat\u1ecddee"
+    ],
+    "ERANAMES": [
+      "Tupu Kristi",
+      "Af\u1ecd Kristi"
+    ],
+    "ERAS": [
+      "T.K.",
+      "A.K."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Jen\u1ee5war\u1ecb",
+      "Febr\u1ee5war\u1ecb",
+      "Maach\u1ecb",
+      "Eprel",
+      "Mee",
+      "Juun",
+      "Jula\u1ecb",
+      "\u1eccg\u1ecd\u1ecdst",
+      "Septemba",
+      "\u1eccktoba",
+      "Novemba",
+      "Disemba"
+    ],
+    "SHORTDAY": [
+      "\u1ee4ka",
+      "M\u1ecdn",
+      "Tiu",
+      "Wen",
+      "T\u1ecd\u1ecd",
+      "Fra\u1ecb",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jen",
+      "Feb",
+      "Maa",
+      "Epr",
+      "Mee",
+      "Juu",
+      "Jul",
+      "\u1eccg\u1ecd",
+      "Sep",
+      "\u1ecckt",
+      "Nov",
+      "Dis"
+    ],
+    "STANDALONEMONTH": [
+      "Jen\u1ee5war\u1ecb",
+      "Febr\u1ee5war\u1ecb",
+      "Maach\u1ecb",
+      "Eprel",
+      "Mee",
+      "Juun",
+      "Jula\u1ecb",
+      "\u1eccg\u1ecd\u1ecdst",
+      "Septemba",
+      "\u1eccktoba",
+      "Novemba",
+      "Disemba"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20a6",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ig-ng",
+  "localeID": "ig_NG",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ig.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ig.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ig.js
new file mode 100644
index 0000000..040376f
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ig.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "A.M.",
+      "P.M."
+    ],
+    "DAY": [
+      "Mb\u1ecds\u1ecb \u1ee4ka",
+      "M\u1ecdnde",
+      "Tiuzdee",
+      "Wenezdee",
+      "T\u1ecd\u1ecdzdee",
+      "Fra\u1ecbdee",
+      "Sat\u1ecddee"
+    ],
+    "ERANAMES": [
+      "Tupu Kristi",
+      "Af\u1ecd Kristi"
+    ],
+    "ERAS": [
+      "T.K.",
+      "A.K."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Jen\u1ee5war\u1ecb",
+      "Febr\u1ee5war\u1ecb",
+      "Maach\u1ecb",
+      "Eprel",
+      "Mee",
+      "Juun",
+      "Jula\u1ecb",
+      "\u1eccg\u1ecd\u1ecdst",
+      "Septemba",
+      "\u1eccktoba",
+      "Novemba",
+      "Disemba"
+    ],
+    "SHORTDAY": [
+      "\u1ee4ka",
+      "M\u1ecdn",
+      "Tiu",
+      "Wen",
+      "T\u1ecd\u1ecd",
+      "Fra\u1ecb",
+      "Sat"
+    ],
+    "SHORTMONTH": [
+      "Jen",
+      "Feb",
+      "Maa",
+      "Epr",
+      "Mee",
+      "Juu",
+      "Jul",
+      "\u1eccg\u1ecd",
+      "Sep",
+      "\u1ecckt",
+      "Nov",
+      "Dis"
+    ],
+    "STANDALONEMONTH": [
+      "Jen\u1ee5war\u1ecb",
+      "Febr\u1ee5war\u1ecb",
+      "Maach\u1ecb",
+      "Eprel",
+      "Mee",
+      "Juun",
+      "Jula\u1ecb",
+      "\u1eccg\u1ecd\u1ecdst",
+      "Septemba",
+      "\u1eccktoba",
+      "Novemba",
+      "Disemba"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20a6",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ig",
+  "localeID": "ig",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ii-cn.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ii-cn.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ii-cn.js
new file mode 100644
index 0000000..a4d6c3b
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ii-cn.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\ua3b8\ua111",
+      "\ua06f\ua2d2"
+    ],
+    "DAY": [
+      "\ua46d\ua18f\ua44d",
+      "\ua18f\ua282\ua2cd",
+      "\ua18f\ua282\ua44d",
+      "\ua18f\ua282\ua315",
+      "\ua18f\ua282\ua1d6",
+      "\ua18f\ua282\ua26c",
+      "\ua18f\ua282\ua0d8"
+    ],
+    "ERANAMES": [
+      "\ua0c5\ua2ca\ua0bf",
+      "\ua0c5\ua2ca\ua282"
+    ],
+    "ERAS": [
+      "\ua0c5\ua2ca\ua0bf",
+      "\ua0c5\ua2ca\ua282"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\ua2cd\ua1aa",
+      "\ua44d\ua1aa",
+      "\ua315\ua1aa",
+      "\ua1d6\ua1aa",
+      "\ua26c\ua1aa",
+      "\ua0d8\ua1aa",
+      "\ua3c3\ua1aa",
+      "\ua246\ua1aa",
+      "\ua22c\ua1aa",
+      "\ua2b0\ua1aa",
+      "\ua2b0\ua2aa\ua1aa",
+      "\ua2b0\ua44b\ua1aa"
+    ],
+    "SHORTDAY": [
+      "\ua46d\ua18f",
+      "\ua18f\ua2cd",
+      "\ua18f\ua44d",
+      "\ua18f\ua315",
+      "\ua18f\ua1d6",
+      "\ua18f\ua26c",
+      "\ua18f\ua0d8"
+    ],
+    "SHORTMONTH": [
+      "1",
+      "2",
+      "3",
+      "4",
+      "5",
+      "6",
+      "7",
+      "8",
+      "9",
+      "10",
+      "11",
+      "12"
+    ],
+    "STANDALONEMONTH": [
+      "\ua2cd\ua1aa",
+      "\ua44d\ua1aa",
+      "\ua315\ua1aa",
+      "\ua1d6\ua1aa",
+      "\ua26c\ua1aa",
+      "\ua0d8\ua1aa",
+      "\ua3c3\ua1aa",
+      "\ua246\ua1aa",
+      "\ua22c\ua1aa",
+      "\ua2b0\ua1aa",
+      "\ua2b0\ua2aa\ua1aa",
+      "\ua2b0\ua44b\ua1aa"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "y MMMM d, EEEE",
+    "longDate": "y MMMM d",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "y-MM-dd HH:mm",
+    "shortDate": "y-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u00a5",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ii-cn",
+  "localeID": "ii_CN",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ii.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ii.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ii.js
new file mode 100644
index 0000000..3929d88
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ii.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\ua3b8\ua111",
+      "\ua06f\ua2d2"
+    ],
+    "DAY": [
+      "\ua46d\ua18f\ua44d",
+      "\ua18f\ua282\ua2cd",
+      "\ua18f\ua282\ua44d",
+      "\ua18f\ua282\ua315",
+      "\ua18f\ua282\ua1d6",
+      "\ua18f\ua282\ua26c",
+      "\ua18f\ua282\ua0d8"
+    ],
+    "ERANAMES": [
+      "\ua0c5\ua2ca\ua0bf",
+      "\ua0c5\ua2ca\ua282"
+    ],
+    "ERAS": [
+      "\ua0c5\ua2ca\ua0bf",
+      "\ua0c5\ua2ca\ua282"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\ua2cd\ua1aa",
+      "\ua44d\ua1aa",
+      "\ua315\ua1aa",
+      "\ua1d6\ua1aa",
+      "\ua26c\ua1aa",
+      "\ua0d8\ua1aa",
+      "\ua3c3\ua1aa",
+      "\ua246\ua1aa",
+      "\ua22c\ua1aa",
+      "\ua2b0\ua1aa",
+      "\ua2b0\ua2aa\ua1aa",
+      "\ua2b0\ua44b\ua1aa"
+    ],
+    "SHORTDAY": [
+      "\ua46d\ua18f",
+      "\ua18f\ua2cd",
+      "\ua18f\ua44d",
+      "\ua18f\ua315",
+      "\ua18f\ua1d6",
+      "\ua18f\ua26c",
+      "\ua18f\ua0d8"
+    ],
+    "SHORTMONTH": [
+      "1",
+      "2",
+      "3",
+      "4",
+      "5",
+      "6",
+      "7",
+      "8",
+      "9",
+      "10",
+      "11",
+      "12"
+    ],
+    "STANDALONEMONTH": [
+      "\ua2cd\ua1aa",
+      "\ua44d\ua1aa",
+      "\ua315\ua1aa",
+      "\ua1d6\ua1aa",
+      "\ua26c\ua1aa",
+      "\ua0d8\ua1aa",
+      "\ua3c3\ua1aa",
+      "\ua246\ua1aa",
+      "\ua22c\ua1aa",
+      "\ua2b0\ua1aa",
+      "\ua2b0\ua2aa\ua1aa",
+      "\ua2b0\ua44b\ua1aa"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "y MMMM d, EEEE",
+    "longDate": "y MMMM d",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "y-MM-dd HH:mm",
+    "shortDate": "y-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u00a5",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ii",
+  "localeID": "ii",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_in.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_in.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_in.js
new file mode 100644
index 0000000..44bb3c9
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_in.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Minggu",
+      "Senin",
+      "Selasa",
+      "Rabu",
+      "Kamis",
+      "Jumat",
+      "Sabtu"
+    ],
+    "ERANAMES": [
+      "Sebelum Masehi",
+      "M"
+    ],
+    "ERAS": [
+      "SM",
+      "M"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "Januari",
+      "Februari",
+      "Maret",
+      "April",
+      "Mei",
+      "Juni",
+      "Juli",
+      "Agustus",
+      "September",
+      "Oktober",
+      "November",
+      "Desember"
+    ],
+    "SHORTDAY": [
+      "Min",
+      "Sen",
+      "Sel",
+      "Rab",
+      "Kam",
+      "Jum",
+      "Sab"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Apr",
+      "Mei",
+      "Jun",
+      "Jul",
+      "Agt",
+      "Sep",
+      "Okt",
+      "Nov",
+      "Des"
+    ],
+    "STANDALONEMONTH": [
+      "Januari",
+      "Februari",
+      "Maret",
+      "April",
+      "Mei",
+      "Juni",
+      "Juli",
+      "Agustus",
+      "September",
+      "Oktober",
+      "November",
+      "Desember"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, dd MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH.mm.ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH.mm.ss",
+    "short": "dd/MM/yy HH.mm",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "HH.mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Rp",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "in",
+  "localeID": "in",
+  "pluralCat": function(n, opt_precision) {  return PLURAL_CATEGORY.OTHER;}
+});
+}]);


[42/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-animate.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-animate.js b/rocketmq-console/src/main/resources/static/vendor/angular/angular-animate.js
new file mode 100644
index 0000000..da1b2f4
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-animate.js
@@ -0,0 +1,4148 @@
+/**
+ * @license AngularJS v1.5.6
+ * (c) 2010-2016 Google, Inc. http://angularjs.org
+ * License: MIT
+ */
+(function(window, angular) {'use strict';
+
+/* jshint ignore:start */
+var noop        = angular.noop;
+var copy        = angular.copy;
+var extend      = angular.extend;
+var jqLite      = angular.element;
+var forEach     = angular.forEach;
+var isArray     = angular.isArray;
+var isString    = angular.isString;
+var isObject    = angular.isObject;
+var isUndefined = angular.isUndefined;
+var isDefined   = angular.isDefined;
+var isFunction  = angular.isFunction;
+var isElement   = angular.isElement;
+
+var ELEMENT_NODE = 1;
+var COMMENT_NODE = 8;
+
+var ADD_CLASS_SUFFIX = '-add';
+var REMOVE_CLASS_SUFFIX = '-remove';
+var EVENT_CLASS_PREFIX = 'ng-';
+var ACTIVE_CLASS_SUFFIX = '-active';
+var PREPARE_CLASS_SUFFIX = '-prepare';
+
+var NG_ANIMATE_CLASSNAME = 'ng-animate';
+var NG_ANIMATE_CHILDREN_DATA = '$$ngAnimateChildren';
+
+// Detect proper transitionend/animationend event names.
+var CSS_PREFIX = '', TRANSITION_PROP, TRANSITIONEND_EVENT, ANIMATION_PROP, ANIMATIONEND_EVENT;
+
+// If unprefixed events are not supported but webkit-prefixed are, use the latter.
+// Otherwise, just use W3C names, browsers not supporting them at all will just ignore them.
+// Note: Chrome implements `window.onwebkitanimationend` and doesn't implement `window.onanimationend`
+// but at the same time dispatches the `animationend` event and not `webkitAnimationEnd`.
+// Register both events in case `window.onanimationend` is not supported because of that,
+// do the same for `transitionend` as Safari is likely to exhibit similar behavior.
+// Also, the only modern browser that uses vendor prefixes for transitions/keyframes is webkit
+// therefore there is no reason to test anymore for other vendor prefixes:
+// http://caniuse.com/#search=transition
+if (isUndefined(window.ontransitionend) && isDefined(window.onwebkittransitionend)) {
+  CSS_PREFIX = '-webkit-';
+  TRANSITION_PROP = 'WebkitTransition';
+  TRANSITIONEND_EVENT = 'webkitTransitionEnd transitionend';
+} else {
+  TRANSITION_PROP = 'transition';
+  TRANSITIONEND_EVENT = 'transitionend';
+}
+
+if (isUndefined(window.onanimationend) && isDefined(window.onwebkitanimationend)) {
+  CSS_PREFIX = '-webkit-';
+  ANIMATION_PROP = 'WebkitAnimation';
+  ANIMATIONEND_EVENT = 'webkitAnimationEnd animationend';
+} else {
+  ANIMATION_PROP = 'animation';
+  ANIMATIONEND_EVENT = 'animationend';
+}
+
+var DURATION_KEY = 'Duration';
+var PROPERTY_KEY = 'Property';
+var DELAY_KEY = 'Delay';
+var TIMING_KEY = 'TimingFunction';
+var ANIMATION_ITERATION_COUNT_KEY = 'IterationCount';
+var ANIMATION_PLAYSTATE_KEY = 'PlayState';
+var SAFE_FAST_FORWARD_DURATION_VALUE = 9999;
+
+var ANIMATION_DELAY_PROP = ANIMATION_PROP + DELAY_KEY;
+var ANIMATION_DURATION_PROP = ANIMATION_PROP + DURATION_KEY;
+var TRANSITION_DELAY_PROP = TRANSITION_PROP + DELAY_KEY;
+var TRANSITION_DURATION_PROP = TRANSITION_PROP + DURATION_KEY;
+
+var isPromiseLike = function(p) {
+  return p && p.then ? true : false;
+};
+
+var ngMinErr = angular.$$minErr('ng');
+function assertArg(arg, name, reason) {
+  if (!arg) {
+    throw ngMinErr('areq', "Argument '{0}' is {1}", (name || '?'), (reason || "required"));
+  }
+  return arg;
+}
+
+function mergeClasses(a,b) {
+  if (!a && !b) return '';
+  if (!a) return b;
+  if (!b) return a;
+  if (isArray(a)) a = a.join(' ');
+  if (isArray(b)) b = b.join(' ');
+  return a + ' ' + b;
+}
+
+function packageStyles(options) {
+  var styles = {};
+  if (options && (options.to || options.from)) {
+    styles.to = options.to;
+    styles.from = options.from;
+  }
+  return styles;
+}
+
+function pendClasses(classes, fix, isPrefix) {
+  var className = '';
+  classes = isArray(classes)
+      ? classes
+      : classes && isString(classes) && classes.length
+          ? classes.split(/\s+/)
+          : [];
+  forEach(classes, function(klass, i) {
+    if (klass && klass.length > 0) {
+      className += (i > 0) ? ' ' : '';
+      className += isPrefix ? fix + klass
+                            : klass + fix;
+    }
+  });
+  return className;
+}
+
+function removeFromArray(arr, val) {
+  var index = arr.indexOf(val);
+  if (val >= 0) {
+    arr.splice(index, 1);
+  }
+}
+
+function stripCommentsFromElement(element) {
+  if (element instanceof jqLite) {
+    switch (element.length) {
+      case 0:
+        return element;
+        break;
+
+      case 1:
+        // there is no point of stripping anything if the element
+        // is the only element within the jqLite wrapper.
+        // (it's important that we retain the element instance.)
+        if (element[0].nodeType === ELEMENT_NODE) {
+          return element;
+        }
+        break;
+
+      default:
+        return jqLite(extractElementNode(element));
+        break;
+    }
+  }
+
+  if (element.nodeType === ELEMENT_NODE) {
+    return jqLite(element);
+  }
+}
+
+function extractElementNode(element) {
+  if (!element[0]) return element;
+  for (var i = 0; i < element.length; i++) {
+    var elm = element[i];
+    if (elm.nodeType == ELEMENT_NODE) {
+      return elm;
+    }
+  }
+}
+
+function $$addClass($$jqLite, element, className) {
+  forEach(element, function(elm) {
+    $$jqLite.addClass(elm, className);
+  });
+}
+
+function $$removeClass($$jqLite, element, className) {
+  forEach(element, function(elm) {
+    $$jqLite.removeClass(elm, className);
+  });
+}
+
+function applyAnimationClassesFactory($$jqLite) {
+  return function(element, options) {
+    if (options.addClass) {
+      $$addClass($$jqLite, element, options.addClass);
+      options.addClass = null;
+    }
+    if (options.removeClass) {
+      $$removeClass($$jqLite, element, options.removeClass);
+      options.removeClass = null;
+    }
+  }
+}
+
+function prepareAnimationOptions(options) {
+  options = options || {};
+  if (!options.$$prepared) {
+    var domOperation = options.domOperation || noop;
+    options.domOperation = function() {
+      options.$$domOperationFired = true;
+      domOperation();
+      domOperation = noop;
+    };
+    options.$$prepared = true;
+  }
+  return options;
+}
+
+function applyAnimationStyles(element, options) {
+  applyAnimationFromStyles(element, options);
+  applyAnimationToStyles(element, options);
+}
+
+function applyAnimationFromStyles(element, options) {
+  if (options.from) {
+    element.css(options.from);
+    options.from = null;
+  }
+}
+
+function applyAnimationToStyles(element, options) {
+  if (options.to) {
+    element.css(options.to);
+    options.to = null;
+  }
+}
+
+function mergeAnimationDetails(element, oldAnimation, newAnimation) {
+  var target = oldAnimation.options || {};
+  var newOptions = newAnimation.options || {};
+
+  var toAdd = (target.addClass || '') + ' ' + (newOptions.addClass || '');
+  var toRemove = (target.removeClass || '') + ' ' + (newOptions.removeClass || '');
+  var classes = resolveElementClasses(element.attr('class'), toAdd, toRemove);
+
+  if (newOptions.preparationClasses) {
+    target.preparationClasses = concatWithSpace(newOptions.preparationClasses, target.preparationClasses);
+    delete newOptions.preparationClasses;
+  }
+
+  // noop is basically when there is no callback; otherwise something has been set
+  var realDomOperation = target.domOperation !== noop ? target.domOperation : null;
+
+  extend(target, newOptions);
+
+  // TODO(matsko or sreeramu): proper fix is to maintain all animation callback in array and call at last,but now only leave has the callback so no issue with this.
+  if (realDomOperation) {
+    target.domOperation = realDomOperation;
+  }
+
+  if (classes.addClass) {
+    target.addClass = classes.addClass;
+  } else {
+    target.addClass = null;
+  }
+
+  if (classes.removeClass) {
+    target.removeClass = classes.removeClass;
+  } else {
+    target.removeClass = null;
+  }
+
+  oldAnimation.addClass = target.addClass;
+  oldAnimation.removeClass = target.removeClass;
+
+  return target;
+}
+
+function resolveElementClasses(existing, toAdd, toRemove) {
+  var ADD_CLASS = 1;
+  var REMOVE_CLASS = -1;
+
+  var flags = {};
+  existing = splitClassesToLookup(existing);
+
+  toAdd = splitClassesToLookup(toAdd);
+  forEach(toAdd, function(value, key) {
+    flags[key] = ADD_CLASS;
+  });
+
+  toRemove = splitClassesToLookup(toRemove);
+  forEach(toRemove, function(value, key) {
+    flags[key] = flags[key] === ADD_CLASS ? null : REMOVE_CLASS;
+  });
+
+  var classes = {
+    addClass: '',
+    removeClass: ''
+  };
+
+  forEach(flags, function(val, klass) {
+    var prop, allow;
+    if (val === ADD_CLASS) {
+      prop = 'addClass';
+      allow = !existing[klass];
+    } else if (val === REMOVE_CLASS) {
+      prop = 'removeClass';
+      allow = existing[klass];
+    }
+    if (allow) {
+      if (classes[prop].length) {
+        classes[prop] += ' ';
+      }
+      classes[prop] += klass;
+    }
+  });
+
+  function splitClassesToLookup(classes) {
+    if (isString(classes)) {
+      classes = classes.split(' ');
+    }
+
+    var obj = {};
+    forEach(classes, function(klass) {
+      // sometimes the split leaves empty string values
+      // incase extra spaces were applied to the options
+      if (klass.length) {
+        obj[klass] = true;
+      }
+    });
+    return obj;
+  }
+
+  return classes;
+}
+
+function getDomNode(element) {
+  return (element instanceof angular.element) ? element[0] : element;
+}
+
+function applyGeneratedPreparationClasses(element, event, options) {
+  var classes = '';
+  if (event) {
+    classes = pendClasses(event, EVENT_CLASS_PREFIX, true);
+  }
+  if (options.addClass) {
+    classes = concatWithSpace(classes, pendClasses(options.addClass, ADD_CLASS_SUFFIX));
+  }
+  if (options.removeClass) {
+    classes = concatWithSpace(classes, pendClasses(options.removeClass, REMOVE_CLASS_SUFFIX));
+  }
+  if (classes.length) {
+    options.preparationClasses = classes;
+    element.addClass(classes);
+  }
+}
+
+function clearGeneratedClasses(element, options) {
+  if (options.preparationClasses) {
+    element.removeClass(options.preparationClasses);
+    options.preparationClasses = null;
+  }
+  if (options.activeClasses) {
+    element.removeClass(options.activeClasses);
+    options.activeClasses = null;
+  }
+}
+
+function blockTransitions(node, duration) {
+  // we use a negative delay value since it performs blocking
+  // yet it doesn't kill any existing transitions running on the
+  // same element which makes this safe for class-based animations
+  var value = duration ? '-' + duration + 's' : '';
+  applyInlineStyle(node, [TRANSITION_DELAY_PROP, value]);
+  return [TRANSITION_DELAY_PROP, value];
+}
+
+function blockKeyframeAnimations(node, applyBlock) {
+  var value = applyBlock ? 'paused' : '';
+  var key = ANIMATION_PROP + ANIMATION_PLAYSTATE_KEY;
+  applyInlineStyle(node, [key, value]);
+  return [key, value];
+}
+
+function applyInlineStyle(node, styleTuple) {
+  var prop = styleTuple[0];
+  var value = styleTuple[1];
+  node.style[prop] = value;
+}
+
+function concatWithSpace(a,b) {
+  if (!a) return b;
+  if (!b) return a;
+  return a + ' ' + b;
+}
+
+var $$rAFSchedulerFactory = ['$$rAF', function($$rAF) {
+  var queue, cancelFn;
+
+  function scheduler(tasks) {
+    // we make a copy since RAFScheduler mutates the state
+    // of the passed in array variable and this would be difficult
+    // to track down on the outside code
+    queue = queue.concat(tasks);
+    nextTick();
+  }
+
+  queue = scheduler.queue = [];
+
+  /* waitUntilQuiet does two things:
+   * 1. It will run the FINAL `fn` value only when an uncanceled RAF has passed through
+   * 2. It will delay the next wave of tasks from running until the quiet `fn` has run.
+   *
+   * The motivation here is that animation code can request more time from the scheduler
+   * before the next wave runs. This allows for certain DOM properties such as classes to
+   * be resolved in time for the next animation to run.
+   */
+  scheduler.waitUntilQuiet = function(fn) {
+    if (cancelFn) cancelFn();
+
+    cancelFn = $$rAF(function() {
+      cancelFn = null;
+      fn();
+      nextTick();
+    });
+  };
+
+  return scheduler;
+
+  function nextTick() {
+    if (!queue.length) return;
+
+    var items = queue.shift();
+    for (var i = 0; i < items.length; i++) {
+      items[i]();
+    }
+
+    if (!cancelFn) {
+      $$rAF(function() {
+        if (!cancelFn) nextTick();
+      });
+    }
+  }
+}];
+
+/**
+ * @ngdoc directive
+ * @name ngAnimateChildren
+ * @restrict AE
+ * @element ANY
+ *
+ * @description
+ *
+ * ngAnimateChildren allows you to specify that children of this element should animate even if any
+ * of the children's parents are currently animating. By default, when an element has an active `enter`, `leave`, or `move`
+ * (structural) animation, child elements that also have an active structural animation are not animated.
+ *
+ * Note that even if `ngAnimteChildren` is set, no child animations will run when the parent element is removed from the DOM (`leave` animation).
+ *
+ *
+ * @param {string} ngAnimateChildren If the value is empty, `true` or `on`,
+ *     then child animations are allowed. If the value is `false`, child animations are not allowed.
+ *
+ * @example
+ * <example module="ngAnimateChildren" name="ngAnimateChildren" deps="angular-animate.js" animations="true">
+     <file name="index.html">
+       <div ng-controller="mainController as main">
+         <label>Show container? <input type="checkbox" ng-model="main.enterElement" /></label>
+         <label>Animate children? <input type="checkbox" ng-model="main.animateChildren" /></label>
+         <hr>
+         <div ng-animate-children="{{main.animateChildren}}">
+           <div ng-if="main.enterElement" class="container">
+             List of items:
+             <div ng-repeat="item in [0, 1, 2, 3]" class="item">Item {{item}}</div>
+           </div>
+         </div>
+       </div>
+     </file>
+     <file name="animations.css">
+
+      .container.ng-enter,
+      .container.ng-leave {
+        transition: all ease 1.5s;
+      }
+
+      .container.ng-enter,
+      .container.ng-leave-active {
+        opacity: 0;
+      }
+
+      .container.ng-leave,
+      .container.ng-enter-active {
+        opacity: 1;
+      }
+
+      .item {
+        background: firebrick;
+        color: #FFF;
+        margin-bottom: 10px;
+      }
+
+      .item.ng-enter,
+      .item.ng-leave {
+        transition: transform 1.5s ease;
+      }
+
+      .item.ng-enter {
+        transform: translateX(50px);
+      }
+
+      .item.ng-enter-active {
+        transform: translateX(0);
+      }
+    </file>
+    <file name="script.js">
+      angular.module('ngAnimateChildren', ['ngAnimate'])
+        .controller('mainController', function() {
+          this.animateChildren = false;
+          this.enterElement = false;
+        });
+    </file>
+  </example>
+ */
+var $$AnimateChildrenDirective = ['$interpolate', function($interpolate) {
+  return {
+    link: function(scope, element, attrs) {
+      var val = attrs.ngAnimateChildren;
+      if (angular.isString(val) && val.length === 0) { //empty attribute
+        element.data(NG_ANIMATE_CHILDREN_DATA, true);
+      } else {
+        // Interpolate and set the value, so that it is available to
+        // animations that run right after compilation
+        setData($interpolate(val)(scope));
+        attrs.$observe('ngAnimateChildren', setData);
+      }
+
+      function setData(value) {
+        value = value === 'on' || value === 'true';
+        element.data(NG_ANIMATE_CHILDREN_DATA, value);
+      }
+    }
+  };
+}];
+
+var ANIMATE_TIMER_KEY = '$$animateCss';
+
+/**
+ * @ngdoc service
+ * @name $animateCss
+ * @kind object
+ *
+ * @description
+ * The `$animateCss` service is a useful utility to trigger customized CSS-based transitions/keyframes
+ * from a JavaScript-based animation or directly from a directive. The purpose of `$animateCss` is NOT
+ * to side-step how `$animate` and ngAnimate work, but the goal is to allow pre-existing animations or
+ * directives to create more complex animations that can be purely driven using CSS code.
+ *
+ * Note that only browsers that support CSS transitions and/or keyframe animations are capable of
+ * rendering animations triggered via `$animateCss` (bad news for IE9 and lower).
+ *
+ * ## Usage
+ * Once again, `$animateCss` is designed to be used inside of a registered JavaScript animation that
+ * is powered by ngAnimate. It is possible to use `$animateCss` directly inside of a directive, however,
+ * any automatic control over cancelling animations and/or preventing animations from being run on
+ * child elements will not be handled by Angular. For this to work as expected, please use `$animate` to
+ * trigger the animation and then setup a JavaScript animation that injects `$animateCss` to trigger
+ * the CSS animation.
+ *
+ * The example below shows how we can create a folding animation on an element using `ng-if`:
+ *
+ * ```html
+ * <!-- notice the `fold-animation` CSS class -->
+ * <div ng-if="onOff" class="fold-animation">
+ *   This element will go BOOM
+ * </div>
+ * <button ng-click="onOff=true">Fold In</button>
+ * ```
+ *
+ * Now we create the **JavaScript animation** that will trigger the CSS transition:
+ *
+ * ```js
+ * ngModule.animation('.fold-animation', ['$animateCss', function($animateCss) {
+ *   return {
+ *     enter: function(element, doneFn) {
+ *       var height = element[0].offsetHeight;
+ *       return $animateCss(element, {
+ *         from: { height:'0px' },
+ *         to: { height:height + 'px' },
+ *         duration: 1 // one second
+ *       });
+ *     }
+ *   }
+ * }]);
+ * ```
+ *
+ * ## More Advanced Uses
+ *
+ * `$animateCss` is the underlying code that ngAnimate uses to power **CSS-based animations** behind the scenes. Therefore CSS hooks
+ * like `.ng-EVENT`, `.ng-EVENT-active`, `.ng-EVENT-stagger` are all features that can be triggered using `$animateCss` via JavaScript code.
+ *
+ * This also means that just about any combination of adding classes, removing classes, setting styles, dynamically setting a keyframe animation,
+ * applying a hardcoded duration or delay value, changing the animation easing or applying a stagger animation are all options that work with
+ * `$animateCss`. The service itself is smart enough to figure out the combination of options and examine the element styling properties in order
+ * to provide a working animation that will run in CSS.
+ *
+ * The example below showcases a more advanced version of the `.fold-animation` from the example above:
+ *
+ * ```js
+ * ngModule.animation('.fold-animation', ['$animateCss', function($animateCss) {
+ *   return {
+ *     enter: function(element, doneFn) {
+ *       var height = element[0].offsetHeight;
+ *       return $animateCss(element, {
+ *         addClass: 'red large-text pulse-twice',
+ *         easing: 'ease-out',
+ *         from: { height:'0px' },
+ *         to: { height:height + 'px' },
+ *         duration: 1 // one second
+ *       });
+ *     }
+ *   }
+ * }]);
+ * ```
+ *
+ * Since we're adding/removing CSS classes then the CSS transition will also pick those up:
+ *
+ * ```css
+ * /&#42; since a hardcoded duration value of 1 was provided in the JavaScript animation code,
+ * the CSS classes below will be transitioned despite them being defined as regular CSS classes &#42;/
+ * .red { background:red; }
+ * .large-text { font-size:20px; }
+ *
+ * /&#42; we can also use a keyframe animation and $animateCss will make it work alongside the transition &#42;/
+ * .pulse-twice {
+ *   animation: 0.5s pulse linear 2;
+ *   -webkit-animation: 0.5s pulse linear 2;
+ * }
+ *
+ * @keyframes pulse {
+ *   from { transform: scale(0.5); }
+ *   to { transform: scale(1.5); }
+ * }
+ *
+ * @-webkit-keyframes pulse {
+ *   from { -webkit-transform: scale(0.5); }
+ *   to { -webkit-transform: scale(1.5); }
+ * }
+ * ```
+ *
+ * Given this complex combination of CSS classes, styles and options, `$animateCss` will figure everything out and make the animation happen.
+ *
+ * ## How the Options are handled
+ *
+ * `$animateCss` is very versatile and intelligent when it comes to figuring out what configurations to apply to the element to ensure the animation
+ * works with the options provided. Say for example we were adding a class that contained a keyframe value and we wanted to also animate some inline
+ * styles using the `from` and `to` properties.
+ *
+ * ```js
+ * var animator = $animateCss(element, {
+ *   from: { background:'red' },
+ *   to: { background:'blue' }
+ * });
+ * animator.start();
+ * ```
+ *
+ * ```css
+ * .rotating-animation {
+ *   animation:0.5s rotate linear;
+ *   -webkit-animation:0.5s rotate linear;
+ * }
+ *
+ * @keyframes rotate {
+ *   from { transform: rotate(0deg); }
+ *   to { transform: rotate(360deg); }
+ * }
+ *
+ * @-webkit-keyframes rotate {
+ *   from { -webkit-transform: rotate(0deg); }
+ *   to { -webkit-transform: rotate(360deg); }
+ * }
+ * ```
+ *
+ * The missing pieces here are that we do not have a transition set (within the CSS code nor within the `$animateCss` options) and the duration of the animation is
+ * going to be detected from what the keyframe styles on the CSS class are. In this event, `$animateCss` will automatically create an inline transition
+ * style matching the duration detected from the keyframe style (which is present in the CSS class that is being added) and then prepare both the transition
+ * and keyframe animations to run in parallel on the element. Then when the animation is underway the provided `from` and `to` CSS styles will be applied
+ * and spread across the transition and keyframe animation.
+ *
+ * ## What is returned
+ *
+ * `$animateCss` works in two stages: a preparation phase and an animation phase. Therefore when `$animateCss` is first called it will NOT actually
+ * start the animation. All that is going on here is that the element is being prepared for the animation (which means that the generated CSS classes are
+ * added and removed on the element). Once `$animateCss` is called it will return an object with the following properties:
+ *
+ * ```js
+ * var animator = $animateCss(element, { ... });
+ * ```
+ *
+ * Now what do the contents of our `animator` variable look like:
+ *
+ * ```js
+ * {
+ *   // starts the animation
+ *   start: Function,
+ *
+ *   // ends (aborts) the animation
+ *   end: Function
+ * }
+ * ```
+ *
+ * To actually start the animation we need to run `animation.start()` which will then return a promise that we can hook into to detect when the animation ends.
+ * If we choose not to run the animation then we MUST run `animation.end()` to perform a cleanup on the element (since some CSS classes and styles may have been
+ * applied to the element during the preparation phase). Note that all other properties such as duration, delay, transitions and keyframes are just properties
+ * and that changing them will not reconfigure the parameters of the animation.
+ *
+ * ### runner.done() vs runner.then()
+ * It is documented that `animation.start()` will return a promise object and this is true, however, there is also an additional method available on the
+ * runner called `.done(callbackFn)`. The done method works the same as `.finally(callbackFn)`, however, it does **not trigger a digest to occur**.
+ * Therefore, for performance reasons, it's always best to use `runner.done(callback)` instead of `runner.then()`, `runner.catch()` or `runner.finally()`
+ * unless you really need a digest to kick off afterwards.
+ *
+ * Keep in mind that, to make this easier, ngAnimate has tweaked the JS animations API to recognize when a runner instance is returned from $animateCss
+ * (so there is no need to call `runner.done(doneFn)` inside of your JavaScript animation code).
+ * Check the {@link ngAnimate.$animateCss#usage animation code above} to see how this works.
+ *
+ * @param {DOMElement} element the element that will be animated
+ * @param {object} options the animation-related options that will be applied during the animation
+ *
+ * * `event` - The DOM event (e.g. enter, leave, move). When used, a generated CSS class of `ng-EVENT` and `ng-EVENT-active` will be applied
+ * to the element during the animation. Multiple events can be provided when spaces are used as a separator. (Note that this will not perform any DOM operation.)
+ * * `structural` - Indicates that the `ng-` prefix will be added to the event class. Setting to `false` or omitting will turn `ng-EVENT` and
+ * `ng-EVENT-active` in `EVENT` and `EVENT-active`. Unused if `event` is omitted.
+ * * `easing` - The CSS easing value that will be applied to the transition or keyframe animation (or both).
+ * * `transitionStyle` - The raw CSS transition style that will be used (e.g. `1s linear all`).
+ * * `keyframeStyle` - The raw CSS keyframe animation style that will be used (e.g. `1s my_animation linear`).
+ * * `from` - The starting CSS styles (a key/value object) that will be applied at the start of the animation.
+ * * `to` - The ending CSS styles (a key/value object) that will be applied across the animation via a CSS transition.
+ * * `addClass` - A space separated list of CSS classes that will be added to the element and spread across the animation.
+ * * `removeClass` - A space separated list of CSS classes that will be removed from the element and spread across the animation.
+ * * `duration` - A number value representing the total duration of the transition and/or keyframe (note that a value of 1 is 1000ms). If a value of `0`
+ * is provided then the animation will be skipped entirely.
+ * * `delay` - A number value representing the total delay of the transition and/or keyframe (note that a value of 1 is 1000ms). If a value of `true` is
+ * used then whatever delay value is detected from the CSS classes will be mirrored on the elements styles (e.g. by setting delay true then the style value
+ * of the element will be `transition-delay: DETECTED_VALUE`). Using `true` is useful when you want the CSS classes and inline styles to all share the same
+ * CSS delay value.
+ * * `stagger` - A numeric time value representing the delay between successively animated elements
+ * ({@link ngAnimate#css-staggering-animations Click here to learn how CSS-based staggering works in ngAnimate.})
+ * * `staggerIndex` - The numeric index representing the stagger item (e.g. a value of 5 is equal to the sixth item in the stagger; therefore when a
+ *   `stagger` option value of `0.1` is used then there will be a stagger delay of `600ms`)
+ * * `applyClassesEarly` - Whether or not the classes being added or removed will be used when detecting the animation. This is set by `$animate` when enter/leave/move animations are fired to ensure that the CSS classes are resolved in time. (Note that this will prevent any transitions from occurring on the classes being added and removed.)
+ * * `cleanupStyles` - Whether or not the provided `from` and `to` styles will be removed once
+ *    the animation is closed. This is useful for when the styles are used purely for the sake of
+ *    the animation and do not have a lasting visual effect on the element (e.g. a collapse and open animation).
+ *    By default this value is set to `false`.
+ *
+ * @return {object} an object with start and end methods and details about the animation.
+ *
+ * * `start` - The method to start the animation. This will return a `Promise` when called.
+ * * `end` - This method will cancel the animation and remove all applied CSS classes and styles.
+ */
+var ONE_SECOND = 1000;
+var BASE_TEN = 10;
+
+var ELAPSED_TIME_MAX_DECIMAL_PLACES = 3;
+var CLOSING_TIME_BUFFER = 1.5;
+
+var DETECT_CSS_PROPERTIES = {
+  transitionDuration:      TRANSITION_DURATION_PROP,
+  transitionDelay:         TRANSITION_DELAY_PROP,
+  transitionProperty:      TRANSITION_PROP + PROPERTY_KEY,
+  animationDuration:       ANIMATION_DURATION_PROP,
+  animationDelay:          ANIMATION_DELAY_PROP,
+  animationIterationCount: ANIMATION_PROP + ANIMATION_ITERATION_COUNT_KEY
+};
+
+var DETECT_STAGGER_CSS_PROPERTIES = {
+  transitionDuration:      TRANSITION_DURATION_PROP,
+  transitionDelay:         TRANSITION_DELAY_PROP,
+  animationDuration:       ANIMATION_DURATION_PROP,
+  animationDelay:          ANIMATION_DELAY_PROP
+};
+
+function getCssKeyframeDurationStyle(duration) {
+  return [ANIMATION_DURATION_PROP, duration + 's'];
+}
+
+function getCssDelayStyle(delay, isKeyframeAnimation) {
+  var prop = isKeyframeAnimation ? ANIMATION_DELAY_PROP : TRANSITION_DELAY_PROP;
+  return [prop, delay + 's'];
+}
+
+function computeCssStyles($window, element, properties) {
+  var styles = Object.create(null);
+  var detectedStyles = $window.getComputedStyle(element) || {};
+  forEach(properties, function(formalStyleName, actualStyleName) {
+    var val = detectedStyles[formalStyleName];
+    if (val) {
+      var c = val.charAt(0);
+
+      // only numerical-based values have a negative sign or digit as the first value
+      if (c === '-' || c === '+' || c >= 0) {
+        val = parseMaxTime(val);
+      }
+
+      // by setting this to null in the event that the delay is not set or is set directly as 0
+      // then we can still allow for negative values to be used later on and not mistake this
+      // value for being greater than any other negative value.
+      if (val === 0) {
+        val = null;
+      }
+      styles[actualStyleName] = val;
+    }
+  });
+
+  return styles;
+}
+
+function parseMaxTime(str) {
+  var maxValue = 0;
+  var values = str.split(/\s*,\s*/);
+  forEach(values, function(value) {
+    // it's always safe to consider only second values and omit `ms` values since
+    // getComputedStyle will always handle the conversion for us
+    if (value.charAt(value.length - 1) == 's') {
+      value = value.substring(0, value.length - 1);
+    }
+    value = parseFloat(value) || 0;
+    maxValue = maxValue ? Math.max(value, maxValue) : value;
+  });
+  return maxValue;
+}
+
+function truthyTimingValue(val) {
+  return val === 0 || val != null;
+}
+
+function getCssTransitionDurationStyle(duration, applyOnlyDuration) {
+  var style = TRANSITION_PROP;
+  var value = duration + 's';
+  if (applyOnlyDuration) {
+    style += DURATION_KEY;
+  } else {
+    value += ' linear all';
+  }
+  return [style, value];
+}
+
+function createLocalCacheLookup() {
+  var cache = Object.create(null);
+  return {
+    flush: function() {
+      cache = Object.create(null);
+    },
+
+    count: function(key) {
+      var entry = cache[key];
+      return entry ? entry.total : 0;
+    },
+
+    get: function(key) {
+      var entry = cache[key];
+      return entry && entry.value;
+    },
+
+    put: function(key, value) {
+      if (!cache[key]) {
+        cache[key] = { total: 1, value: value };
+      } else {
+        cache[key].total++;
+      }
+    }
+  };
+}
+
+// we do not reassign an already present style value since
+// if we detect the style property value again we may be
+// detecting styles that were added via the `from` styles.
+// We make use of `isDefined` here since an empty string
+// or null value (which is what getPropertyValue will return
+// for a non-existing style) will still be marked as a valid
+// value for the style (a falsy value implies that the style
+// is to be removed at the end of the animation). If we had a simple
+// "OR" statement then it would not be enough to catch that.
+function registerRestorableStyles(backup, node, properties) {
+  forEach(properties, function(prop) {
+    backup[prop] = isDefined(backup[prop])
+        ? backup[prop]
+        : node.style.getPropertyValue(prop);
+  });
+}
+
+var $AnimateCssProvider = ['$animateProvider', function($animateProvider) {
+  var gcsLookup = createLocalCacheLookup();
+  var gcsStaggerLookup = createLocalCacheLookup();
+
+  this.$get = ['$window', '$$jqLite', '$$AnimateRunner', '$timeout',
+               '$$forceReflow', '$sniffer', '$$rAFScheduler', '$$animateQueue',
+       function($window,   $$jqLite,   $$AnimateRunner,   $timeout,
+                $$forceReflow,   $sniffer,   $$rAFScheduler, $$animateQueue) {
+
+    var applyAnimationClasses = applyAnimationClassesFactory($$jqLite);
+
+    var parentCounter = 0;
+    function gcsHashFn(node, extraClasses) {
+      var KEY = "$$ngAnimateParentKey";
+      var parentNode = node.parentNode;
+      var parentID = parentNode[KEY] || (parentNode[KEY] = ++parentCounter);
+      return parentID + '-' + node.getAttribute('class') + '-' + extraClasses;
+    }
+
+    function computeCachedCssStyles(node, className, cacheKey, properties) {
+      var timings = gcsLookup.get(cacheKey);
+
+      if (!timings) {
+        timings = computeCssStyles($window, node, properties);
+        if (timings.animationIterationCount === 'infinite') {
+          timings.animationIterationCount = 1;
+        }
+      }
+
+      // we keep putting this in multiple times even though the value and the cacheKey are the same
+      // because we're keeping an internal tally of how many duplicate animations are detected.
+      gcsLookup.put(cacheKey, timings);
+      return timings;
+    }
+
+    function computeCachedCssStaggerStyles(node, className, cacheKey, properties) {
+      var stagger;
+
+      // if we have one or more existing matches of matching elements
+      // containing the same parent + CSS styles (which is how cacheKey works)
+      // then staggering is possible
+      if (gcsLookup.count(cacheKey) > 0) {
+        stagger = gcsStaggerLookup.get(cacheKey);
+
+        if (!stagger) {
+          var staggerClassName = pendClasses(className, '-stagger');
+
+          $$jqLite.addClass(node, staggerClassName);
+
+          stagger = computeCssStyles($window, node, properties);
+
+          // force the conversion of a null value to zero incase not set
+          stagger.animationDuration = Math.max(stagger.animationDuration, 0);
+          stagger.transitionDuration = Math.max(stagger.transitionDuration, 0);
+
+          $$jqLite.removeClass(node, staggerClassName);
+
+          gcsStaggerLookup.put(cacheKey, stagger);
+        }
+      }
+
+      return stagger || {};
+    }
+
+    var cancelLastRAFRequest;
+    var rafWaitQueue = [];
+    function waitUntilQuiet(callback) {
+      rafWaitQueue.push(callback);
+      $$rAFScheduler.waitUntilQuiet(function() {
+        gcsLookup.flush();
+        gcsStaggerLookup.flush();
+
+        // DO NOT REMOVE THIS LINE OR REFACTOR OUT THE `pageWidth` variable.
+        // PLEASE EXAMINE THE `$$forceReflow` service to understand why.
+        var pageWidth = $$forceReflow();
+
+        // we use a for loop to ensure that if the queue is changed
+        // during this looping then it will consider new requests
+        for (var i = 0; i < rafWaitQueue.length; i++) {
+          rafWaitQueue[i](pageWidth);
+        }
+        rafWaitQueue.length = 0;
+      });
+    }
+
+    function computeTimings(node, className, cacheKey) {
+      var timings = computeCachedCssStyles(node, className, cacheKey, DETECT_CSS_PROPERTIES);
+      var aD = timings.animationDelay;
+      var tD = timings.transitionDelay;
+      timings.maxDelay = aD && tD
+          ? Math.max(aD, tD)
+          : (aD || tD);
+      timings.maxDuration = Math.max(
+          timings.animationDuration * timings.animationIterationCount,
+          timings.transitionDuration);
+
+      return timings;
+    }
+
+    return function init(element, initialOptions) {
+      // all of the animation functions should create
+      // a copy of the options data, however, if a
+      // parent service has already created a copy then
+      // we should stick to using that
+      var options = initialOptions || {};
+      if (!options.$$prepared) {
+        options = prepareAnimationOptions(copy(options));
+      }
+
+      var restoreStyles = {};
+      var node = getDomNode(element);
+      if (!node
+          || !node.parentNode
+          || !$$animateQueue.enabled()) {
+        return closeAndReturnNoopAnimator();
+      }
+
+      var temporaryStyles = [];
+      var classes = element.attr('class');
+      var styles = packageStyles(options);
+      var animationClosed;
+      var animationPaused;
+      var animationCompleted;
+      var runner;
+      var runnerHost;
+      var maxDelay;
+      var maxDelayTime;
+      var maxDuration;
+      var maxDurationTime;
+      var startTime;
+      var events = [];
+
+      if (options.duration === 0 || (!$sniffer.animations && !$sniffer.transitions)) {
+        return closeAndReturnNoopAnimator();
+      }
+
+      var method = options.event && isArray(options.event)
+            ? options.event.join(' ')
+            : options.event;
+
+      var isStructural = method && options.structural;
+      var structuralClassName = '';
+      var addRemoveClassName = '';
+
+      if (isStructural) {
+        structuralClassName = pendClasses(method, EVENT_CLASS_PREFIX, true);
+      } else if (method) {
+        structuralClassName = method;
+      }
+
+      if (options.addClass) {
+        addRemoveClassName += pendClasses(options.addClass, ADD_CLASS_SUFFIX);
+      }
+
+      if (options.removeClass) {
+        if (addRemoveClassName.length) {
+          addRemoveClassName += ' ';
+        }
+        addRemoveClassName += pendClasses(options.removeClass, REMOVE_CLASS_SUFFIX);
+      }
+
+      // there may be a situation where a structural animation is combined together
+      // with CSS classes that need to resolve before the animation is computed.
+      // However this means that there is no explicit CSS code to block the animation
+      // from happening (by setting 0s none in the class name). If this is the case
+      // we need to apply the classes before the first rAF so we know to continue if
+      // there actually is a detected transition or keyframe animation
+      if (options.applyClassesEarly && addRemoveClassName.length) {
+        applyAnimationClasses(element, options);
+      }
+
+      var preparationClasses = [structuralClassName, addRemoveClassName].join(' ').trim();
+      var fullClassName = classes + ' ' + preparationClasses;
+      var activeClasses = pendClasses(preparationClasses, ACTIVE_CLASS_SUFFIX);
+      var hasToStyles = styles.to && Object.keys(styles.to).length > 0;
+      var containsKeyframeAnimation = (options.keyframeStyle || '').length > 0;
+
+      // there is no way we can trigger an animation if no styles and
+      // no classes are being applied which would then trigger a transition,
+      // unless there a is raw keyframe value that is applied to the element.
+      if (!containsKeyframeAnimation
+           && !hasToStyles
+           && !preparationClasses) {
+        return closeAndReturnNoopAnimator();
+      }
+
+      var cacheKey, stagger;
+      if (options.stagger > 0) {
+        var staggerVal = parseFloat(options.stagger);
+        stagger = {
+          transitionDelay: staggerVal,
+          animationDelay: staggerVal,
+          transitionDuration: 0,
+          animationDuration: 0
+        };
+      } else {
+        cacheKey = gcsHashFn(node, fullClassName);
+        stagger = computeCachedCssStaggerStyles(node, preparationClasses, cacheKey, DETECT_STAGGER_CSS_PROPERTIES);
+      }
+
+      if (!options.$$skipPreparationClasses) {
+        $$jqLite.addClass(element, preparationClasses);
+      }
+
+      var applyOnlyDuration;
+
+      if (options.transitionStyle) {
+        var transitionStyle = [TRANSITION_PROP, options.transitionStyle];
+        applyInlineStyle(node, transitionStyle);
+        temporaryStyles.push(transitionStyle);
+      }
+
+      if (options.duration >= 0) {
+        applyOnlyDuration = node.style[TRANSITION_PROP].length > 0;
+        var durationStyle = getCssTransitionDurationStyle(options.duration, applyOnlyDuration);
+
+        // we set the duration so that it will be picked up by getComputedStyle later
+        applyInlineStyle(node, durationStyle);
+        temporaryStyles.push(durationStyle);
+      }
+
+      if (options.keyframeStyle) {
+        var keyframeStyle = [ANIMATION_PROP, options.keyframeStyle];
+        applyInlineStyle(node, keyframeStyle);
+        temporaryStyles.push(keyframeStyle);
+      }
+
+      var itemIndex = stagger
+          ? options.staggerIndex >= 0
+              ? options.staggerIndex
+              : gcsLookup.count(cacheKey)
+          : 0;
+
+      var isFirst = itemIndex === 0;
+
+      // this is a pre-emptive way of forcing the setup classes to be added and applied INSTANTLY
+      // without causing any combination of transitions to kick in. By adding a negative delay value
+      // it forces the setup class' transition to end immediately. We later then remove the negative
+      // transition delay to allow for the transition to naturally do it's thing. The beauty here is
+      // that if there is no transition defined then nothing will happen and this will also allow
+      // other transitions to be stacked on top of each other without any chopping them out.
+      if (isFirst && !options.skipBlocking) {
+        blockTransitions(node, SAFE_FAST_FORWARD_DURATION_VALUE);
+      }
+
+      var timings = computeTimings(node, fullClassName, cacheKey);
+      var relativeDelay = timings.maxDelay;
+      maxDelay = Math.max(relativeDelay, 0);
+      maxDuration = timings.maxDuration;
+
+      var flags = {};
+      flags.hasTransitions          = timings.transitionDuration > 0;
+      flags.hasAnimations           = timings.animationDuration > 0;
+      flags.hasTransitionAll        = flags.hasTransitions && timings.transitionProperty == 'all';
+      flags.applyTransitionDuration = hasToStyles && (
+                                        (flags.hasTransitions && !flags.hasTransitionAll)
+                                         || (flags.hasAnimations && !flags.hasTransitions));
+      flags.applyAnimationDuration  = options.duration && flags.hasAnimations;
+      flags.applyTransitionDelay    = truthyTimingValue(options.delay) && (flags.applyTransitionDuration || flags.hasTransitions);
+      flags.applyAnimationDelay     = truthyTimingValue(options.delay) && flags.hasAnimations;
+      flags.recalculateTimingStyles = addRemoveClassName.length > 0;
+
+      if (flags.applyTransitionDuration || flags.applyAnimationDuration) {
+        maxDuration = options.duration ? parseFloat(options.duration) : maxDuration;
+
+        if (flags.applyTransitionDuration) {
+          flags.hasTransitions = true;
+          timings.transitionDuration = maxDuration;
+          applyOnlyDuration = node.style[TRANSITION_PROP + PROPERTY_KEY].length > 0;
+          temporaryStyles.push(getCssTransitionDurationStyle(maxDuration, applyOnlyDuration));
+        }
+
+        if (flags.applyAnimationDuration) {
+          flags.hasAnimations = true;
+          timings.animationDuration = maxDuration;
+          temporaryStyles.push(getCssKeyframeDurationStyle(maxDuration));
+        }
+      }
+
+      if (maxDuration === 0 && !flags.recalculateTimingStyles) {
+        return closeAndReturnNoopAnimator();
+      }
+
+      if (options.delay != null) {
+        var delayStyle;
+        if (typeof options.delay !== "boolean") {
+          delayStyle = parseFloat(options.delay);
+          // number in options.delay means we have to recalculate the delay for the closing timeout
+          maxDelay = Math.max(delayStyle, 0);
+        }
+
+        if (flags.applyTransitionDelay) {
+          temporaryStyles.push(getCssDelayStyle(delayStyle));
+        }
+
+        if (flags.applyAnimationDelay) {
+          temporaryStyles.push(getCssDelayStyle(delayStyle, true));
+        }
+      }
+
+      // we need to recalculate the delay value since we used a pre-emptive negative
+      // delay value and the delay value is required for the final event checking. This
+      // property will ensure that this will happen after the RAF phase has passed.
+      if (options.duration == null && timings.transitionDuration > 0) {
+        flags.recalculateTimingStyles = flags.recalculateTimingStyles || isFirst;
+      }
+
+      maxDelayTime = maxDelay * ONE_SECOND;
+      maxDurationTime = maxDuration * ONE_SECOND;
+      if (!options.skipBlocking) {
+        flags.blockTransition = timings.transitionDuration > 0;
+        flags.blockKeyframeAnimation = timings.animationDuration > 0 &&
+                                       stagger.animationDelay > 0 &&
+                                       stagger.animationDuration === 0;
+      }
+
+      if (options.from) {
+        if (options.cleanupStyles) {
+          registerRestorableStyles(restoreStyles, node, Object.keys(options.from));
+        }
+        applyAnimationFromStyles(element, options);
+      }
+
+      if (flags.blockTransition || flags.blockKeyframeAnimation) {
+        applyBlocking(maxDuration);
+      } else if (!options.skipBlocking) {
+        blockTransitions(node, false);
+      }
+
+      // TODO(matsko): for 1.5 change this code to have an animator object for better debugging
+      return {
+        $$willAnimate: true,
+        end: endFn,
+        start: function() {
+          if (animationClosed) return;
+
+          runnerHost = {
+            end: endFn,
+            cancel: cancelFn,
+            resume: null, //this will be set during the start() phase
+            pause: null
+          };
+
+          runner = new $$AnimateRunner(runnerHost);
+
+          waitUntilQuiet(start);
+
+          // we don't have access to pause/resume the animation
+          // since it hasn't run yet. AnimateRunner will therefore
+          // set noop functions for resume and pause and they will
+          // later be overridden once the animation is triggered
+          return runner;
+        }
+      };
+
+      function endFn() {
+        close();
+      }
+
+      function cancelFn() {
+        close(true);
+      }
+
+      function close(rejected) { // jshint ignore:line
+        // if the promise has been called already then we shouldn't close
+        // the animation again
+        if (animationClosed || (animationCompleted && animationPaused)) return;
+        animationClosed = true;
+        animationPaused = false;
+
+        if (!options.$$skipPreparationClasses) {
+          $$jqLite.removeClass(element, preparationClasses);
+        }
+        $$jqLite.removeClass(element, activeClasses);
+
+        blockKeyframeAnimations(node, false);
+        blockTransitions(node, false);
+
+        forEach(temporaryStyles, function(entry) {
+          // There is only one way to remove inline style properties entirely from elements.
+          // By using `removeProperty` this works, but we need to convert camel-cased CSS
+          // styles down to hyphenated values.
+          node.style[entry[0]] = '';
+        });
+
+        applyAnimationClasses(element, options);
+        applyAnimationStyles(element, options);
+
+        if (Object.keys(restoreStyles).length) {
+          forEach(restoreStyles, function(value, prop) {
+            value ? node.style.setProperty(prop, value)
+                  : node.style.removeProperty(prop);
+          });
+        }
+
+        // the reason why we have this option is to allow a synchronous closing callback
+        // that is fired as SOON as the animation ends (when the CSS is removed) or if
+        // the animation never takes off at all. A good example is a leave animation since
+        // the element must be removed just after the animation is over or else the element
+        // will appear on screen for one animation frame causing an overbearing flicker.
+        if (options.onDone) {
+          options.onDone();
+        }
+
+        if (events && events.length) {
+          // Remove the transitionend / animationend listener(s)
+          element.off(events.join(' '), onAnimationProgress);
+        }
+
+        //Cancel the fallback closing timeout and remove the timer data
+        var animationTimerData = element.data(ANIMATE_TIMER_KEY);
+        if (animationTimerData) {
+          $timeout.cancel(animationTimerData[0].timer);
+          element.removeData(ANIMATE_TIMER_KEY);
+        }
+
+        // if the preparation function fails then the promise is not setup
+        if (runner) {
+          runner.complete(!rejected);
+        }
+      }
+
+      function applyBlocking(duration) {
+        if (flags.blockTransition) {
+          blockTransitions(node, duration);
+        }
+
+        if (flags.blockKeyframeAnimation) {
+          blockKeyframeAnimations(node, !!duration);
+        }
+      }
+
+      function closeAndReturnNoopAnimator() {
+        runner = new $$AnimateRunner({
+          end: endFn,
+          cancel: cancelFn
+        });
+
+        // should flush the cache animation
+        waitUntilQuiet(noop);
+        close();
+
+        return {
+          $$willAnimate: false,
+          start: function() {
+            return runner;
+          },
+          end: endFn
+        };
+      }
+
+      function onAnimationProgress(event) {
+        event.stopPropagation();
+        var ev = event.originalEvent || event;
+
+        // we now always use `Date.now()` due to the recent changes with
+        // event.timeStamp in Firefox, Webkit and Chrome (see #13494 for more info)
+        var timeStamp = ev.$manualTimeStamp || Date.now();
+
+        /* Firefox (or possibly just Gecko) likes to not round values up
+         * when a ms measurement is used for the animation */
+        var elapsedTime = parseFloat(ev.elapsedTime.toFixed(ELAPSED_TIME_MAX_DECIMAL_PLACES));
+
+        /* $manualTimeStamp is a mocked timeStamp value which is set
+         * within browserTrigger(). This is only here so that tests can
+         * mock animations properly. Real events fallback to event.timeStamp,
+         * or, if they don't, then a timeStamp is automatically created for them.
+         * We're checking to see if the timeStamp surpasses the expected delay,
+         * but we're using elapsedTime instead of the timeStamp on the 2nd
+         * pre-condition since animationPauseds sometimes close off early */
+        if (Math.max(timeStamp - startTime, 0) >= maxDelayTime && elapsedTime >= maxDuration) {
+          // we set this flag to ensure that if the transition is paused then, when resumed,
+          // the animation will automatically close itself since transitions cannot be paused.
+          animationCompleted = true;
+          close();
+        }
+      }
+
+      function start() {
+        if (animationClosed) return;
+        if (!node.parentNode) {
+          close();
+          return;
+        }
+
+        // even though we only pause keyframe animations here the pause flag
+        // will still happen when transitions are used. Only the transition will
+        // not be paused since that is not possible. If the animation ends when
+        // paused then it will not complete until unpaused or cancelled.
+        var playPause = function(playAnimation) {
+          if (!animationCompleted) {
+            animationPaused = !playAnimation;
+            if (timings.animationDuration) {
+              var value = blockKeyframeAnimations(node, animationPaused);
+              animationPaused
+                  ? temporaryStyles.push(value)
+                  : removeFromArray(temporaryStyles, value);
+            }
+          } else if (animationPaused && playAnimation) {
+            animationPaused = false;
+            close();
+          }
+        };
+
+        // checking the stagger duration prevents an accidentally cascade of the CSS delay style
+        // being inherited from the parent. If the transition duration is zero then we can safely
+        // rely that the delay value is an intentional stagger delay style.
+        var maxStagger = itemIndex > 0
+                         && ((timings.transitionDuration && stagger.transitionDuration === 0) ||
+                            (timings.animationDuration && stagger.animationDuration === 0))
+                         && Math.max(stagger.animationDelay, stagger.transitionDelay);
+        if (maxStagger) {
+          $timeout(triggerAnimationStart,
+                   Math.floor(maxStagger * itemIndex * ONE_SECOND),
+                   false);
+        } else {
+          triggerAnimationStart();
+        }
+
+        // this will decorate the existing promise runner with pause/resume methods
+        runnerHost.resume = function() {
+          playPause(true);
+        };
+
+        runnerHost.pause = function() {
+          playPause(false);
+        };
+
+        function triggerAnimationStart() {
+          // just incase a stagger animation kicks in when the animation
+          // itself was cancelled entirely
+          if (animationClosed) return;
+
+          applyBlocking(false);
+
+          forEach(temporaryStyles, function(entry) {
+            var key = entry[0];
+            var value = entry[1];
+            node.style[key] = value;
+          });
+
+          applyAnimationClasses(element, options);
+          $$jqLite.addClass(element, activeClasses);
+
+          if (flags.recalculateTimingStyles) {
+            fullClassName = node.className + ' ' + preparationClasses;
+            cacheKey = gcsHashFn(node, fullClassName);
+
+            timings = computeTimings(node, fullClassName, cacheKey);
+            relativeDelay = timings.maxDelay;
+            maxDelay = Math.max(relativeDelay, 0);
+            maxDuration = timings.maxDuration;
+
+            if (maxDuration === 0) {
+              close();
+              return;
+            }
+
+            flags.hasTransitions = timings.transitionDuration > 0;
+            flags.hasAnimations = timings.animationDuration > 0;
+          }
+
+          if (flags.applyAnimationDelay) {
+            relativeDelay = typeof options.delay !== "boolean" && truthyTimingValue(options.delay)
+                  ? parseFloat(options.delay)
+                  : relativeDelay;
+
+            maxDelay = Math.max(relativeDelay, 0);
+            timings.animationDelay = relativeDelay;
+            delayStyle = getCssDelayStyle(relativeDelay, true);
+            temporaryStyles.push(delayStyle);
+            node.style[delayStyle[0]] = delayStyle[1];
+          }
+
+          maxDelayTime = maxDelay * ONE_SECOND;
+          maxDurationTime = maxDuration * ONE_SECOND;
+
+          if (options.easing) {
+            var easeProp, easeVal = options.easing;
+            if (flags.hasTransitions) {
+              easeProp = TRANSITION_PROP + TIMING_KEY;
+              temporaryStyles.push([easeProp, easeVal]);
+              node.style[easeProp] = easeVal;
+            }
+            if (flags.hasAnimations) {
+              easeProp = ANIMATION_PROP + TIMING_KEY;
+              temporaryStyles.push([easeProp, easeVal]);
+              node.style[easeProp] = easeVal;
+            }
+          }
+
+          if (timings.transitionDuration) {
+            events.push(TRANSITIONEND_EVENT);
+          }
+
+          if (timings.animationDuration) {
+            events.push(ANIMATIONEND_EVENT);
+          }
+
+          startTime = Date.now();
+          var timerTime = maxDelayTime + CLOSING_TIME_BUFFER * maxDurationTime;
+          var endTime = startTime + timerTime;
+
+          var animationsData = element.data(ANIMATE_TIMER_KEY) || [];
+          var setupFallbackTimer = true;
+          if (animationsData.length) {
+            var currentTimerData = animationsData[0];
+            setupFallbackTimer = endTime > currentTimerData.expectedEndTime;
+            if (setupFallbackTimer) {
+              $timeout.cancel(currentTimerData.timer);
+            } else {
+              animationsData.push(close);
+            }
+          }
+
+          if (setupFallbackTimer) {
+            var timer = $timeout(onAnimationExpired, timerTime, false);
+            animationsData[0] = {
+              timer: timer,
+              expectedEndTime: endTime
+            };
+            animationsData.push(close);
+            element.data(ANIMATE_TIMER_KEY, animationsData);
+          }
+
+          if (events.length) {
+            element.on(events.join(' '), onAnimationProgress);
+          }
+
+          if (options.to) {
+            if (options.cleanupStyles) {
+              registerRestorableStyles(restoreStyles, node, Object.keys(options.to));
+            }
+            applyAnimationToStyles(element, options);
+          }
+        }
+
+        function onAnimationExpired() {
+          var animationsData = element.data(ANIMATE_TIMER_KEY);
+
+          // this will be false in the event that the element was
+          // removed from the DOM (via a leave animation or something
+          // similar)
+          if (animationsData) {
+            for (var i = 1; i < animationsData.length; i++) {
+              animationsData[i]();
+            }
+            element.removeData(ANIMATE_TIMER_KEY);
+          }
+        }
+      }
+    };
+  }];
+}];
+
+var $$AnimateCssDriverProvider = ['$$animationProvider', function($$animationProvider) {
+  $$animationProvider.drivers.push('$$animateCssDriver');
+
+  var NG_ANIMATE_SHIM_CLASS_NAME = 'ng-animate-shim';
+  var NG_ANIMATE_ANCHOR_CLASS_NAME = 'ng-anchor';
+
+  var NG_OUT_ANCHOR_CLASS_NAME = 'ng-anchor-out';
+  var NG_IN_ANCHOR_CLASS_NAME = 'ng-anchor-in';
+
+  function isDocumentFragment(node) {
+    return node.parentNode && node.parentNode.nodeType === 11;
+  }
+
+  this.$get = ['$animateCss', '$rootScope', '$$AnimateRunner', '$rootElement', '$sniffer', '$$jqLite', '$document',
+       function($animateCss,   $rootScope,   $$AnimateRunner,   $rootElement,   $sniffer,   $$jqLite,   $document) {
+
+    // only browsers that support these properties can render animations
+    if (!$sniffer.animations && !$sniffer.transitions) return noop;
+
+    var bodyNode = $document[0].body;
+    var rootNode = getDomNode($rootElement);
+
+    var rootBodyElement = jqLite(
+      // this is to avoid using something that exists outside of the body
+      // we also special case the doc fragment case because our unit test code
+      // appends the $rootElement to the body after the app has been bootstrapped
+      isDocumentFragment(rootNode) || bodyNode.contains(rootNode) ? rootNode : bodyNode
+    );
+
+    var applyAnimationClasses = applyAnimationClassesFactory($$jqLite);
+
+    return function initDriverFn(animationDetails) {
+      return animationDetails.from && animationDetails.to
+          ? prepareFromToAnchorAnimation(animationDetails.from,
+                                         animationDetails.to,
+                                         animationDetails.classes,
+                                         animationDetails.anchors)
+          : prepareRegularAnimation(animationDetails);
+    };
+
+    function filterCssClasses(classes) {
+      //remove all the `ng-` stuff
+      return classes.replace(/\bng-\S+\b/g, '');
+    }
+
+    function getUniqueValues(a, b) {
+      if (isString(a)) a = a.split(' ');
+      if (isString(b)) b = b.split(' ');
+      return a.filter(function(val) {
+        return b.indexOf(val) === -1;
+      }).join(' ');
+    }
+
+    function prepareAnchoredAnimation(classes, outAnchor, inAnchor) {
+      var clone = jqLite(getDomNode(outAnchor).cloneNode(true));
+      var startingClasses = filterCssClasses(getClassVal(clone));
+
+      outAnchor.addClass(NG_ANIMATE_SHIM_CLASS_NAME);
+      inAnchor.addClass(NG_ANIMATE_SHIM_CLASS_NAME);
+
+      clone.addClass(NG_ANIMATE_ANCHOR_CLASS_NAME);
+
+      rootBodyElement.append(clone);
+
+      var animatorIn, animatorOut = prepareOutAnimation();
+
+      // the user may not end up using the `out` animation and
+      // only making use of the `in` animation or vice-versa.
+      // In either case we should allow this and not assume the
+      // animation is over unless both animations are not used.
+      if (!animatorOut) {
+        animatorIn = prepareInAnimation();
+        if (!animatorIn) {
+          return end();
+        }
+      }
+
+      var startingAnimator = animatorOut || animatorIn;
+
+      return {
+        start: function() {
+          var runner;
+
+          var currentAnimation = startingAnimator.start();
+          currentAnimation.done(function() {
+            currentAnimation = null;
+            if (!animatorIn) {
+              animatorIn = prepareInAnimation();
+              if (animatorIn) {
+                currentAnimation = animatorIn.start();
+                currentAnimation.done(function() {
+                  currentAnimation = null;
+                  end();
+                  runner.complete();
+                });
+                return currentAnimation;
+              }
+            }
+            // in the event that there is no `in` animation
+            end();
+            runner.complete();
+          });
+
+          runner = new $$AnimateRunner({
+            end: endFn,
+            cancel: endFn
+          });
+
+          return runner;
+
+          function endFn() {
+            if (currentAnimation) {
+              currentAnimation.end();
+            }
+          }
+        }
+      };
+
+      function calculateAnchorStyles(anchor) {
+        var styles = {};
+
+        var coords = getDomNode(anchor).getBoundingClientRect();
+
+        // we iterate directly since safari messes up and doesn't return
+        // all the keys for the coords object when iterated
+        forEach(['width','height','top','left'], function(key) {
+          var value = coords[key];
+          switch (key) {
+            case 'top':
+              value += bodyNode.scrollTop;
+              break;
+            case 'left':
+              value += bodyNode.scrollLeft;
+              break;
+          }
+          styles[key] = Math.floor(value) + 'px';
+        });
+        return styles;
+      }
+
+      function prepareOutAnimation() {
+        var animator = $animateCss(clone, {
+          addClass: NG_OUT_ANCHOR_CLASS_NAME,
+          delay: true,
+          from: calculateAnchorStyles(outAnchor)
+        });
+
+        // read the comment within `prepareRegularAnimation` to understand
+        // why this check is necessary
+        return animator.$$willAnimate ? animator : null;
+      }
+
+      function getClassVal(element) {
+        return element.attr('class') || '';
+      }
+
+      function prepareInAnimation() {
+        var endingClasses = filterCssClasses(getClassVal(inAnchor));
+        var toAdd = getUniqueValues(endingClasses, startingClasses);
+        var toRemove = getUniqueValues(startingClasses, endingClasses);
+
+        var animator = $animateCss(clone, {
+          to: calculateAnchorStyles(inAnchor),
+          addClass: NG_IN_ANCHOR_CLASS_NAME + ' ' + toAdd,
+          removeClass: NG_OUT_ANCHOR_CLASS_NAME + ' ' + toRemove,
+          delay: true
+        });
+
+        // read the comment within `prepareRegularAnimation` to understand
+        // why this check is necessary
+        return animator.$$willAnimate ? animator : null;
+      }
+
+      function end() {
+        clone.remove();
+        outAnchor.removeClass(NG_ANIMATE_SHIM_CLASS_NAME);
+        inAnchor.removeClass(NG_ANIMATE_SHIM_CLASS_NAME);
+      }
+    }
+
+    function prepareFromToAnchorAnimation(from, to, classes, anchors) {
+      var fromAnimation = prepareRegularAnimation(from, noop);
+      var toAnimation = prepareRegularAnimation(to, noop);
+
+      var anchorAnimations = [];
+      forEach(anchors, function(anchor) {
+        var outElement = anchor['out'];
+        var inElement = anchor['in'];
+        var animator = prepareAnchoredAnimation(classes, outElement, inElement);
+        if (animator) {
+          anchorAnimations.push(animator);
+        }
+      });
+
+      // no point in doing anything when there are no elements to animate
+      if (!fromAnimation && !toAnimation && anchorAnimations.length === 0) return;
+
+      return {
+        start: function() {
+          var animationRunners = [];
+
+          if (fromAnimation) {
+            animationRunners.push(fromAnimation.start());
+          }
+
+          if (toAnimation) {
+            animationRunners.push(toAnimation.start());
+          }
+
+          forEach(anchorAnimations, function(animation) {
+            animationRunners.push(animation.start());
+          });
+
+          var runner = new $$AnimateRunner({
+            end: endFn,
+            cancel: endFn // CSS-driven animations cannot be cancelled, only ended
+          });
+
+          $$AnimateRunner.all(animationRunners, function(status) {
+            runner.complete(status);
+          });
+
+          return runner;
+
+          function endFn() {
+            forEach(animationRunners, function(runner) {
+              runner.end();
+            });
+          }
+        }
+      };
+    }
+
+    function prepareRegularAnimation(animationDetails) {
+      var element = animationDetails.element;
+      var options = animationDetails.options || {};
+
+      if (animationDetails.structural) {
+        options.event = animationDetails.event;
+        options.structural = true;
+        options.applyClassesEarly = true;
+
+        // we special case the leave animation since we want to ensure that
+        // the element is removed as soon as the animation is over. Otherwise
+        // a flicker might appear or the element may not be removed at all
+        if (animationDetails.event === 'leave') {
+          options.onDone = options.domOperation;
+        }
+      }
+
+      // We assign the preparationClasses as the actual animation event since
+      // the internals of $animateCss will just suffix the event token values
+      // with `-active` to trigger the animation.
+      if (options.preparationClasses) {
+        options.event = concatWithSpace(options.event, options.preparationClasses);
+      }
+
+      var animator = $animateCss(element, options);
+
+      // the driver lookup code inside of $$animation attempts to spawn a
+      // driver one by one until a driver returns a.$$willAnimate animator object.
+      // $animateCss will always return an object, however, it will pass in
+      // a flag as a hint as to whether an animation was detected or not
+      return animator.$$willAnimate ? animator : null;
+    }
+  }];
+}];
+
+// TODO(matsko): use caching here to speed things up for detection
+// TODO(matsko): add documentation
+//  by the time...
+
+var $$AnimateJsProvider = ['$animateProvider', function($animateProvider) {
+  this.$get = ['$injector', '$$AnimateRunner', '$$jqLite',
+       function($injector,   $$AnimateRunner,   $$jqLite) {
+
+    var applyAnimationClasses = applyAnimationClassesFactory($$jqLite);
+         // $animateJs(element, 'enter');
+    return function(element, event, classes, options) {
+      var animationClosed = false;
+
+      // the `classes` argument is optional and if it is not used
+      // then the classes will be resolved from the element's className
+      // property as well as options.addClass/options.removeClass.
+      if (arguments.length === 3 && isObject(classes)) {
+        options = classes;
+        classes = null;
+      }
+
+      options = prepareAnimationOptions(options);
+      if (!classes) {
+        classes = element.attr('class') || '';
+        if (options.addClass) {
+          classes += ' ' + options.addClass;
+        }
+        if (options.removeClass) {
+          classes += ' ' + options.removeClass;
+        }
+      }
+
+      var classesToAdd = options.addClass;
+      var classesToRemove = options.removeClass;
+
+      // the lookupAnimations function returns a series of animation objects that are
+      // matched up with one or more of the CSS classes. These animation objects are
+      // defined via the module.animation factory function. If nothing is detected then
+      // we don't return anything which then makes $animation query the next driver.
+      var animations = lookupAnimations(classes);
+      var before, after;
+      if (animations.length) {
+        var afterFn, beforeFn;
+        if (event == 'leave') {
+          beforeFn = 'leave';
+          afterFn = 'afterLeave'; // TODO(matsko): get rid of this
+        } else {
+          beforeFn = 'before' + event.charAt(0).toUpperCase() + event.substr(1);
+          afterFn = event;
+        }
+
+        if (event !== 'enter' && event !== 'move') {
+          before = packageAnimations(element, event, options, animations, beforeFn);
+        }
+        after  = packageAnimations(element, event, options, animations, afterFn);
+      }
+
+      // no matching animations
+      if (!before && !after) return;
+
+      function applyOptions() {
+        options.domOperation();
+        applyAnimationClasses(element, options);
+      }
+
+      function close() {
+        animationClosed = true;
+        applyOptions();
+        applyAnimationStyles(element, options);
+      }
+
+      var runner;
+
+      return {
+        $$willAnimate: true,
+        end: function() {
+          if (runner) {
+            runner.end();
+          } else {
+            close();
+            runner = new $$AnimateRunner();
+            runner.complete(true);
+          }
+          return runner;
+        },
+        start: function() {
+          if (runner) {
+            return runner;
+          }
+
+          runner = new $$AnimateRunner();
+          var closeActiveAnimations;
+          var chain = [];
+
+          if (before) {
+            chain.push(function(fn) {
+              closeActiveAnimations = before(fn);
+            });
+          }
+
+          if (chain.length) {
+            chain.push(function(fn) {
+              applyOptions();
+              fn(true);
+            });
+          } else {
+            applyOptions();
+          }
+
+          if (after) {
+            chain.push(function(fn) {
+              closeActiveAnimations = after(fn);
+            });
+          }
+
+          runner.setHost({
+            end: function() {
+              endAnimations();
+            },
+            cancel: function() {
+              endAnimations(true);
+            }
+          });
+
+          $$AnimateRunner.chain(chain, onComplete);
+          return runner;
+
+          function onComplete(success) {
+            close(success);
+            runner.complete(success);
+          }
+
+          function endAnimations(cancelled) {
+            if (!animationClosed) {
+              (closeActiveAnimations || noop)(cancelled);
+              onComplete(cancelled);
+            }
+          }
+        }
+      };
+
+      function executeAnimationFn(fn, element, event, options, onDone) {
+        var args;
+        switch (event) {
+          case 'animate':
+            args = [element, options.from, options.to, onDone];
+            break;
+
+          case 'setClass':
+            args = [element, classesToAdd, classesToRemove, onDone];
+            break;
+
+          case 'addClass':
+            args = [element, classesToAdd, onDone];
+            break;
+
+          case 'removeClass':
+            args = [element, classesToRemove, onDone];
+            break;
+
+          default:
+            args = [element, onDone];
+            break;
+        }
+
+        args.push(options);
+
+        var value = fn.apply(fn, args);
+        if (value) {
+          if (isFunction(value.start)) {
+            value = value.start();
+          }
+
+          if (value instanceof $$AnimateRunner) {
+            value.done(onDone);
+          } else if (isFunction(value)) {
+            // optional onEnd / onCancel callback
+            return value;
+          }
+        }
+
+        return noop;
+      }
+
+      function groupEventedAnimations(element, event, options, animations, fnName) {
+        var operations = [];
+        forEach(animations, function(ani) {
+          var animation = ani[fnName];
+          if (!animation) return;
+
+          // note that all of these animations will run in parallel
+          operations.push(function() {
+            var runner;
+            var endProgressCb;
+
+            var resolved = false;
+            var onAnimationComplete = function(rejected) {
+              if (!resolved) {
+                resolved = true;
+                (endProgressCb || noop)(rejected);
+                runner.complete(!rejected);
+              }
+            };
+
+            runner = new $$AnimateRunner({
+              end: function() {
+                onAnimationComplete();
+              },
+              cancel: function() {
+                onAnimationComplete(true);
+              }
+            });
+
+            endProgressCb = executeAnimationFn(animation, element, event, options, function(result) {
+              var cancelled = result === false;
+              onAnimationComplete(cancelled);
+            });
+
+            return runner;
+          });
+        });
+
+        return operations;
+      }
+
+      function packageAnimations(element, event, options, animations, fnName) {
+        var operations = groupEventedAnimations(element, event, options, animations, fnName);
+        if (operations.length === 0) {
+          var a,b;
+          if (fnName === 'beforeSetClass') {
+            a = groupEventedAnimations(element, 'removeClass', options, animations, 'beforeRemoveClass');
+            b = groupEventedAnimations(element, 'addClass', options, animations, 'beforeAddClass');
+          } else if (fnName === 'setClass') {
+            a = groupEventedAnimations(element, 'removeClass', options, animations, 'removeClass');
+            b = groupEventedAnimations(element, 'addClass', options, animations, 'addClass');
+          }
+
+          if (a) {
+            operations = operations.concat(a);
+          }
+          if (b) {
+            operations = operations.concat(b);
+          }
+        }
+
+        if (operations.length === 0) return;
+
+        // TODO(matsko): add documentation
+        return function startAnimation(callback) {
+          var runners = [];
+          if (operations.length) {
+            forEach(operations, function(animateFn) {
+              runners.push(animateFn());
+            });
+          }
+
+          runners.length ? $$AnimateRunner.all(runners, callback) : callback();
+
+          return function endFn(reject) {
+            forEach(runners, function(runner) {
+              reject ? runner.cancel() : runner.end();
+            });
+          };
+        };
+      }
+    };
+
+    function lookupAnimations(classes) {
+      classes = isArray(classes) ? classes : classes.split(' ');
+      var matches = [], flagMap = {};
+      for (var i=0; i < classes.length; i++) {
+        var klass = classes[i],
+            animationFactory = $animateProvider.$$registeredAnimations[klass];
+        if (animationFactory && !flagMap[klass]) {
+          matches.push($injector.get(animationFactory));
+          flagMap[klass] = true;
+        }
+      }
+      return matches;
+    }
+  }];
+}];
+
+var $$AnimateJsDriverProvider = ['$$animationProvider', function($$animationProvider) {
+  $$animationProvider.drivers.push('$$animateJsDriver');
+  this.$get = ['$$animateJs', '$$AnimateRunner', function($$animateJs, $$AnimateRunner) {
+    return function initDriverFn(animationDetails) {
+      if (animationDetails.from && animationDetails.to) {
+        var fromAnimation = prepareAnimation(animationDetails.from);
+        var toAnimation = prepareAnimation(animationDetails.to);
+        if (!fromAnimation && !toAnimation) return;
+
+        return {
+          start: function() {
+            var animationRunners = [];
+
+            if (fromAnimation) {
+              animationRunners.push(fromAnimation.start());
+            }
+
+            if (toAnimation) {
+              animationRunners.push(toAnimation.start());
+            }
+
+            $$AnimateRunner.all(animationRunners, done);
+
+            var runner = new $$AnimateRunner({
+              end: endFnFactory(),
+              cancel: endFnFactory()
+            });
+
+            return runner;
+
+            function endFnFactory() {
+              return function() {
+                forEach(animationRunners, function(runner) {
+                  // at this point we cannot cancel animations for groups just yet. 1.5+
+                  runner.end();
+                });
+              };
+            }
+
+            function done(status) {
+              runner.complete(status);
+            }
+          }
+        };
+      } else {
+        return prepareAnimation(animationDetails);
+      }
+    };
+
+    function prepareAnimation(animationDetails) {
+      // TODO(matsko): make sure to check for grouped animations and delegate down to normal animations
+      var element = animationDetails.element;
+      var event = animationDetails.event;
+      var options = animationDetails.options;
+      var classes = animationDetails.classes;
+      return $$animateJs(element, event, classes, options);
+    }
+  }];
+}];
+
+var NG_ANIMATE_ATTR_NAME = 'data-ng-animate';
+var NG_ANIMATE_PIN_DATA = '$ngAnimatePin';
+var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
+  var PRE_DIGEST_STATE = 1;
+  var RUNNING_STATE = 2;
+  var ONE_SPACE = ' ';
+
+  var rules = this.rules = {
+    skip: [],
+    cancel: [],
+    join: []
+  };
+
+  function makeTruthyCssClassMap(classString) {
+    if (!classString) {
+      return null;
+    }
+
+    var keys = classString.split(ONE_SPACE);
+    var map = Object.create(null);
+
+    forEach(keys, function(key) {
+      map[key] = true;
+    });
+    return map;
+  }
+
+  function hasMatchingClasses(newClassString, currentClassString) {
+    if (newClassString && currentClassString) {
+      var currentClassMap = makeTruthyCssClassMap(currentClassString);
+      return newClassString.split(ONE_SPACE).some(function(className) {
+        return currentClassMap[className];
+      });
+    }
+  }
+
+  function isAllowed(ruleType, element, currentAnimation, previousAnimation) {
+    return rules[ruleType].some(function(fn) {
+      return fn(element, currentAnimation, previousAnimation);
+    });
+  }
+
+  function hasAnimationClasses(animation, and) {
+    var a = (animation.addClass || '').length > 0;
+    var b = (animation.removeClass || '').length > 0;
+    return and ? a && b : a || b;
+  }
+
+  rules.join.push(function(element, newAnimation, currentAnimation) {
+    // if the new animation is class-based then we can just tack that on
+    return !newAnimation.structural && hasAnimationClasses(newAnimation);
+  });
+
+  rules.skip.push(function(element, newAnimation, currentAnimation) {
+    // there is no need to animate anything if no classes are being added and
+    // there is no structural animation that will be triggered
+    return !newAnimation.structural && !hasAnimationClasses(newAnimation);
+  });
+
+  rules.skip.push(function(element, newAnimation, currentAnimation) {
+    // why should we trigger a new structural animation if the element will
+    // be removed from the DOM anyway?
+    return currentAnimation.event == 'leave' && newAnimation.structural;
+  });
+
+  rules.skip.push(function(element, newAnimation, currentAnimation) {
+    // if there is an ongoing current animation then don't even bother running the class-based animation
+    return currentAnimation.structural && currentAnimation.state === RUNNING_STATE && !newAnimation.structural;
+  });
+
+  rules.cancel.push(function(element, newAnimation, currentAnimation) {
+    // there can never be two structural animations running at the same time
+    return currentAnimation.structural && newAnimation.structural;
+  });
+
+  rules.cancel.push(function(element, newAnimation, currentAnimation) {
+    // if the previous animation is already running, but the new animation will
+    // be triggered, but the new animation is structural
+    return currentAnimation.state === RUNNING_STATE && newAnimation.structural;
+  });
+
+  rules.cancel.push(function(element, newAnimation, currentAnimation) {
+    // cancel the animation if classes added / removed in both animation cancel each other out,
+    // but only if the current animation isn't structural
+
+    if (currentAnimation.structural) return false;
+
+    var nA = newAnimation.addClass;
+    var nR = newAnimation.removeClass;
+    var cA = currentAnimation.addClass;
+    var cR = currentAnimation.removeClass;
+
+    // early detection to save the global CPU shortage :)
+    if ((isUndefined(nA) && isUndefined(nR)) || (isUndefined(cA) && isUndefined(cR))) {
+      return false;
+    }
+
+    return hasMatchingClasses(nA, cR) || hasMatchingClasses(nR, cA);
+  });
+
+  this.$get = ['$$rAF', '$rootScope', '$rootElement', '$document', '$$HashMap',
+               '$$animation', '$$AnimateRunner', '$templateRequest', '$$jqLite', '$$forceReflow',
+       function($$rAF,   $rootScope,   $rootElement,   $document,   $$HashMap,
+                $$animation,   $$AnimateRunner,   $templateRequest,   $$jqLite,   $$forceReflow) {
+
+    var activeAnimationsLookup = new $$HashMap();
+    var disabledElementsLookup = new $$HashMap();
+    var animationsEnabled = null;
+
+    function postDigestTaskFactory() {
+      var postDigestCalled = false;
+      return function(fn) {
+        // we only issue a call to postDigest before
+        // it has first passed. This prevents any callbacks
+        // from not firing once the animation has completed
+        // since it will be out of the digest cycle.
+        if (postDigestCalled) {
+          fn();
+        } else {
+          $rootScope.$$postDigest(function() {
+            postDigestCalled = true;
+            fn();
+          });
+        }
+      };
+    }
+
+    // Wait until all directive and route-related templates are downloaded and
+    // compiled. The $templateRequest.totalPendingRequests variable keeps track of
+    // all of the remote templates being currently downloaded. If there are no
+    // templates currently downloading then the watcher will still fire anyway.
+    var deregisterWatch = $rootScope.$watch(
+      function() { return $templateRequest.totalPendingRequests === 0; },
+      function(isEmpty) {
+        if (!isEmpty) return;
+        deregisterWatch();
+
+        // Now that all templates have been downloaded, $animate will wait until
+        // the post digest queue is empty before enabling animations. By having two
+        // calls to $postDigest calls we can ensure that the flag is enabled at the
+        // very end of the post digest queue. Since all of the animations in $animate
+        // use $postDigest, it's important that the code below executes at the end.
+        // This basically means that the page is fully downloaded and compiled before
+        // any animations are triggered.
+        $rootScope.$$postDigest(function() {
+          $rootScope.$$postDigest(function() {
+            // we check for null directly in the event that the application already called
+            // .enabled() with whatever arguments that it provided it with
+            if (animationsEnabled === null) {
+              animationsEnabled = true;
+            }
+          });
+        });
+      }
+    );
+
+    var callbackRegistry = {};
+
+    // remember that the classNameFilter is set during the provider/config
+    // stage therefore we can optimize here and setup a helper function
+    var classNameFilter = $animateProvider.classNameFilter();
+    var isAnimatableClassName = !classNameFilter
+              ? function() { return true; }
+              : function(className) {
+                return classNameFilter.test(className);
+              };
+
+    var applyAnimationClasses = applyAnimationClassesFactory($$jqLite);
+
+    function normalizeAnimationDetails(element, animation) {
+      return mergeAnimationDetails(element, animation, {});
+    }
+
+    // IE9-11 has no method "contains" in SVG element and in Node.prototype. Bug #10259.
+    var contains = window.Node.prototype.contains || function(arg) {
+      // jshint bitwise: false
+      return this === arg || !!(this.compareDocumentPosition(arg) & 16);
+      // jshint bitwise: true
+    };
+
+    function findCallbacks(parent, element, event) {
+      var targetNode = getDomNode(element);
+      var targetParentNode = getDomNode(parent);
+
+      var matches = [];
+      var entries = callbackRegistry[event];
+      if (entries) {
+        forEach(entries, function(entry) {
+          if (contains.call(entry.node, targetNode)) {
+            matches.push(entry.callback);
+          } else if (event === 'leave' && contains.call(entry.node, targetParentNode)) {
+            matches.push(entry.callback);
+          }
+        });
+      }
+
+      return matches;
+    }
+
+    function filterFromRegistry(list, matchContainer, matchCallback) {
+      var containerNode = extractElementNode(matchContainer);
+      return list.filter(function(entry) {
+        var isMatch = entry.node === containerNode &&
+                        (!matchCallback || entry.callback === matchCallback);
+        return !isMatch;
+      });
+    }
+
+    function cleanupEventListeners(phase, element) {
+      if (phase === 'close' && !element[0].parentNode) {
+        // If the element is not attached to a parentNode, it has been removed by
+        // the domOperation, and we can safely remove the event callbacks
+        $animate.off(element);
+      }
+    }
+
+    var $animate = {
+      on: function(event, container, callback) {
+        var node = extractElementNode(container);
+        callbackRegistry[event] = callbackRegistry[event] || [];
+        callbackRegistry[event].push({
+          node: node,
+          callback: callback
+        });
+
+        // Remove the callback when the element is removed from the DOM
+        jqLite(container).on('$destroy', function() {
+          var animationDetails = activeAnimationsLookup.get(node);
+
+          if (!animationDetails) {
+            // If there's an animation ongoing, the callback calling code will remove
+            // the event listeners. If we'd remove here, the callbacks would be removed
+            // before the animation ends
+            $animate.off(event, container, callback);
+          }
+        });
+      },
+
+      off: function(event, container, callback) {
+        if (arguments.length === 1 && !angular.isString(arguments[0])) {
+          container = arguments[0];
+          for (var eventType in callbackRegistry) {
+            callbackRegistry[eventType] = filterFromRegistry(callbackRegistry[eventType], container);
+          }
+
+          return;
+        }
+
+        var entries = callbackRegistry[event];
+        if (!entries) return;
+
+        callbackRegistry[event] = arguments.length === 1
+            ? null
+            : filterFromRegistry(entries, container, callback);
+      },
+
+      pin: function(element, parentElement) {
+        assertArg(isElement(element), 'element', 'not an element');
+        assertArg(isElement(parentElement), 'parentElement', 'not an element');
+        element.data(NG_ANIMATE_PIN_DATA, parentElement);
+      },
+
+      push: function(element, event, options, domOperation) {
+        options = options || {};
+        options.domOperation = domOperation;
+        return queueAnimation(element, event, options);
+      },
+
+      // this method has four signatures:
+      //  () - global getter
+      //  (bool) - global setter
+      //  (element) - element getter
+      //  (element, bool) - element setter<F37>
+      enabled: function(element, bool) {
+        var argCount = arguments.length;
+
+        if (argCount === 0) {
+          // () - Global getter
+          bool = !!animationsEnabled;
+        } else {
+          var hasElement = isElement(element);
+
+          if (!hasElement) {
+            // (bool) - Global setter
+            bool = animationsEnabled = !!element;
+          } else {
+            var node = getDomNode(element);
+            var recordExists = disabledElementsLookup.get(node);
+
+            if (argCount === 1) {
+              // (element) - Element getter
+              bool = !recordExists;
+            } else {
+              // (element, bool) - Element setter
+              disabledElementsLookup.put(node, !bool);
+            }
+          }
+        }
+
+        return bool;
+      }
+    };
+
+    return $animate;
+
+    function queueAnimation(element, eve

<TRUNCATED>


[02/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nl-sr.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nl-sr.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nl-sr.js
new file mode 100644
index 0000000..98984fe
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nl-sr.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a.m.",
+      "p.m."
+    ],
+    "DAY": [
+      "zondag",
+      "maandag",
+      "dinsdag",
+      "woensdag",
+      "donderdag",
+      "vrijdag",
+      "zaterdag"
+    ],
+    "ERANAMES": [
+      "voor Christus",
+      "na Christus"
+    ],
+    "ERAS": [
+      "v.Chr.",
+      "n.Chr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "januari",
+      "februari",
+      "maart",
+      "april",
+      "mei",
+      "juni",
+      "juli",
+      "augustus",
+      "september",
+      "oktober",
+      "november",
+      "december"
+    ],
+    "SHORTDAY": [
+      "zo",
+      "ma",
+      "di",
+      "wo",
+      "do",
+      "vr",
+      "za"
+    ],
+    "SHORTMONTH": [
+      "jan.",
+      "feb.",
+      "mrt.",
+      "apr.",
+      "mei",
+      "jun.",
+      "jul.",
+      "aug.",
+      "sep.",
+      "okt.",
+      "nov.",
+      "dec."
+    ],
+    "STANDALONEMONTH": [
+      "Januari",
+      "Februari",
+      "Maart",
+      "April",
+      "Mei",
+      "Juni",
+      "Juli",
+      "Augustus",
+      "September",
+      "Oktober",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd-MM-yy HH:mm",
+    "shortDate": "dd-MM-yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4\u00a0-",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "nl-sr",
+  "localeID": "nl_SR",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nl-sx.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nl-sx.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nl-sx.js
new file mode 100644
index 0000000..264e9a0
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nl-sx.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a.m.",
+      "p.m."
+    ],
+    "DAY": [
+      "zondag",
+      "maandag",
+      "dinsdag",
+      "woensdag",
+      "donderdag",
+      "vrijdag",
+      "zaterdag"
+    ],
+    "ERANAMES": [
+      "voor Christus",
+      "na Christus"
+    ],
+    "ERAS": [
+      "v.Chr.",
+      "n.Chr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "januari",
+      "februari",
+      "maart",
+      "april",
+      "mei",
+      "juni",
+      "juli",
+      "augustus",
+      "september",
+      "oktober",
+      "november",
+      "december"
+    ],
+    "SHORTDAY": [
+      "zo",
+      "ma",
+      "di",
+      "wo",
+      "do",
+      "vr",
+      "za"
+    ],
+    "SHORTMONTH": [
+      "jan.",
+      "feb.",
+      "mrt.",
+      "apr.",
+      "mei",
+      "jun.",
+      "jul.",
+      "aug.",
+      "sep.",
+      "okt.",
+      "nov.",
+      "dec."
+    ],
+    "STANDALONEMONTH": [
+      "Januari",
+      "Februari",
+      "Maart",
+      "April",
+      "Mei",
+      "Juni",
+      "Juli",
+      "Augustus",
+      "September",
+      "Oktober",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd-MM-yy HH:mm",
+    "shortDate": "dd-MM-yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "NAf.",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4\u00a0-",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "nl-sx",
+  "localeID": "nl_SX",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nl.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nl.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nl.js
new file mode 100644
index 0000000..4f6311b
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nl.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a.m.",
+      "p.m."
+    ],
+    "DAY": [
+      "zondag",
+      "maandag",
+      "dinsdag",
+      "woensdag",
+      "donderdag",
+      "vrijdag",
+      "zaterdag"
+    ],
+    "ERANAMES": [
+      "voor Christus",
+      "na Christus"
+    ],
+    "ERAS": [
+      "v.Chr.",
+      "n.Chr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "januari",
+      "februari",
+      "maart",
+      "april",
+      "mei",
+      "juni",
+      "juli",
+      "augustus",
+      "september",
+      "oktober",
+      "november",
+      "december"
+    ],
+    "SHORTDAY": [
+      "zo",
+      "ma",
+      "di",
+      "wo",
+      "do",
+      "vr",
+      "za"
+    ],
+    "SHORTMONTH": [
+      "jan.",
+      "feb.",
+      "mrt.",
+      "apr.",
+      "mei",
+      "jun.",
+      "jul.",
+      "aug.",
+      "sep.",
+      "okt.",
+      "nov.",
+      "dec."
+    ],
+    "STANDALONEMONTH": [
+      "Januari",
+      "Februari",
+      "Maart",
+      "April",
+      "Mei",
+      "Juni",
+      "Juli",
+      "Augustus",
+      "September",
+      "Oktober",
+      "November",
+      "December"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd-MM-yy HH:mm",
+    "shortDate": "dd-MM-yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4\u00a0-",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "nl",
+  "localeID": "nl",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nmg-cm.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nmg-cm.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nmg-cm.js
new file mode 100644
index 0000000..518ef7c
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nmg-cm.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "man\u00e1",
+      "kug\u00fa"
+    ],
+    "DAY": [
+      "s\u0254\u0301nd\u0254",
+      "m\u0254\u0301nd\u0254",
+      "s\u0254\u0301nd\u0254 maf\u00fa m\u00e1ba",
+      "s\u0254\u0301nd\u0254 maf\u00fa m\u00e1lal",
+      "s\u0254\u0301nd\u0254 maf\u00fa m\u00e1na",
+      "mab\u00e1g\u00e1 m\u00e1 sukul",
+      "s\u00e1sadi"
+    ],
+    "ERANAMES": [
+      "B\u00f3 Lahl\u025b\u0304",
+      "Pfi\u025b Bur\u012b"
+    ],
+    "ERAS": [
+      "BL",
+      "PB"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "ngw\u025bn mat\u00e1hra",
+      "ngw\u025bn \u0144mba",
+      "ngw\u025bn \u0144lal",
+      "ngw\u025bn \u0144na",
+      "ngw\u025bn \u0144tan",
+      "ngw\u025bn \u0144tu\u00f3",
+      "ngw\u025bn h\u025bmbu\u025br\u00ed",
+      "ngw\u025bn l\u0254mbi",
+      "ngw\u025bn r\u025bbvu\u00e2",
+      "ngw\u025bn wum",
+      "ngw\u025bn wum nav\u01d4r",
+      "kr\u00edsimin"
+    ],
+    "SHORTDAY": [
+      "s\u0254\u0301n",
+      "m\u0254\u0301n",
+      "smb",
+      "sml",
+      "smn",
+      "mbs",
+      "sas"
+    ],
+    "SHORTMONTH": [
+      "ng1",
+      "ng2",
+      "ng3",
+      "ng4",
+      "ng5",
+      "ng6",
+      "ng7",
+      "ng8",
+      "ng9",
+      "ng10",
+      "ng11",
+      "kris"
+    ],
+    "STANDALONEMONTH": [
+      "ngw\u025bn mat\u00e1hra",
+      "ngw\u025bn \u0144mba",
+      "ngw\u025bn \u0144lal",
+      "ngw\u025bn \u0144na",
+      "ngw\u025bn \u0144tan",
+      "ngw\u025bn \u0144tu\u00f3",
+      "ngw\u025bn h\u025bmbu\u025br\u00ed",
+      "ngw\u025bn l\u0254mbi",
+      "ngw\u025bn r\u025bbvu\u00e2",
+      "ngw\u025bn wum",
+      "ngw\u025bn wum nav\u01d4r",
+      "kr\u00edsimin"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "nmg-cm",
+  "localeID": "nmg_CM",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nmg.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nmg.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nmg.js
new file mode 100644
index 0000000..2545725
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nmg.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "man\u00e1",
+      "kug\u00fa"
+    ],
+    "DAY": [
+      "s\u0254\u0301nd\u0254",
+      "m\u0254\u0301nd\u0254",
+      "s\u0254\u0301nd\u0254 maf\u00fa m\u00e1ba",
+      "s\u0254\u0301nd\u0254 maf\u00fa m\u00e1lal",
+      "s\u0254\u0301nd\u0254 maf\u00fa m\u00e1na",
+      "mab\u00e1g\u00e1 m\u00e1 sukul",
+      "s\u00e1sadi"
+    ],
+    "ERANAMES": [
+      "B\u00f3 Lahl\u025b\u0304",
+      "Pfi\u025b Bur\u012b"
+    ],
+    "ERAS": [
+      "BL",
+      "PB"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "ngw\u025bn mat\u00e1hra",
+      "ngw\u025bn \u0144mba",
+      "ngw\u025bn \u0144lal",
+      "ngw\u025bn \u0144na",
+      "ngw\u025bn \u0144tan",
+      "ngw\u025bn \u0144tu\u00f3",
+      "ngw\u025bn h\u025bmbu\u025br\u00ed",
+      "ngw\u025bn l\u0254mbi",
+      "ngw\u025bn r\u025bbvu\u00e2",
+      "ngw\u025bn wum",
+      "ngw\u025bn wum nav\u01d4r",
+      "kr\u00edsimin"
+    ],
+    "SHORTDAY": [
+      "s\u0254\u0301n",
+      "m\u0254\u0301n",
+      "smb",
+      "sml",
+      "smn",
+      "mbs",
+      "sas"
+    ],
+    "SHORTMONTH": [
+      "ng1",
+      "ng2",
+      "ng3",
+      "ng4",
+      "ng5",
+      "ng6",
+      "ng7",
+      "ng8",
+      "ng9",
+      "ng10",
+      "ng11",
+      "kris"
+    ],
+    "STANDALONEMONTH": [
+      "ngw\u025bn mat\u00e1hra",
+      "ngw\u025bn \u0144mba",
+      "ngw\u025bn \u0144lal",
+      "ngw\u025bn \u0144na",
+      "ngw\u025bn \u0144tan",
+      "ngw\u025bn \u0144tu\u00f3",
+      "ngw\u025bn h\u025bmbu\u025br\u00ed",
+      "ngw\u025bn l\u0254mbi",
+      "ngw\u025bn r\u025bbvu\u00e2",
+      "ngw\u025bn wum",
+      "ngw\u025bn wum nav\u01d4r",
+      "kr\u00edsimin"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "nmg",
+  "localeID": "nmg",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nn-no.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nn-no.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nn-no.js
new file mode 100644
index 0000000..15370bc
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nn-no.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "formiddag",
+      "ettermiddag"
+    ],
+    "DAY": [
+      "s\u00f8ndag",
+      "m\u00e5ndag",
+      "tysdag",
+      "onsdag",
+      "torsdag",
+      "fredag",
+      "laurdag"
+    ],
+    "ERANAMES": [
+      "f.Kr.",
+      "e.Kr."
+    ],
+    "ERAS": [
+      "f.Kr.",
+      "e.Kr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "januar",
+      "februar",
+      "mars",
+      "april",
+      "mai",
+      "juni",
+      "juli",
+      "august",
+      "september",
+      "oktober",
+      "november",
+      "desember"
+    ],
+    "SHORTDAY": [
+      "s\u00f8.",
+      "m\u00e5.",
+      "ty.",
+      "on.",
+      "to.",
+      "fr.",
+      "la."
+    ],
+    "SHORTMONTH": [
+      "jan.",
+      "feb.",
+      "mars",
+      "apr.",
+      "mai",
+      "juni",
+      "juli",
+      "aug.",
+      "sep.",
+      "okt.",
+      "nov.",
+      "des."
+    ],
+    "STANDALONEMONTH": [
+      "januar",
+      "februar",
+      "mars",
+      "april",
+      "mai",
+      "juni",
+      "juli",
+      "august",
+      "september",
+      "oktober",
+      "november",
+      "desember"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "d. MMM y HH:mm:ss",
+    "mediumDate": "d. MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.y HH:mm",
+    "shortDate": "dd.MM.y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "kr",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "nn-no",
+  "localeID": "nn_NO",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nn.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nn.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nn.js
new file mode 100644
index 0000000..2ca6886
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nn.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "formiddag",
+      "ettermiddag"
+    ],
+    "DAY": [
+      "s\u00f8ndag",
+      "m\u00e5ndag",
+      "tysdag",
+      "onsdag",
+      "torsdag",
+      "fredag",
+      "laurdag"
+    ],
+    "ERANAMES": [
+      "f.Kr.",
+      "e.Kr."
+    ],
+    "ERAS": [
+      "f.Kr.",
+      "e.Kr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "januar",
+      "februar",
+      "mars",
+      "april",
+      "mai",
+      "juni",
+      "juli",
+      "august",
+      "september",
+      "oktober",
+      "november",
+      "desember"
+    ],
+    "SHORTDAY": [
+      "s\u00f8.",
+      "m\u00e5.",
+      "ty.",
+      "on.",
+      "to.",
+      "fr.",
+      "la."
+    ],
+    "SHORTMONTH": [
+      "jan.",
+      "feb.",
+      "mars",
+      "apr.",
+      "mai",
+      "juni",
+      "juli",
+      "aug.",
+      "sep.",
+      "okt.",
+      "nov.",
+      "des."
+    ],
+    "STANDALONEMONTH": [
+      "januar",
+      "februar",
+      "mars",
+      "april",
+      "mai",
+      "juni",
+      "juli",
+      "august",
+      "september",
+      "oktober",
+      "november",
+      "desember"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "d. MMM y HH:mm:ss",
+    "mediumDate": "d. MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.y HH:mm",
+    "shortDate": "dd.MM.y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "kr",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "nn",
+  "localeID": "nn",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nnh-cm.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nnh-cm.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nnh-cm.js
new file mode 100644
index 0000000..549ae5b
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nnh-cm.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "mba\u02bc\u00e1mba\u02bc",
+      "ncw\u00f2nz\u00e9m"
+    ],
+    "DAY": [
+      "ly\u025b\u02bc\u025b\u0301 s\u1e85\u00ed\u014bt\u00e8",
+      "mvf\u00f2 ly\u025b\u030c\u02bc",
+      "mb\u0254\u0301\u0254nt\u00e8 mvf\u00f2 ly\u025b\u030c\u02bc",
+      "ts\u00e8ts\u025b\u0300\u025b ly\u025b\u030c\u02bc",
+      "mb\u0254\u0301\u0254nt\u00e8 tsets\u025b\u0300\u025b ly\u025b\u030c\u02bc",
+      "mvf\u00f2 m\u00e0ga ly\u025b\u030c\u02bc",
+      "m\u00e0ga ly\u025b\u030c\u02bc"
+    ],
+    "ERANAMES": [
+      "m\u00e9 zy\u00e9 Y\u011bs\u00f4",
+      "m\u00e9 g\u00ffo \u0144zy\u00e9 Y\u011bs\u00f4"
+    ],
+    "ERAS": [
+      "m.z.Y.",
+      "m.g.n.Y."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "sa\u014b tsets\u025b\u0300\u025b l\u00f9m",
+      "sa\u014b k\u00e0g ngw\u00f3\u014b",
+      "sa\u014b lepy\u00e8 sh\u00fam",
+      "sa\u014b c\u00ff\u00f3",
+      "sa\u014b ts\u025b\u0300\u025b c\u00ff\u00f3",
+      "sa\u014b nj\u00ffol\u00e1\u02bc",
+      "sa\u014b ty\u025b\u0300b ty\u025b\u0300b mb\u0289\u0300",
+      "sa\u014b mb\u0289\u0300\u014b",
+      "sa\u014b ngw\u0254\u0300\u02bc mb\u00ff\u025b",
+      "sa\u014b t\u00e0\u014ba tsets\u00e1\u02bc",
+      "sa\u014b mejwo\u014b\u00f3",
+      "sa\u014b l\u00f9m"
+    ],
+    "SHORTDAY": [
+      "ly\u025b\u02bc\u025b\u0301 s\u1e85\u00ed\u014bt\u00e8",
+      "mvf\u00f2 ly\u025b\u030c\u02bc",
+      "mb\u0254\u0301\u0254nt\u00e8 mvf\u00f2 ly\u025b\u030c\u02bc",
+      "ts\u00e8ts\u025b\u0300\u025b ly\u025b\u030c\u02bc",
+      "mb\u0254\u0301\u0254nt\u00e8 tsets\u025b\u0300\u025b ly\u025b\u030c\u02bc",
+      "mvf\u00f2 m\u00e0ga ly\u025b\u030c\u02bc",
+      "m\u00e0ga ly\u025b\u030c\u02bc"
+    ],
+    "SHORTMONTH": [
+      "sa\u014b tsets\u025b\u0300\u025b l\u00f9m",
+      "sa\u014b k\u00e0g ngw\u00f3\u014b",
+      "sa\u014b lepy\u00e8 sh\u00fam",
+      "sa\u014b c\u00ff\u00f3",
+      "sa\u014b ts\u025b\u0300\u025b c\u00ff\u00f3",
+      "sa\u014b nj\u00ffol\u00e1\u02bc",
+      "sa\u014b ty\u025b\u0300b ty\u025b\u0300b mb\u0289\u0300",
+      "sa\u014b mb\u0289\u0300\u014b",
+      "sa\u014b ngw\u0254\u0300\u02bc mb\u00ff\u025b",
+      "sa\u014b t\u00e0\u014ba tsets\u00e1\u02bc",
+      "sa\u014b mejwo\u014b\u00f3",
+      "sa\u014b l\u00f9m"
+    ],
+    "STANDALONEMONTH": [
+      "sa\u014b tsets\u025b\u0300\u025b l\u00f9m",
+      "sa\u014b k\u00e0g ngw\u00f3\u014b",
+      "sa\u014b lepy\u00e8 sh\u00fam",
+      "sa\u014b c\u00ff\u00f3",
+      "sa\u014b ts\u025b\u0300\u025b c\u00ff\u00f3",
+      "sa\u014b nj\u00ffol\u00e1\u02bc",
+      "sa\u014b ty\u025b\u0300b ty\u025b\u0300b mb\u0289\u0300",
+      "sa\u014b mb\u0289\u0300\u014b",
+      "sa\u014b ngw\u0254\u0300\u02bc mb\u00ff\u025b",
+      "sa\u014b t\u00e0\u014ba tsets\u00e1\u02bc",
+      "sa\u014b mejwo\u014b\u00f3",
+      "sa\u014b l\u00f9m"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE , 'ly\u025b'\u030c\u02bc d 'na' MMMM, y",
+    "longDate": "'ly\u025b'\u030c\u02bc d 'na' MMMM, y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/yy HH:mm",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "nnh-cm",
+  "localeID": "nnh_CM",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nnh.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nnh.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nnh.js
new file mode 100644
index 0000000..6552c81
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nnh.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "mba\u02bc\u00e1mba\u02bc",
+      "ncw\u00f2nz\u00e9m"
+    ],
+    "DAY": [
+      "ly\u025b\u02bc\u025b\u0301 s\u1e85\u00ed\u014bt\u00e8",
+      "mvf\u00f2 ly\u025b\u030c\u02bc",
+      "mb\u0254\u0301\u0254nt\u00e8 mvf\u00f2 ly\u025b\u030c\u02bc",
+      "ts\u00e8ts\u025b\u0300\u025b ly\u025b\u030c\u02bc",
+      "mb\u0254\u0301\u0254nt\u00e8 tsets\u025b\u0300\u025b ly\u025b\u030c\u02bc",
+      "mvf\u00f2 m\u00e0ga ly\u025b\u030c\u02bc",
+      "m\u00e0ga ly\u025b\u030c\u02bc"
+    ],
+    "ERANAMES": [
+      "m\u00e9 zy\u00e9 Y\u011bs\u00f4",
+      "m\u00e9 g\u00ffo \u0144zy\u00e9 Y\u011bs\u00f4"
+    ],
+    "ERAS": [
+      "m.z.Y.",
+      "m.g.n.Y."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "sa\u014b tsets\u025b\u0300\u025b l\u00f9m",
+      "sa\u014b k\u00e0g ngw\u00f3\u014b",
+      "sa\u014b lepy\u00e8 sh\u00fam",
+      "sa\u014b c\u00ff\u00f3",
+      "sa\u014b ts\u025b\u0300\u025b c\u00ff\u00f3",
+      "sa\u014b nj\u00ffol\u00e1\u02bc",
+      "sa\u014b ty\u025b\u0300b ty\u025b\u0300b mb\u0289\u0300",
+      "sa\u014b mb\u0289\u0300\u014b",
+      "sa\u014b ngw\u0254\u0300\u02bc mb\u00ff\u025b",
+      "sa\u014b t\u00e0\u014ba tsets\u00e1\u02bc",
+      "sa\u014b mejwo\u014b\u00f3",
+      "sa\u014b l\u00f9m"
+    ],
+    "SHORTDAY": [
+      "ly\u025b\u02bc\u025b\u0301 s\u1e85\u00ed\u014bt\u00e8",
+      "mvf\u00f2 ly\u025b\u030c\u02bc",
+      "mb\u0254\u0301\u0254nt\u00e8 mvf\u00f2 ly\u025b\u030c\u02bc",
+      "ts\u00e8ts\u025b\u0300\u025b ly\u025b\u030c\u02bc",
+      "mb\u0254\u0301\u0254nt\u00e8 tsets\u025b\u0300\u025b ly\u025b\u030c\u02bc",
+      "mvf\u00f2 m\u00e0ga ly\u025b\u030c\u02bc",
+      "m\u00e0ga ly\u025b\u030c\u02bc"
+    ],
+    "SHORTMONTH": [
+      "sa\u014b tsets\u025b\u0300\u025b l\u00f9m",
+      "sa\u014b k\u00e0g ngw\u00f3\u014b",
+      "sa\u014b lepy\u00e8 sh\u00fam",
+      "sa\u014b c\u00ff\u00f3",
+      "sa\u014b ts\u025b\u0300\u025b c\u00ff\u00f3",
+      "sa\u014b nj\u00ffol\u00e1\u02bc",
+      "sa\u014b ty\u025b\u0300b ty\u025b\u0300b mb\u0289\u0300",
+      "sa\u014b mb\u0289\u0300\u014b",
+      "sa\u014b ngw\u0254\u0300\u02bc mb\u00ff\u025b",
+      "sa\u014b t\u00e0\u014ba tsets\u00e1\u02bc",
+      "sa\u014b mejwo\u014b\u00f3",
+      "sa\u014b l\u00f9m"
+    ],
+    "STANDALONEMONTH": [
+      "sa\u014b tsets\u025b\u0300\u025b l\u00f9m",
+      "sa\u014b k\u00e0g ngw\u00f3\u014b",
+      "sa\u014b lepy\u00e8 sh\u00fam",
+      "sa\u014b c\u00ff\u00f3",
+      "sa\u014b ts\u025b\u0300\u025b c\u00ff\u00f3",
+      "sa\u014b nj\u00ffol\u00e1\u02bc",
+      "sa\u014b ty\u025b\u0300b ty\u025b\u0300b mb\u0289\u0300",
+      "sa\u014b mb\u0289\u0300\u014b",
+      "sa\u014b ngw\u0254\u0300\u02bc mb\u00ff\u025b",
+      "sa\u014b t\u00e0\u014ba tsets\u00e1\u02bc",
+      "sa\u014b mejwo\u014b\u00f3",
+      "sa\u014b l\u00f9m"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE , 'ly\u025b'\u030c\u02bc d 'na' MMMM, y",
+    "longDate": "'ly\u025b'\u030c\u02bc d 'na' MMMM, y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/yy HH:mm",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "nnh",
+  "localeID": "nnh",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_no-no.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_no-no.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_no-no.js
new file mode 100644
index 0000000..89e161d
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_no-no.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a.m.",
+      "p.m."
+    ],
+    "DAY": [
+      "s\u00f8ndag",
+      "mandag",
+      "tirsdag",
+      "onsdag",
+      "torsdag",
+      "fredag",
+      "l\u00f8rdag"
+    ],
+    "ERANAMES": [
+      "f.Kr.",
+      "e.Kr."
+    ],
+    "ERAS": [
+      "f.Kr.",
+      "e.Kr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "januar",
+      "februar",
+      "mars",
+      "april",
+      "mai",
+      "juni",
+      "juli",
+      "august",
+      "september",
+      "oktober",
+      "november",
+      "desember"
+    ],
+    "SHORTDAY": [
+      "s\u00f8n.",
+      "man.",
+      "tir.",
+      "ons.",
+      "tor.",
+      "fre.",
+      "l\u00f8r."
+    ],
+    "SHORTMONTH": [
+      "jan.",
+      "feb.",
+      "mar.",
+      "apr.",
+      "mai",
+      "jun.",
+      "jul.",
+      "aug.",
+      "sep.",
+      "okt.",
+      "nov.",
+      "des."
+    ],
+    "STANDALONEMONTH": [
+      "januar",
+      "februar",
+      "mars",
+      "april",
+      "mai",
+      "juni",
+      "juli",
+      "august",
+      "september",
+      "oktober",
+      "november",
+      "desember"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "d. MMM y HH.mm.ss",
+    "mediumDate": "d. MMM y",
+    "mediumTime": "HH.mm.ss",
+    "short": "dd.MM.y HH.mm",
+    "shortDate": "dd.MM.y",
+    "shortTime": "HH.mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "kr",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "no-no",
+  "localeID": "no_NO",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_no.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_no.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_no.js
new file mode 100644
index 0000000..d9dd6a3
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_no.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a.m.",
+      "p.m."
+    ],
+    "DAY": [
+      "s\u00f8ndag",
+      "mandag",
+      "tirsdag",
+      "onsdag",
+      "torsdag",
+      "fredag",
+      "l\u00f8rdag"
+    ],
+    "ERANAMES": [
+      "f.Kr.",
+      "e.Kr."
+    ],
+    "ERAS": [
+      "f.Kr.",
+      "e.Kr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "januar",
+      "februar",
+      "mars",
+      "april",
+      "mai",
+      "juni",
+      "juli",
+      "august",
+      "september",
+      "oktober",
+      "november",
+      "desember"
+    ],
+    "SHORTDAY": [
+      "s\u00f8n.",
+      "man.",
+      "tir.",
+      "ons.",
+      "tor.",
+      "fre.",
+      "l\u00f8r."
+    ],
+    "SHORTMONTH": [
+      "jan.",
+      "feb.",
+      "mar.",
+      "apr.",
+      "mai",
+      "jun.",
+      "jul.",
+      "aug.",
+      "sep.",
+      "okt.",
+      "nov.",
+      "des."
+    ],
+    "STANDALONEMONTH": [
+      "januar",
+      "februar",
+      "mars",
+      "april",
+      "mai",
+      "juni",
+      "juli",
+      "august",
+      "september",
+      "oktober",
+      "november",
+      "desember"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "d. MMM y HH.mm.ss",
+    "mediumDate": "d. MMM y",
+    "mediumTime": "HH.mm.ss",
+    "short": "dd.MM.y HH.mm",
+    "shortDate": "dd.MM.y",
+    "shortTime": "HH.mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "kr",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "no",
+  "localeID": "no",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nr-za.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nr-za.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nr-za.js
new file mode 100644
index 0000000..60a2745
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nr-za.js
@@ -0,0 +1,128 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "uSonto",
+      "uMvulo",
+      "uLesibili",
+      "Lesithathu",
+      "uLesine",
+      "ngoLesihlanu",
+      "umGqibelo"
+    ],
+    "ERANAMES": [
+      "BC",
+      "AD"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "Janabari",
+      "uFeberbari",
+      "uMatjhi",
+      "u-Apreli",
+      "Meyi",
+      "Juni",
+      "Julayi",
+      "Arhostosi",
+      "Septemba",
+      "Oktoba",
+      "Usinyikhaba",
+      "Disemba"
+    ],
+    "SHORTDAY": [
+      "Son",
+      "Mvu",
+      "Bil",
+      "Tha",
+      "Ne",
+      "Hla",
+      "Gqi"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mat",
+      "Apr",
+      "Mey",
+      "Jun",
+      "Jul",
+      "Arh",
+      "Sep",
+      "Okt",
+      "Usi",
+      "Dis"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "y MMMM d, EEEE",
+    "longDate": "y MMMM d",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "y-MM-dd HH:mm",
+    "shortDate": "y-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "R",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4-",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "nr-za",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nr.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nr.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nr.js
new file mode 100644
index 0000000..daa76c0
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nr.js
@@ -0,0 +1,128 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "uSonto",
+      "uMvulo",
+      "uLesibili",
+      "Lesithathu",
+      "uLesine",
+      "ngoLesihlanu",
+      "umGqibelo"
+    ],
+    "ERANAMES": [
+      "BC",
+      "AD"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "Janabari",
+      "uFeberbari",
+      "uMatjhi",
+      "u-Apreli",
+      "Meyi",
+      "Juni",
+      "Julayi",
+      "Arhostosi",
+      "Septemba",
+      "Oktoba",
+      "Usinyikhaba",
+      "Disemba"
+    ],
+    "SHORTDAY": [
+      "Son",
+      "Mvu",
+      "Bil",
+      "Tha",
+      "Ne",
+      "Hla",
+      "Gqi"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mat",
+      "Apr",
+      "Mey",
+      "Jun",
+      "Jul",
+      "Arh",
+      "Sep",
+      "Okt",
+      "Usi",
+      "Dis"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "y MMMM d, EEEE",
+    "longDate": "y MMMM d",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "y-MM-dd HH:mm",
+    "shortDate": "y-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "R",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4-",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "nr",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nso-za.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nso-za.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nso-za.js
new file mode 100644
index 0000000..493ec38
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nso-za.js
@@ -0,0 +1,128 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sontaga",
+      "Mosupalogo",
+      "Labobedi",
+      "Laboraro",
+      "Labone",
+      "Labohlano",
+      "Mokibelo"
+    ],
+    "ERANAMES": [
+      "BCE",
+      "CE"
+    ],
+    "ERAS": [
+      "BCE",
+      "CE"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "Janaware",
+      "Feberware",
+      "Mat\u0161he",
+      "Aporele",
+      "Mei",
+      "June",
+      "Julae",
+      "Agostose",
+      "Setemere",
+      "Oktobore",
+      "Nofemere",
+      "Disemere"
+    ],
+    "SHORTDAY": [
+      "Son",
+      "Mos",
+      "Bed",
+      "Rar",
+      "Ne",
+      "Hla",
+      "Mok"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mat",
+      "Apo",
+      "Mei",
+      "Jun",
+      "Jul",
+      "Ago",
+      "Set",
+      "Okt",
+      "Nof",
+      "Dis"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "y MMMM d, EEEE",
+    "longDate": "y MMMM d",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "y-MM-dd HH:mm",
+    "shortDate": "y-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "R",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4-",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "nso-za",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nso.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nso.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nso.js
new file mode 100644
index 0000000..50d5663
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nso.js
@@ -0,0 +1,128 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sontaga",
+      "Mosupalogo",
+      "Labobedi",
+      "Laboraro",
+      "Labone",
+      "Labohlano",
+      "Mokibelo"
+    ],
+    "ERANAMES": [
+      "BCE",
+      "CE"
+    ],
+    "ERAS": [
+      "BCE",
+      "CE"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "Janaware",
+      "Feberware",
+      "Mat\u0161he",
+      "Aporele",
+      "Mei",
+      "June",
+      "Julae",
+      "Agostose",
+      "Setemere",
+      "Oktobore",
+      "Nofemere",
+      "Disemere"
+    ],
+    "SHORTDAY": [
+      "Son",
+      "Mos",
+      "Bed",
+      "Rar",
+      "Ne",
+      "Hla",
+      "Mok"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mat",
+      "Apo",
+      "Mei",
+      "Jun",
+      "Jul",
+      "Ago",
+      "Set",
+      "Okt",
+      "Nof",
+      "Dis"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "y MMMM d, EEEE",
+    "longDate": "y MMMM d",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "y-MM-dd HH:mm",
+    "shortDate": "y-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "R",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4-",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "nso",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nus-sd.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nus-sd.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nus-sd.js
new file mode 100644
index 0000000..4c19d63
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nus-sd.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "RW",
+      "T\u014a"
+    ],
+    "DAY": [
+      "C\u00e4\u014b ku\u0254th",
+      "Jiec la\u0331t",
+      "R\u025bw l\u00e4tni",
+      "Di\u0254\u0331k l\u00e4tni",
+      "\u014auaan l\u00e4tni",
+      "Dhieec l\u00e4tni",
+      "B\u00e4k\u025bl l\u00e4tni"
+    ],
+    "ERANAMES": [
+      "A ka\u0331n Yecu ni dap",
+      "\u0190 ca Yecu dap"
+    ],
+    "ERAS": [
+      "AY",
+      "\u0190Y"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Tiop thar p\u025bt",
+      "P\u025bt",
+      "Du\u0254\u0331\u0254\u0331\u014b",
+      "Guak",
+      "Du\u00e4t",
+      "Kornyoot",
+      "Pay yie\u0331tni",
+      "Tho\u0331o\u0331r",
+      "T\u025b\u025br",
+      "Laath",
+      "Kur",
+      "Tio\u0331p in di\u0331i\u0331t"
+    ],
+    "SHORTDAY": [
+      "C\u00e4\u014b",
+      "Jiec",
+      "R\u025bw",
+      "Di\u0254\u0331k",
+      "\u014auaan",
+      "Dhieec",
+      "B\u00e4k\u025bl"
+    ],
+    "SHORTMONTH": [
+      "Tiop",
+      "P\u025bt",
+      "Du\u0254\u0331\u0254\u0331",
+      "Guak",
+      "Du\u00e4",
+      "Kor",
+      "Pay",
+      "Thoo",
+      "T\u025b\u025b",
+      "Laa",
+      "Kur",
+      "Tid"
+    ],
+    "STANDALONEMONTH": [
+      "Tiop thar p\u025bt",
+      "P\u025bt",
+      "Du\u0254\u0331\u0254\u0331\u014b",
+      "Guak",
+      "Du\u00e4t",
+      "Kornyoot",
+      "Pay yie\u0331tni",
+      "Tho\u0331o\u0331r",
+      "T\u025b\u025br",
+      "Laath",
+      "Kur",
+      "Tio\u0331p in di\u0331i\u0331t"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/MM/y h:mm a",
+    "shortDate": "d/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "SDG",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "nus-sd",
+  "localeID": "nus_SD",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nus.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nus.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nus.js
new file mode 100644
index 0000000..24c8efd
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nus.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "RW",
+      "T\u014a"
+    ],
+    "DAY": [
+      "C\u00e4\u014b ku\u0254th",
+      "Jiec la\u0331t",
+      "R\u025bw l\u00e4tni",
+      "Di\u0254\u0331k l\u00e4tni",
+      "\u014auaan l\u00e4tni",
+      "Dhieec l\u00e4tni",
+      "B\u00e4k\u025bl l\u00e4tni"
+    ],
+    "ERANAMES": [
+      "A ka\u0331n Yecu ni dap",
+      "\u0190 ca Yecu dap"
+    ],
+    "ERAS": [
+      "AY",
+      "\u0190Y"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Tiop thar p\u025bt",
+      "P\u025bt",
+      "Du\u0254\u0331\u0254\u0331\u014b",
+      "Guak",
+      "Du\u00e4t",
+      "Kornyoot",
+      "Pay yie\u0331tni",
+      "Tho\u0331o\u0331r",
+      "T\u025b\u025br",
+      "Laath",
+      "Kur",
+      "Tio\u0331p in di\u0331i\u0331t"
+    ],
+    "SHORTDAY": [
+      "C\u00e4\u014b",
+      "Jiec",
+      "R\u025bw",
+      "Di\u0254\u0331k",
+      "\u014auaan",
+      "Dhieec",
+      "B\u00e4k\u025bl"
+    ],
+    "SHORTMONTH": [
+      "Tiop",
+      "P\u025bt",
+      "Du\u0254\u0331\u0254\u0331",
+      "Guak",
+      "Du\u00e4",
+      "Kor",
+      "Pay",
+      "Thoo",
+      "T\u025b\u025b",
+      "Laa",
+      "Kur",
+      "Tid"
+    ],
+    "STANDALONEMONTH": [
+      "Tiop thar p\u025bt",
+      "P\u025bt",
+      "Du\u0254\u0331\u0254\u0331\u014b",
+      "Guak",
+      "Du\u00e4t",
+      "Kornyoot",
+      "Pay yie\u0331tni",
+      "Tho\u0331o\u0331r",
+      "T\u025b\u025br",
+      "Laath",
+      "Kur",
+      "Tio\u0331p in di\u0331i\u0331t"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/MM/y h:mm a",
+    "shortDate": "d/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "SDG",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "nus",
+  "localeID": "nus",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nyn-ug.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nyn-ug.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nyn-ug.js
new file mode 100644
index 0000000..0d02342
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nyn-ug.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sande",
+      "Orwokubanza",
+      "Orwakabiri",
+      "Orwakashatu",
+      "Orwakana",
+      "Orwakataano",
+      "Orwamukaaga"
+    ],
+    "ERANAMES": [
+      "Kurisito Atakaijire",
+      "Kurisito Yaijire"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Okwokubanza",
+      "Okwakabiri",
+      "Okwakashatu",
+      "Okwakana",
+      "Okwakataana",
+      "Okwamukaaga",
+      "Okwamushanju",
+      "Okwamunaana",
+      "Okwamwenda",
+      "Okwaikumi",
+      "Okwaikumi na kumwe",
+      "Okwaikumi na ibiri"
+    ],
+    "SHORTDAY": [
+      "SAN",
+      "ORK",
+      "OKB",
+      "OKS",
+      "OKN",
+      "OKT",
+      "OMK"
+    ],
+    "SHORTMONTH": [
+      "KBZ",
+      "KBR",
+      "KST",
+      "KKN",
+      "KTN",
+      "KMK",
+      "KMS",
+      "KMN",
+      "KMW",
+      "KKM",
+      "KNK",
+      "KNB"
+    ],
+    "STANDALONEMONTH": [
+      "Okwokubanza",
+      "Okwakabiri",
+      "Okwakashatu",
+      "Okwakana",
+      "Okwakataana",
+      "Okwamukaaga",
+      "Okwamushanju",
+      "Okwamunaana",
+      "Okwamwenda",
+      "Okwaikumi",
+      "Okwaikumi na kumwe",
+      "Okwaikumi na ibiri"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "UGX",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "nyn-ug",
+  "localeID": "nyn_UG",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nyn.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nyn.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nyn.js
new file mode 100644
index 0000000..ffeed08
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_nyn.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Sande",
+      "Orwokubanza",
+      "Orwakabiri",
+      "Orwakashatu",
+      "Orwakana",
+      "Orwakataano",
+      "Orwamukaaga"
+    ],
+    "ERANAMES": [
+      "Kurisito Atakaijire",
+      "Kurisito Yaijire"
+    ],
+    "ERAS": [
+      "BC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Okwokubanza",
+      "Okwakabiri",
+      "Okwakashatu",
+      "Okwakana",
+      "Okwakataana",
+      "Okwamukaaga",
+      "Okwamushanju",
+      "Okwamunaana",
+      "Okwamwenda",
+      "Okwaikumi",
+      "Okwaikumi na kumwe",
+      "Okwaikumi na ibiri"
+    ],
+    "SHORTDAY": [
+      "SAN",
+      "ORK",
+      "OKB",
+      "OKS",
+      "OKN",
+      "OKT",
+      "OMK"
+    ],
+    "SHORTMONTH": [
+      "KBZ",
+      "KBR",
+      "KST",
+      "KKN",
+      "KTN",
+      "KMK",
+      "KMS",
+      "KMN",
+      "KMW",
+      "KKM",
+      "KNK",
+      "KNB"
+    ],
+    "STANDALONEMONTH": [
+      "Okwokubanza",
+      "Okwakabiri",
+      "Okwakashatu",
+      "Okwakana",
+      "Okwakataana",
+      "Okwamukaaga",
+      "Okwamushanju",
+      "Okwamunaana",
+      "Okwamwenda",
+      "Okwaikumi",
+      "Okwaikumi na kumwe",
+      "Okwaikumi na ibiri"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "UGX",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "nyn",
+  "localeID": "nyn",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_om-et.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_om-et.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_om-et.js
new file mode 100644
index 0000000..83ab18d
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_om-et.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "WD",
+      "WB"
+    ],
+    "DAY": [
+      "Dilbata",
+      "Wiixata",
+      "Qibxata",
+      "Roobii",
+      "Kamiisa",
+      "Jimaata",
+      "Sanbata"
+    ],
+    "ERANAMES": [
+      "KD",
+      "KB"
+    ],
+    "ERAS": [
+      "KD",
+      "KB"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Amajjii",
+      "Guraandhala",
+      "Bitooteessa",
+      "Elba",
+      "Caamsa",
+      "Waxabajjii",
+      "Adooleessa",
+      "Hagayya",
+      "Fuulbana",
+      "Onkololeessa",
+      "Sadaasa",
+      "Muddee"
+    ],
+    "SHORTDAY": [
+      "Dil",
+      "Wix",
+      "Qib",
+      "Rob",
+      "Kam",
+      "Jim",
+      "San"
+    ],
+    "SHORTMONTH": [
+      "Ama",
+      "Gur",
+      "Bit",
+      "Elb",
+      "Cam",
+      "Wax",
+      "Ado",
+      "Hag",
+      "Ful",
+      "Onk",
+      "Sad",
+      "Mud"
+    ],
+    "STANDALONEMONTH": [
+      "Amajjii",
+      "Guraandhala",
+      "Bitooteessa",
+      "Elba",
+      "Caamsa",
+      "Waxabajjii",
+      "Adooleessa",
+      "Hagayya",
+      "Fuulbana",
+      "Onkololeessa",
+      "Sadaasa",
+      "Muddee"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, MMMM d, y",
+    "longDate": "dd MMMM y",
+    "medium": "dd-MMM-y h:mm:ss a",
+    "mediumDate": "dd-MMM-y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/yy h:mm a",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Birr",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "om-et",
+  "localeID": "om_ET",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_om-ke.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_om-ke.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_om-ke.js
new file mode 100644
index 0000000..0d74a9a
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_om-ke.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "WD",
+      "WB"
+    ],
+    "DAY": [
+      "Dilbata",
+      "Wiixata",
+      "Qibxata",
+      "Roobii",
+      "Kamiisa",
+      "Jimaata",
+      "Sanbata"
+    ],
+    "ERANAMES": [
+      "KD",
+      "KB"
+    ],
+    "ERAS": [
+      "KD",
+      "KB"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Amajjii",
+      "Guraandhala",
+      "Bitooteessa",
+      "Elba",
+      "Caamsa",
+      "Waxabajjii",
+      "Adooleessa",
+      "Hagayya",
+      "Fuulbana",
+      "Onkololeessa",
+      "Sadaasa",
+      "Muddee"
+    ],
+    "SHORTDAY": [
+      "Dil",
+      "Wix",
+      "Qib",
+      "Rob",
+      "Kam",
+      "Jim",
+      "San"
+    ],
+    "SHORTMONTH": [
+      "Ama",
+      "Gur",
+      "Bit",
+      "Elb",
+      "Cam",
+      "Wax",
+      "Ado",
+      "Hag",
+      "Ful",
+      "Onk",
+      "Sad",
+      "Mud"
+    ],
+    "STANDALONEMONTH": [
+      "Amajjii",
+      "Guraandhala",
+      "Bitooteessa",
+      "Elba",
+      "Caamsa",
+      "Waxabajjii",
+      "Adooleessa",
+      "Hagayya",
+      "Fuulbana",
+      "Onkololeessa",
+      "Sadaasa",
+      "Muddee"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, MMMM d, y",
+    "longDate": "dd MMMM y",
+    "medium": "dd-MMM-y h:mm:ss a",
+    "mediumDate": "dd-MMM-y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/yy h:mm a",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Ksh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "om-ke",
+  "localeID": "om_KE",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_om.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_om.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_om.js
new file mode 100644
index 0000000..4608387
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_om.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "WD",
+      "WB"
+    ],
+    "DAY": [
+      "Dilbata",
+      "Wiixata",
+      "Qibxata",
+      "Roobii",
+      "Kamiisa",
+      "Jimaata",
+      "Sanbata"
+    ],
+    "ERANAMES": [
+      "KD",
+      "KB"
+    ],
+    "ERAS": [
+      "KD",
+      "KB"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Amajjii",
+      "Guraandhala",
+      "Bitooteessa",
+      "Elba",
+      "Caamsa",
+      "Waxabajjii",
+      "Adooleessa",
+      "Hagayya",
+      "Fuulbana",
+      "Onkololeessa",
+      "Sadaasa",
+      "Muddee"
+    ],
+    "SHORTDAY": [
+      "Dil",
+      "Wix",
+      "Qib",
+      "Rob",
+      "Kam",
+      "Jim",
+      "San"
+    ],
+    "SHORTMONTH": [
+      "Ama",
+      "Gur",
+      "Bit",
+      "Elb",
+      "Cam",
+      "Wax",
+      "Ado",
+      "Hag",
+      "Ful",
+      "Onk",
+      "Sad",
+      "Mud"
+    ],
+    "STANDALONEMONTH": [
+      "Amajjii",
+      "Guraandhala",
+      "Bitooteessa",
+      "Elba",
+      "Caamsa",
+      "Waxabajjii",
+      "Adooleessa",
+      "Hagayya",
+      "Fuulbana",
+      "Onkololeessa",
+      "Sadaasa",
+      "Muddee"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, MMMM d, y",
+    "longDate": "dd MMMM y",
+    "medium": "dd-MMM-y h:mm:ss a",
+    "mediumDate": "dd-MMM-y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/yy h:mm a",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Birr",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "om",
+  "localeID": "om",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_or-in.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_or-in.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_or-in.js
new file mode 100644
index 0000000..1e56090
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_or-in.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "am",
+      "pm"
+    ],
+    "DAY": [
+      "\u0b30\u0b2c\u0b3f\u0b2c\u0b3e\u0b30",
+      "\u0b38\u0b4b\u0b2e\u0b2c\u0b3e\u0b30",
+      "\u0b2e\u0b19\u0b4d\u0b17\u0b33\u0b2c\u0b3e\u0b30",
+      "\u0b2c\u0b41\u0b27\u0b2c\u0b3e\u0b30",
+      "\u0b17\u0b41\u0b30\u0b41\u0b2c\u0b3e\u0b30",
+      "\u0b36\u0b41\u0b15\u0b4d\u0b30\u0b2c\u0b3e\u0b30",
+      "\u0b36\u0b28\u0b3f\u0b2c\u0b3e\u0b30"
+    ],
+    "ERANAMES": [
+      "BCE",
+      "CE"
+    ],
+    "ERAS": [
+      "BCE",
+      "CE"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u0b1c\u0b3e\u0b28\u0b41\u0b06\u0b30\u0b40",
+      "\u0b2b\u0b47\u0b2c\u0b43\u0b06\u0b30\u0b40",
+      "\u0b2e\u0b3e\u0b30\u0b4d\u0b1a\u0b4d\u0b1a",
+      "\u0b05\u0b2a\u0b4d\u0b30\u0b47\u0b32",
+      "\u0b2e\u0b07",
+      "\u0b1c\u0b41\u0b28",
+      "\u0b1c\u0b41\u0b32\u0b3e\u0b07",
+      "\u0b05\u0b17\u0b37\u0b4d\u0b1f",
+      "\u0b38\u0b47\u0b2a\u0b4d\u0b1f\u0b47\u0b2e\u0b4d\u0b2c\u0b30",
+      "\u0b05\u0b15\u0b4d\u0b1f\u0b4b\u0b2c\u0b30",
+      "\u0b28\u0b2d\u0b47\u0b2e\u0b4d\u0b2c\u0b30",
+      "\u0b21\u0b3f\u0b38\u0b47\u0b2e\u0b4d\u0b2c\u0b30"
+    ],
+    "SHORTDAY": [
+      "\u0b30\u0b2c\u0b3f",
+      "\u0b38\u0b4b\u0b2e",
+      "\u0b2e\u0b19\u0b4d\u0b17\u0b33",
+      "\u0b2c\u0b41\u0b27",
+      "\u0b17\u0b41\u0b30\u0b41",
+      "\u0b36\u0b41\u0b15\u0b4d\u0b30",
+      "\u0b36\u0b28\u0b3f"
+    ],
+    "SHORTMONTH": [
+      "\u0b1c\u0b3e\u0b28\u0b41\u0b06\u0b30\u0b40",
+      "\u0b2b\u0b47\u0b2c\u0b43\u0b06\u0b30\u0b40",
+      "\u0b2e\u0b3e\u0b30\u0b4d\u0b1a\u0b4d\u0b1a",
+      "\u0b05\u0b2a\u0b4d\u0b30\u0b47\u0b32",
+      "\u0b2e\u0b07",
+      "\u0b1c\u0b41\u0b28",
+      "\u0b1c\u0b41\u0b32\u0b3e\u0b07",
+      "\u0b05\u0b17\u0b37\u0b4d\u0b1f",
+      "\u0b38\u0b47\u0b2a\u0b4d\u0b1f\u0b47\u0b2e\u0b4d\u0b2c\u0b30",
+      "\u0b05\u0b15\u0b4d\u0b1f\u0b4b\u0b2c\u0b30",
+      "\u0b28\u0b2d\u0b47\u0b2e\u0b4d\u0b2c\u0b30",
+      "\u0b21\u0b3f\u0b38\u0b47\u0b2e\u0b4d\u0b2c\u0b30"
+    ],
+    "STANDALONEMONTH": [
+      "\u0b1c\u0b3e\u0b28\u0b41\u0b06\u0b30\u0b40",
+      "\u0b2b\u0b47\u0b2c\u0b43\u0b06\u0b30\u0b40",
+      "\u0b2e\u0b3e\u0b30\u0b4d\u0b1a\u0b4d\u0b1a",
+      "\u0b05\u0b2a\u0b4d\u0b30\u0b47\u0b32",
+      "\u0b2e\u0b07",
+      "\u0b1c\u0b41\u0b28",
+      "\u0b1c\u0b41\u0b32\u0b3e\u0b07",
+      "\u0b05\u0b17\u0b37\u0b4d\u0b1f",
+      "\u0b38\u0b47\u0b2a\u0b4d\u0b1f\u0b47\u0b2e\u0b4d\u0b2c\u0b30",
+      "\u0b05\u0b15\u0b4d\u0b1f\u0b4b\u0b2c\u0b30",
+      "\u0b28\u0b2d\u0b47\u0b2e\u0b4d\u0b2c\u0b30",
+      "\u0b21\u0b3f\u0b38\u0b47\u0b2e\u0b4d\u0b2c\u0b30"
+    ],
+    "WEEKENDRANGE": [
+      6,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d-M-yy h:mm a",
+    "shortDate": "d-M-yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20b9",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "or-in",
+  "localeID": "or_IN",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_or.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_or.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_or.js
new file mode 100644
index 0000000..9e46235
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_or.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "am",
+      "pm"
+    ],
+    "DAY": [
+      "\u0b30\u0b2c\u0b3f\u0b2c\u0b3e\u0b30",
+      "\u0b38\u0b4b\u0b2e\u0b2c\u0b3e\u0b30",
+      "\u0b2e\u0b19\u0b4d\u0b17\u0b33\u0b2c\u0b3e\u0b30",
+      "\u0b2c\u0b41\u0b27\u0b2c\u0b3e\u0b30",
+      "\u0b17\u0b41\u0b30\u0b41\u0b2c\u0b3e\u0b30",
+      "\u0b36\u0b41\u0b15\u0b4d\u0b30\u0b2c\u0b3e\u0b30",
+      "\u0b36\u0b28\u0b3f\u0b2c\u0b3e\u0b30"
+    ],
+    "ERANAMES": [
+      "BCE",
+      "CE"
+    ],
+    "ERAS": [
+      "BCE",
+      "CE"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u0b1c\u0b3e\u0b28\u0b41\u0b06\u0b30\u0b40",
+      "\u0b2b\u0b47\u0b2c\u0b43\u0b06\u0b30\u0b40",
+      "\u0b2e\u0b3e\u0b30\u0b4d\u0b1a\u0b4d\u0b1a",
+      "\u0b05\u0b2a\u0b4d\u0b30\u0b47\u0b32",
+      "\u0b2e\u0b07",
+      "\u0b1c\u0b41\u0b28",
+      "\u0b1c\u0b41\u0b32\u0b3e\u0b07",
+      "\u0b05\u0b17\u0b37\u0b4d\u0b1f",
+      "\u0b38\u0b47\u0b2a\u0b4d\u0b1f\u0b47\u0b2e\u0b4d\u0b2c\u0b30",
+      "\u0b05\u0b15\u0b4d\u0b1f\u0b4b\u0b2c\u0b30",
+      "\u0b28\u0b2d\u0b47\u0b2e\u0b4d\u0b2c\u0b30",
+      "\u0b21\u0b3f\u0b38\u0b47\u0b2e\u0b4d\u0b2c\u0b30"
+    ],
+    "SHORTDAY": [
+      "\u0b30\u0b2c\u0b3f",
+      "\u0b38\u0b4b\u0b2e",
+      "\u0b2e\u0b19\u0b4d\u0b17\u0b33",
+      "\u0b2c\u0b41\u0b27",
+      "\u0b17\u0b41\u0b30\u0b41",
+      "\u0b36\u0b41\u0b15\u0b4d\u0b30",
+      "\u0b36\u0b28\u0b3f"
+    ],
+    "SHORTMONTH": [
+      "\u0b1c\u0b3e\u0b28\u0b41\u0b06\u0b30\u0b40",
+      "\u0b2b\u0b47\u0b2c\u0b43\u0b06\u0b30\u0b40",
+      "\u0b2e\u0b3e\u0b30\u0b4d\u0b1a\u0b4d\u0b1a",
+      "\u0b05\u0b2a\u0b4d\u0b30\u0b47\u0b32",
+      "\u0b2e\u0b07",
+      "\u0b1c\u0b41\u0b28",
+      "\u0b1c\u0b41\u0b32\u0b3e\u0b07",
+      "\u0b05\u0b17\u0b37\u0b4d\u0b1f",
+      "\u0b38\u0b47\u0b2a\u0b4d\u0b1f\u0b47\u0b2e\u0b4d\u0b2c\u0b30",
+      "\u0b05\u0b15\u0b4d\u0b1f\u0b4b\u0b2c\u0b30",
+      "\u0b28\u0b2d\u0b47\u0b2e\u0b4d\u0b2c\u0b30",
+      "\u0b21\u0b3f\u0b38\u0b47\u0b2e\u0b4d\u0b2c\u0b30"
+    ],
+    "STANDALONEMONTH": [
+      "\u0b1c\u0b3e\u0b28\u0b41\u0b06\u0b30\u0b40",
+      "\u0b2b\u0b47\u0b2c\u0b43\u0b06\u0b30\u0b40",
+      "\u0b2e\u0b3e\u0b30\u0b4d\u0b1a\u0b4d\u0b1a",
+      "\u0b05\u0b2a\u0b4d\u0b30\u0b47\u0b32",
+      "\u0b2e\u0b07",
+      "\u0b1c\u0b41\u0b28",
+      "\u0b1c\u0b41\u0b32\u0b3e\u0b07",
+      "\u0b05\u0b17\u0b37\u0b4d\u0b1f",
+      "\u0b38\u0b47\u0b2a\u0b4d\u0b1f\u0b47\u0b2e\u0b4d\u0b2c\u0b30",
+      "\u0b05\u0b15\u0b4d\u0b1f\u0b4b\u0b2c\u0b30",
+      "\u0b28\u0b2d\u0b47\u0b2e\u0b4d\u0b2c\u0b30",
+      "\u0b21\u0b3f\u0b38\u0b47\u0b2e\u0b4d\u0b2c\u0b30"
+    ],
+    "WEEKENDRANGE": [
+      6,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d-M-yy h:mm a",
+    "shortDate": "d-M-yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20b9",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "or",
+  "localeID": "or",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);



[49/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/NamesvrController.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/NamesvrController.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/NamesvrController.java
new file mode 100644
index 0000000..ad6c25a
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/NamesvrController.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.controller;
+
+import javax.annotation.Resource;
+import org.apache.rocketmq.console.aspect.admin.annotation.OriginalControllerReturnValue;
+import org.apache.rocketmq.console.service.OpsService;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+@Controller
+@RequestMapping("/rocketmq")
+public class NamesvrController {
+    @Resource
+    private OpsService opsService;
+
+    @RequestMapping(value = "/nsaddr", method = RequestMethod.GET)
+    @ResponseBody
+    @OriginalControllerReturnValue
+    public Object nsaddr() {
+        return opsService.getNameSvrList();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/OpsController.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/OpsController.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/OpsController.java
new file mode 100644
index 0000000..d82862f
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/OpsController.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.controller;
+
+import javax.annotation.Resource;
+import org.apache.rocketmq.console.service.OpsService;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+@Controller
+@RequestMapping("/ops")
+public class OpsController {
+
+    @Resource
+    private OpsService opsService;
+
+    @RequestMapping(value = "/homePage.query", method = RequestMethod.GET)
+    @ResponseBody
+    public Object homePage() {
+        return opsService.homePageInfo();
+    }
+
+    @RequestMapping(value = "/updateNameSvrAddr.do", method = RequestMethod.POST)
+    @ResponseBody
+    public Object updateNameSvrAddr(@RequestParam String nameSvrAddrList) {
+        opsService.updateNameSvrAddrList(nameSvrAddrList);
+        return true;
+    }
+
+    @RequestMapping(value = "/updateIsVIPChannel.do", method = RequestMethod.POST)
+    @ResponseBody
+    public Object updateIsVIPChannel(@RequestParam String useVIPChannel) {
+        opsService.updateIsVIPChannel(useVIPChannel);
+        return true;
+    }
+
+
+    @RequestMapping(value = "/rocketMqStatus.query", method = RequestMethod.GET)
+    @ResponseBody
+    public Object clusterStatus() {
+        return opsService.rocketMqStatusCheck();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/ProducerController.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/ProducerController.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/ProducerController.java
new file mode 100644
index 0000000..1a69de5
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/ProducerController.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.controller;
+
+import javax.annotation.Resource;
+import org.apache.rocketmq.common.protocol.body.ProducerConnection;
+import org.apache.rocketmq.console.model.ConnectionInfo;
+import org.apache.rocketmq.console.service.ProducerService;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+@Controller
+@RequestMapping("/producer")
+public class ProducerController {
+
+    @Resource
+    private ProducerService producerService;
+
+    @RequestMapping(value = "/producerConnection.query", method = {RequestMethod.GET})
+    @ResponseBody
+    public Object producerConnection(@RequestParam String producerGroup, @RequestParam String topic) {
+        ProducerConnection producerConnection = producerService.getProducerConnection(producerGroup, topic);
+        producerConnection.setConnectionSet(ConnectionInfo.buildConnectionInfoHashSet(producerConnection.getConnectionSet()));
+        return producerConnection;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/TestController.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/TestController.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/TestController.java
new file mode 100644
index 0000000..d7af1ad
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/TestController.java
@@ -0,0 +1,101 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.controller;
+
+import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
+import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
+import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
+import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
+import org.apache.rocketmq.client.exception.MQClientException;
+import org.apache.rocketmq.client.producer.DefaultMQProducer;
+import org.apache.rocketmq.client.producer.SendResult;
+import org.apache.rocketmq.common.consumer.ConsumeFromWhere;
+import org.apache.rocketmq.common.message.Message;
+import org.apache.rocketmq.common.message.MessageExt;
+import org.apache.rocketmq.remoting.exception.RemotingException;
+import java.util.List;
+import javax.annotation.Resource;
+import org.apache.rocketmq.console.config.RMQConfigure;
+import org.apache.rocketmq.console.util.JsonUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+@Controller
+@RequestMapping("/test")
+public class TestController {
+    private Logger logger = LoggerFactory.getLogger(TestController.class);
+    private String testTopic = "TestTopic";
+
+    @Resource
+    private RMQConfigure rMQConfigure;
+
+    @RequestMapping(value = "/runTask.do", method = RequestMethod.GET)
+    @ResponseBody
+    public Object list() throws MQClientException, RemotingException, InterruptedException {
+        DefaultMQPushConsumer consumer = new DefaultMQPushConsumer(testTopic + "Group");
+        consumer.setNamesrvAddr(rMQConfigure.getNamesrvAddr());
+        consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);
+        consumer.subscribe(testTopic, "*");
+        consumer.registerMessageListener(new MessageListenerConcurrently() {
+
+            @Override
+            public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs,
+                ConsumeConcurrentlyContext context) {
+                logger.info("receiveMessage msgSize={}", msgs.size());
+                return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
+            }
+        });
+        consumer.start();
+        final DefaultMQProducer producer = new DefaultMQProducer(testTopic + "Group");
+        producer.setInstanceName(String.valueOf(System.currentTimeMillis()));
+        producer.setNamesrvAddr(rMQConfigure.getNamesrvAddr());
+        producer.start();
+
+        new Thread(new Runnable() {
+
+            @Override public void run() {
+
+                int i = 0;
+                while (true) {
+                    try {
+                        Message msg = new Message(testTopic,
+                            "TagA" + i,
+                            "KEYS" + i,
+                            ("Hello RocketMQ " + i).getBytes()
+                        );
+                        Thread.sleep(1000L);
+                        SendResult sendResult = producer.send(msg);
+                        logger.info("sendMessage={}", JsonUtil.obj2String(sendResult));
+                    }
+                    catch (Exception e) {
+                        e.printStackTrace();
+                        try {
+                            Thread.sleep(1000);
+                        }
+                        catch (Exception ignore) {
+                        }
+                    }
+                }
+            }
+        }).start();
+        return true;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/TopicController.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/TopicController.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/TopicController.java
new file mode 100644
index 0000000..90819af
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/TopicController.java
@@ -0,0 +1,117 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.controller;
+
+import org.apache.rocketmq.client.exception.MQClientException;
+import org.apache.rocketmq.remoting.exception.RemotingException;
+import org.apache.rocketmq.console.model.request.SendTopicMessageRequest;
+import org.apache.rocketmq.console.model.request.TopicConfigInfo;
+import org.apache.rocketmq.console.service.ConsumerService;
+import org.apache.rocketmq.console.service.TopicService;
+import org.apache.rocketmq.console.util.JsonUtil;
+import com.google.common.base.Preconditions;
+import org.apache.commons.collections.CollectionUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import javax.annotation.Resource;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+@Controller
+@RequestMapping("/topic")
+public class TopicController {
+    private Logger logger = LoggerFactory.getLogger(TopicController.class);
+
+    @Resource
+    private TopicService topicService;
+
+    @Resource
+    private ConsumerService consumerService;
+
+    @RequestMapping(value = "/list.query", method = RequestMethod.GET)
+    @ResponseBody
+    public Object list() throws MQClientException, RemotingException, InterruptedException {
+        return topicService.fetchAllTopicList();
+    }
+
+    @RequestMapping(value = "/stats.query", method = RequestMethod.GET)
+    @ResponseBody
+    public Object stats(@RequestParam String topic) {
+        return topicService.stats(topic);
+    }
+
+    @RequestMapping(value = "/route.query", method = RequestMethod.GET)
+    @ResponseBody
+    public Object route(@RequestParam String topic) {
+        return topicService.route(topic);
+    }
+
+
+    @RequestMapping(value = "/createOrUpdate.do", method = { RequestMethod.POST})
+    @ResponseBody
+    public Object topicCreateOrUpdateRequest(@RequestBody TopicConfigInfo topicCreateOrUpdateRequest) {
+        Preconditions.checkArgument(CollectionUtils.isNotEmpty(topicCreateOrUpdateRequest.getBrokerNameList()) || CollectionUtils.isNotEmpty(topicCreateOrUpdateRequest.getClusterNameList()),
+            "clusterName or brokerName can not be all blank");
+        logger.info("op=look topicCreateOrUpdateRequest={}", JsonUtil.obj2String(topicCreateOrUpdateRequest));
+        topicService.createOrUpdate(topicCreateOrUpdateRequest);
+        return true;
+    }
+
+    @RequestMapping(value = "/queryConsumerByTopic.query")
+    @ResponseBody
+    public Object queryConsumerByTopic(@RequestParam String topic) {
+        return consumerService.queryConsumeStatsListByTopicName(topic);
+    }
+
+    @RequestMapping(value = "/queryTopicConsumerInfo.query")
+    @ResponseBody
+    public Object queryTopicConsumerInfo(@RequestParam String topic) {
+        return topicService.queryTopicConsumerInfo(topic);
+    }
+
+    @RequestMapping(value = "/examineTopicConfig.query")
+    @ResponseBody
+    public Object examineTopicConfig(@RequestParam String topic,
+        @RequestParam(required = false) String brokerName) throws RemotingException, MQClientException, InterruptedException {
+        return topicService.examineTopicConfig(topic);
+    }
+
+    @RequestMapping(value = "/sendTopicMessage.do", method = {RequestMethod.POST})
+    @ResponseBody
+    public Object sendTopicMessage(
+        @RequestBody SendTopicMessageRequest sendTopicMessageRequest) throws RemotingException, MQClientException, InterruptedException {
+        return topicService.sendTopicMessageRequest(sendTopicMessageRequest);
+    }
+
+    @RequestMapping(value = "/deleteTopic.do", method = {RequestMethod.POST})
+    @ResponseBody
+    public Object delete(@RequestParam(required = false) String clusterName, @RequestParam String topic) {
+        return topicService.deleteTopic(topic, clusterName);
+    }
+
+    @RequestMapping(value = "/deleteTopicByBroker.do", method = {RequestMethod.POST})
+    @ResponseBody
+    public Object deleteTopicByBroker(@RequestParam String brokerName, @RequestParam String topic) {
+        return topicService.deleteTopicInBroker(brokerName, topic);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/exception/ServiceException.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/exception/ServiceException.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/exception/ServiceException.java
new file mode 100644
index 0000000..7ad166b
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/exception/ServiceException.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.exception;
+
+public class ServiceException extends RuntimeException {
+    private static final long serialVersionUID = 9213584003139969215L;
+    private int code;
+
+    public ServiceException(int code, String message) {
+        super(message);
+        this.code = code;
+    }
+
+    public int getCode() {
+        return code;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/ConnectionInfo.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/ConnectionInfo.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/ConnectionInfo.java
new file mode 100644
index 0000000..6e8dd19
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/ConnectionInfo.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.model;
+
+import com.google.common.collect.Sets;
+import java.util.Collection;
+import java.util.HashSet;
+import org.apache.rocketmq.common.MQVersion;
+import org.apache.rocketmq.common.protocol.body.Connection;
+
+public class ConnectionInfo extends Connection {
+    private String versionDesc;
+
+    public static ConnectionInfo buildConnectionInfo(Connection connection) {
+        ConnectionInfo connectionInfo = new ConnectionInfo();
+        connectionInfo.setClientId(connection.getClientId());
+        connectionInfo.setClientAddr(connection.getClientAddr());
+        connectionInfo.setLanguage(connection.getLanguage());
+        connectionInfo.setVersion(connection.getVersion());
+        connectionInfo.setVersionDesc(MQVersion.getVersionDesc(connection.getVersion()));
+        return connectionInfo;
+    }
+
+    public static HashSet<Connection> buildConnectionInfoHashSet(Collection<Connection> connectionList) {
+        HashSet<Connection> connectionHashSet = Sets.newHashSet();
+        for (Connection connection : connectionList) {
+            connectionHashSet.add(buildConnectionInfo(connection));
+        }
+        return connectionHashSet;
+    }
+
+    public String getVersionDesc() {
+        return versionDesc;
+    }
+
+    public void setVersionDesc(String versionDesc) {
+        this.versionDesc = versionDesc;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/ConsumerGroupRollBackStat.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/ConsumerGroupRollBackStat.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/ConsumerGroupRollBackStat.java
new file mode 100644
index 0000000..3ddfe07
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/ConsumerGroupRollBackStat.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.model;
+
+import org.apache.rocketmq.common.admin.RollbackStats;
+import com.google.common.collect.Lists;
+
+import java.util.List;
+
+public class ConsumerGroupRollBackStat {
+    private boolean status;
+    private String errMsg;
+    private List<RollbackStats> rollbackStatsList = Lists.newArrayList();
+
+    public ConsumerGroupRollBackStat(boolean status) {
+        this.status = status;
+    }
+
+    public ConsumerGroupRollBackStat(boolean status, String errMsg) {
+        this.status = status;
+        this.errMsg = errMsg;
+    }
+
+    public String getErrMsg() {
+        return errMsg;
+    }
+
+    public void setErrMsg(String errMsg) {
+        this.errMsg = errMsg;
+    }
+
+    public boolean isStatus() {
+        return status;
+    }
+
+    public void setStatus(boolean status) {
+        this.status = status;
+    }
+
+    public List<RollbackStats> getRollbackStatsList() {
+        return rollbackStatsList;
+    }
+
+    public void setRollbackStatsList(List<RollbackStats> rollbackStatsList) {
+        this.rollbackStatsList = rollbackStatsList;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/ConsumerMonitorConfig.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/ConsumerMonitorConfig.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/ConsumerMonitorConfig.java
new file mode 100644
index 0000000..9124f00
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/ConsumerMonitorConfig.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.model;
+
+public class ConsumerMonitorConfig {
+    private int minCount;
+    private int maxDiffTotal;
+
+    public ConsumerMonitorConfig() {
+    }
+
+    public ConsumerMonitorConfig(int minCount, int maxDiffTotal) {
+        this.minCount = minCount;
+        this.maxDiffTotal = maxDiffTotal;
+    }
+
+    public int getMinCount() {
+        return minCount;
+    }
+
+    public void setMinCount(int minCount) {
+        this.minCount = minCount;
+    }
+
+    public int getMaxDiffTotal() {
+        return maxDiffTotal;
+    }
+
+    public void setMaxDiffTotal(int maxDiffTotal) {
+        this.maxDiffTotal = maxDiffTotal;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/GroupConsumeInfo.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/GroupConsumeInfo.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/GroupConsumeInfo.java
new file mode 100644
index 0000000..27c5f92
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/GroupConsumeInfo.java
@@ -0,0 +1,95 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.model;
+
+import org.apache.rocketmq.common.protocol.heartbeat.ConsumeType;
+import org.apache.rocketmq.common.protocol.heartbeat.MessageModel;
+
+public class GroupConsumeInfo implements Comparable<GroupConsumeInfo> {
+    private String group;
+    private String version;
+    private int count;
+    private ConsumeType consumeType;
+    private MessageModel messageModel;
+    private int consumeTps;
+    private long diffTotal = -1;
+
+    public String getGroup() {
+        return group;
+    }
+
+    public void setGroup(String group) {
+        this.group = group;
+    }
+
+    public int getCount() {
+        return count;
+    }
+
+    public void setCount(int count) {
+        this.count = count;
+    }
+
+    public ConsumeType getConsumeType() {
+        return consumeType;
+    }
+
+    public void setConsumeType(ConsumeType consumeType) {
+        this.consumeType = consumeType;
+    }
+
+    public MessageModel getMessageModel() {
+        return messageModel;
+    }
+
+    public void setMessageModel(MessageModel messageModel) {
+        this.messageModel = messageModel;
+    }
+
+    public long getDiffTotal() {
+        return diffTotal;
+    }
+
+    public void setDiffTotal(long diffTotal) {
+        this.diffTotal = diffTotal;
+    }
+
+    @Override
+    public int compareTo(GroupConsumeInfo o) {
+        if (this.count != o.count) {
+            return o.count - this.count;
+        }
+
+        return (int) (o.diffTotal - diffTotal);
+    }
+
+    public int getConsumeTps() {
+        return consumeTps;
+    }
+
+    public void setConsumeTps(int consumeTps) {
+        this.consumeTps = consumeTps;
+    }
+
+    public String getVersion() {
+        return version;
+    }
+
+    public void setVersion(String version) {
+        this.version = version;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/MessageView.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/MessageView.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/MessageView.java
new file mode 100644
index 0000000..4011cad
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/MessageView.java
@@ -0,0 +1,196 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.model;
+
+import org.apache.rocketmq.common.message.MessageExt;
+import com.google.common.base.Charsets;
+import org.springframework.beans.BeanUtils;
+
+import java.net.SocketAddress;
+import java.util.Map;
+
+public class MessageView {
+
+    /** from MessageExt **/
+    private int queueId;
+    private int storeSize;
+    private long queueOffset;
+    private int sysFlag;
+    private long bornTimestamp;
+    private SocketAddress bornHost;
+    private long storeTimestamp;
+    private SocketAddress storeHost;
+    private String msgId;
+    private long commitLogOffset;
+    private int bodyCRC;
+    private int reconsumeTimes;
+    private long preparedTransactionOffset;
+    /**from MessageExt**/
+
+    /** from Message **/
+    private String topic;
+    private int flag;
+    private Map<String, String> properties;
+    private String messageBody; // body
+
+    /** from Message **/
+
+    public static MessageView fromMessageExt(MessageExt messageExt) {
+        MessageView messageView = new MessageView();
+        BeanUtils.copyProperties(messageExt, messageView);
+        if (messageExt.getBody() != null) {
+            messageView.setMessageBody(new String(messageExt.getBody(), Charsets.UTF_8));
+        }
+        return messageView;
+    }
+
+    public String getTopic() {
+        return topic;
+    }
+
+    public void setTopic(String topic) {
+        this.topic = topic;
+    }
+
+    public int getFlag() {
+        return flag;
+    }
+
+    public void setFlag(int flag) {
+        this.flag = flag;
+    }
+
+    public Map<String, String> getProperties() {
+        return properties;
+    }
+
+    public void setProperties(Map<String, String> properties) {
+        this.properties = properties;
+    }
+
+    public int getQueueId() {
+        return queueId;
+    }
+
+    public void setQueueId(int queueId) {
+        this.queueId = queueId;
+    }
+
+    public int getStoreSize() {
+        return storeSize;
+    }
+
+    public void setStoreSize(int storeSize) {
+        this.storeSize = storeSize;
+    }
+
+    public long getQueueOffset() {
+        return queueOffset;
+    }
+
+    public void setQueueOffset(long queueOffset) {
+        this.queueOffset = queueOffset;
+    }
+
+    public int getSysFlag() {
+        return sysFlag;
+    }
+
+    public void setSysFlag(int sysFlag) {
+        this.sysFlag = sysFlag;
+    }
+
+    public long getBornTimestamp() {
+        return bornTimestamp;
+    }
+
+    public void setBornTimestamp(long bornTimestamp) {
+        this.bornTimestamp = bornTimestamp;
+    }
+
+    public SocketAddress getBornHost() {
+        return bornHost;
+    }
+
+    public void setBornHost(SocketAddress bornHost) {
+        this.bornHost = bornHost;
+    }
+
+    public long getStoreTimestamp() {
+        return storeTimestamp;
+    }
+
+    public void setStoreTimestamp(long storeTimestamp) {
+        this.storeTimestamp = storeTimestamp;
+    }
+
+    public SocketAddress getStoreHost() {
+        return storeHost;
+    }
+
+    public void setStoreHost(SocketAddress storeHost) {
+        this.storeHost = storeHost;
+    }
+
+    public String getMsgId() {
+        return msgId;
+    }
+
+    public void setMsgId(String msgId) {
+        this.msgId = msgId;
+    }
+
+    public long getCommitLogOffset() {
+        return commitLogOffset;
+    }
+
+    public void setCommitLogOffset(long commitLogOffset) {
+        this.commitLogOffset = commitLogOffset;
+    }
+
+    public int getBodyCRC() {
+        return bodyCRC;
+    }
+
+    public void setBodyCRC(int bodyCRC) {
+        this.bodyCRC = bodyCRC;
+    }
+
+    public int getReconsumeTimes() {
+        return reconsumeTimes;
+    }
+
+    public void setReconsumeTimes(int reconsumeTimes) {
+        this.reconsumeTimes = reconsumeTimes;
+    }
+
+    public long getPreparedTransactionOffset() {
+        return preparedTransactionOffset;
+    }
+
+    public void setPreparedTransactionOffset(long preparedTransactionOffset) {
+        this.preparedTransactionOffset = preparedTransactionOffset;
+    }
+
+    public String getMessageBody() {
+        return messageBody;
+    }
+
+    public void setMessageBody(String messageBody) {
+        this.messageBody = messageBody;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/QueueStatInfo.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/QueueStatInfo.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/QueueStatInfo.java
new file mode 100644
index 0000000..a6d67a8
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/QueueStatInfo.java
@@ -0,0 +1,85 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.model;
+
+import org.apache.rocketmq.common.admin.OffsetWrapper;
+import org.apache.rocketmq.common.message.MessageQueue;
+import org.springframework.beans.BeanUtils;
+
+public class QueueStatInfo {
+    private String brokerName;
+    private int queueId;
+    private long brokerOffset;
+    private long consumerOffset;
+    private String clientInfo;
+    private long lastTimestamp;
+
+    public static QueueStatInfo fromOffsetTableEntry(MessageQueue key, OffsetWrapper value) {
+        QueueStatInfo queueStatInfo = new QueueStatInfo();
+        BeanUtils.copyProperties(key, queueStatInfo);
+        BeanUtils.copyProperties(value, queueStatInfo);
+        return queueStatInfo;
+    }
+
+    public String getClientInfo() {
+        return clientInfo;
+    }
+
+    public void setClientInfo(String clientInfo) {
+        this.clientInfo = clientInfo;
+    }
+
+    public String getBrokerName() {
+        return brokerName;
+    }
+
+    public void setBrokerName(String brokerName) {
+        this.brokerName = brokerName;
+    }
+
+    public int getQueueId() {
+        return queueId;
+    }
+
+    public void setQueueId(int queueId) {
+        this.queueId = queueId;
+    }
+
+    public long getBrokerOffset() {
+        return brokerOffset;
+    }
+
+    public void setBrokerOffset(long brokerOffset) {
+        this.brokerOffset = brokerOffset;
+    }
+
+    public long getConsumerOffset() {
+        return consumerOffset;
+    }
+
+    public void setConsumerOffset(long consumerOffset) {
+        this.consumerOffset = consumerOffset;
+    }
+
+    public long getLastTimestamp() {
+        return lastTimestamp;
+    }
+
+    public void setLastTimestamp(long lastTimestamp) {
+        this.lastTimestamp = lastTimestamp;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/TopicConsumerInfo.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/TopicConsumerInfo.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/TopicConsumerInfo.java
new file mode 100644
index 0000000..bd6d8e2
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/TopicConsumerInfo.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.model;
+
+import com.google.common.collect.Lists;
+
+import java.util.List;
+
+public class TopicConsumerInfo {
+    private String topic;
+    private long diffTotal;
+    private long lastTimestamp;
+    private List<QueueStatInfo> queueStatInfoList = Lists.newArrayList();
+
+    public TopicConsumerInfo(String topic) {
+        this.topic = topic;
+    }
+
+    public String getTopic() {
+        return topic;
+    }
+
+    public void setTopic(String topic) {
+        this.topic = topic;
+    }
+
+    public long getDiffTotal() {
+        return diffTotal;
+    }
+
+    public void setDiffTotal(long diffTotal) {
+        this.diffTotal = diffTotal;
+    }
+
+    public List<QueueStatInfo> getQueueStatInfoList() {
+        return queueStatInfoList;
+    }
+
+    public long getLastTimestamp() {
+        return lastTimestamp;
+    }
+
+    public void appendQueueStatInfo(QueueStatInfo queueStatInfo) {
+        queueStatInfoList.add(queueStatInfo);
+        diffTotal = diffTotal + (queueStatInfo.getBrokerOffset() - queueStatInfo.getConsumerOffset());
+        lastTimestamp = Math.max(lastTimestamp, queueStatInfo.getLastTimestamp());
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/request/ConsumerConfigInfo.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/request/ConsumerConfigInfo.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/request/ConsumerConfigInfo.java
new file mode 100644
index 0000000..cee155c
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/request/ConsumerConfigInfo.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.model.request;
+
+import org.apache.rocketmq.common.subscription.SubscriptionGroupConfig;
+
+import java.util.List;
+
+public class ConsumerConfigInfo {
+    private List<String> clusterNameList;
+
+    private List<String> brokerNameList;
+    private SubscriptionGroupConfig subscriptionGroupConfig;
+
+    public ConsumerConfigInfo() {
+    }
+
+    public ConsumerConfigInfo(List<String> brokerNameList, SubscriptionGroupConfig subscriptionGroupConfig) {
+        this.brokerNameList = brokerNameList;
+        this.subscriptionGroupConfig = subscriptionGroupConfig;
+    }
+
+    public List<String> getClusterNameList() {
+        return clusterNameList;
+    }
+
+    public void setClusterNameList(List<String> clusterNameList) {
+        this.clusterNameList = clusterNameList;
+    }
+
+    public List<String> getBrokerNameList() {
+        return brokerNameList;
+    }
+
+    public void setBrokerNameList(List<String> brokerNameList) {
+        this.brokerNameList = brokerNameList;
+    }
+
+    public SubscriptionGroupConfig getSubscriptionGroupConfig() {
+        return subscriptionGroupConfig;
+    }
+
+    public void setSubscriptionGroupConfig(SubscriptionGroupConfig subscriptionGroupConfig) {
+        this.subscriptionGroupConfig = subscriptionGroupConfig;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/request/DeleteSubGroupRequest.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/request/DeleteSubGroupRequest.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/request/DeleteSubGroupRequest.java
new file mode 100644
index 0000000..152256b
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/request/DeleteSubGroupRequest.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.model.request;
+
+import java.util.List;
+
+public class DeleteSubGroupRequest {
+    private String groupName;
+    private List<String> brokerNameList;
+
+    public String getGroupName() {
+        return groupName;
+    }
+
+    public void setGroupName(String groupName) {
+        this.groupName = groupName;
+    }
+
+    public List<String> getBrokerNameList() {
+        return brokerNameList;
+    }
+
+    public void setBrokerNameList(List<String> brokerNameList) {
+        this.brokerNameList = brokerNameList;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/request/ResetOffsetRequest.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/request/ResetOffsetRequest.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/request/ResetOffsetRequest.java
new file mode 100644
index 0000000..22263af
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/request/ResetOffsetRequest.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.model.request;
+
+import java.util.List;
+
+public class ResetOffsetRequest {
+    private List<String> consumerGroupList;
+    private String topic;
+    private long resetTime;
+    private boolean force;
+
+    public List<String> getConsumerGroupList() {
+        return consumerGroupList;
+    }
+
+    public void setConsumerGroupList(List<String> consumerGroupList) {
+        this.consumerGroupList = consumerGroupList;
+    }
+
+    public String getTopic() {
+        return topic;
+    }
+
+    public void setTopic(String topic) {
+        this.topic = topic;
+    }
+
+    public long getResetTime() {
+        return resetTime;
+    }
+
+    public void setResetTime(long resetTime) {
+        this.resetTime = resetTime;
+    }
+
+    public boolean isForce() {
+        return force;
+    }
+
+    public void setForce(boolean force) {
+        this.force = force;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/request/SendTopicMessageRequest.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/request/SendTopicMessageRequest.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/request/SendTopicMessageRequest.java
new file mode 100644
index 0000000..c7ffa8a
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/request/SendTopicMessageRequest.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.model.request;
+
+public class SendTopicMessageRequest {
+    private String topic;
+    private String key;
+    private String tag;
+    private String messageBody;
+
+    public String getTopic() {
+        return topic;
+    }
+
+    public void setTopic(String topic) {
+        this.topic = topic;
+    }
+
+    public String getKey() {
+        return key;
+    }
+
+    public void setKey(String key) {
+        this.key = key;
+    }
+
+    public String getTag() {
+        return tag;
+    }
+
+    public void setTag(String tag) {
+        this.tag = tag;
+    }
+
+    public String getMessageBody() {
+        return messageBody;
+    }
+
+    public void setMessageBody(String messageBody) {
+        this.messageBody = messageBody;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/request/TopicConfigInfo.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/request/TopicConfigInfo.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/request/TopicConfigInfo.java
new file mode 100644
index 0000000..e1f56d4
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/model/request/TopicConfigInfo.java
@@ -0,0 +1,114 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.model.request;
+
+import com.google.common.base.Objects;
+
+import java.util.List;
+
+public class TopicConfigInfo {
+
+    private List<String> clusterNameList;
+    private List<String> brokerNameList;
+
+    /** topicConfig */
+    private String topicName;
+    private int writeQueueNums;
+    private int readQueueNums;
+    private int perm;
+    private boolean order;
+
+    public List<String> getClusterNameList() {
+        return clusterNameList;
+    }
+
+    public void setClusterNameList(List<String> clusterNameList) {
+        this.clusterNameList = clusterNameList;
+    }
+
+    /** topicConfig */
+
+
+
+    public List<String> getBrokerNameList() {
+        return brokerNameList;
+    }
+
+    public void setBrokerNameList(List<String> brokerNameList) {
+        this.brokerNameList = brokerNameList;
+    }
+
+    public String getTopicName() {
+        return topicName;
+    }
+
+    public void setTopicName(String topicName) {
+        this.topicName = topicName;
+    }
+
+    public int getWriteQueueNums() {
+        return writeQueueNums;
+    }
+
+    public void setWriteQueueNums(int writeQueueNums) {
+        this.writeQueueNums = writeQueueNums;
+    }
+
+    public int getReadQueueNums() {
+        return readQueueNums;
+    }
+
+    public void setReadQueueNums(int readQueueNums) {
+        this.readQueueNums = readQueueNums;
+    }
+
+    public int getPerm() {
+        return perm;
+    }
+
+    public void setPerm(int perm) {
+        this.perm = perm;
+    }
+
+    public boolean isOrder() {
+        return order;
+    }
+
+    public void setOrder(boolean order) {
+        this.order = order;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o)
+            return true;
+        if (o == null || getClass() != o.getClass())
+            return false;
+        TopicConfigInfo that = (TopicConfigInfo) o;
+        return writeQueueNums == that.writeQueueNums &&
+            readQueueNums == that.readQueueNums &&
+            perm == that.perm &&
+            order == that.order &&
+            Objects.equal(topicName, that.topicName);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hashCode(topicName, writeQueueNums, readQueueNums, perm, order);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/AbstractCommonService.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/AbstractCommonService.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/AbstractCommonService.java
new file mode 100644
index 0000000..53a0e21
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/AbstractCommonService.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.service;
+
+import org.apache.rocketmq.tools.admin.MQAdminExt;
+import com.google.common.base.Throwables;
+import com.google.common.collect.Sets;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Set;
+import javax.annotation.Resource;
+import org.apache.commons.collections.CollectionUtils;
+
+public abstract class AbstractCommonService {
+    @Resource
+    protected MQAdminExt mqAdminExt;
+    protected final Set<String> changeToBrokerNameSet(HashMap<String, Set<String>> clusterAddrTable,
+        List<String> clusterNameList, List<String> brokerNameList) {
+        Set<String> finalBrokerNameList = Sets.newHashSet();
+        if (CollectionUtils.isNotEmpty(clusterNameList)) {
+            try {
+                for (String clusterName : clusterNameList) {
+                    finalBrokerNameList.addAll(clusterAddrTable.get(clusterName));
+                }
+            }
+            catch (Exception e) {
+                throw Throwables.propagate(e);
+            }
+        }
+        if (CollectionUtils.isNotEmpty(brokerNameList)) {
+            finalBrokerNameList.addAll(brokerNameList);
+        }
+        return finalBrokerNameList;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/ClusterService.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/ClusterService.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/ClusterService.java
new file mode 100644
index 0000000..43489fb
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/ClusterService.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package org.apache.rocketmq.console.service;
+
+import java.util.Map;
+import java.util.Properties;
+
+public interface ClusterService {
+    Map<String, Object> list();
+
+    Properties getBrokerConfig(String brokerAddr);
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/ConsumerService.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/ConsumerService.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/ConsumerService.java
new file mode 100644
index 0000000..1d9ac12
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/ConsumerService.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package org.apache.rocketmq.console.service;
+
+import org.apache.rocketmq.common.protocol.body.ConsumerConnection;
+import org.apache.rocketmq.common.protocol.body.ConsumerRunningInfo;
+import org.apache.rocketmq.console.model.ConsumerGroupRollBackStat;
+import org.apache.rocketmq.console.model.GroupConsumeInfo;
+import org.apache.rocketmq.console.model.TopicConsumerInfo;
+import org.apache.rocketmq.console.model.request.ConsumerConfigInfo;
+import org.apache.rocketmq.console.model.request.DeleteSubGroupRequest;
+import org.apache.rocketmq.console.model.request.ResetOffsetRequest;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+public interface ConsumerService {
+    List<GroupConsumeInfo> queryGroupList();
+
+    GroupConsumeInfo queryGroup(String consumerGroup);
+
+
+    List<TopicConsumerInfo> queryConsumeStatsListByGroupName(String groupName);
+
+    List<TopicConsumerInfo> queryConsumeStatsList(String topic, String groupName);
+
+    Map<String, TopicConsumerInfo> queryConsumeStatsListByTopicName(String topic);
+
+    Map<String /*consumerGroup*/, ConsumerGroupRollBackStat> resetOffset(ResetOffsetRequest resetOffsetRequest);
+
+    List<ConsumerConfigInfo> examineSubscriptionGroupConfig(String group);
+
+    boolean deleteSubGroup(DeleteSubGroupRequest deleteSubGroupRequest);
+
+    boolean createAndUpdateSubscriptionGroupConfig(ConsumerConfigInfo consumerConfigInfo);
+
+    Set<String> fetchBrokerNameSetBySubscriptionGroup(String group);
+
+    ConsumerConnection getConsumerConnection(String consumerGroup);
+
+    ConsumerRunningInfo getConsumerRunningInfo(String consumerGroup, String clientId, boolean jstack);
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/DashboardCollectService.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/DashboardCollectService.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/DashboardCollectService.java
new file mode 100644
index 0000000..27a3645
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/DashboardCollectService.java
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.service;
+
+import com.google.common.cache.LoadingCache;
+import java.io.File;
+import java.util.List;
+import java.util.Map;
+
+public interface DashboardCollectService {
+    // todo just move the task to org.apache.rocketmq.console.task.DashboardCollectTask
+    // the code can be reconstruct
+    LoadingCache<String, List<String>> getBrokerMap();
+
+    LoadingCache<String, List<String>> getTopicMap();
+
+    Map<String, List<String>> jsonDataFile2map(File file);
+
+    Map<String, List<String>> getBrokerCache(String date);
+
+    Map<String, List<String>> getTopicCache(String date);
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/DashboardService.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/DashboardService.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/DashboardService.java
new file mode 100644
index 0000000..a4cf798
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/DashboardService.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.rocketmq.console.service;
+
+import java.util.List;
+import java.util.Map;
+
+public interface DashboardService {
+    /**
+     * @param date format yyyy-MM-dd
+     */
+    Map<String, List<String>> queryBrokerData(String date);
+
+    /**
+     * @param date format yyyy-MM-dd
+     */
+    Map<String, List<String>> queryTopicData(String date);
+
+    /**
+     * @param date format yyyy-MM-dd
+     * @param topicName
+     */
+    List<String> queryTopicData(String date, String topicName);
+
+    List<String> queryTopicCurrentData();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/MessageService.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/MessageService.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/MessageService.java
new file mode 100644
index 0000000..e56b4d8
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/MessageService.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package org.apache.rocketmq.console.service;
+
+import org.apache.rocketmq.common.Pair;
+import org.apache.rocketmq.common.message.MessageExt;
+import org.apache.rocketmq.common.protocol.body.ConsumeMessageDirectlyResult;
+import org.apache.rocketmq.tools.admin.api.MessageTrack;
+import org.apache.rocketmq.console.model.MessageView;
+
+import java.util.List;
+
+public interface MessageService {
+    /**
+     * @param subject
+     * @param msgId
+     */
+    Pair<MessageView, List<MessageTrack>> viewMessage(String subject, final String msgId);
+
+    List<MessageView> queryMessageByTopicAndKey(final String topic, final String key);
+
+    /**
+     * @param topic
+     * @param begin
+     * @param end
+     * org.apache.rocketmq.tools.command.message.PrintMessageSubCommand
+     */
+    List<MessageView> queryMessageByTopic(final String topic, final long begin,
+        final long end);
+
+    List<MessageTrack> messageTrackDetail(MessageExt msg);
+
+    ConsumeMessageDirectlyResult consumeMessageDirectly(String topic, String msgId, String consumerGroup,
+        String clientId);
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/MonitorService.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/MonitorService.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/MonitorService.java
new file mode 100644
index 0000000..4bf659c
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/MonitorService.java
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.service;
+
+import java.util.Map;
+import org.apache.rocketmq.console.model.ConsumerMonitorConfig;
+
+public interface MonitorService {
+    boolean createOrUpdateConsumerMonitor(String name, ConsumerMonitorConfig config);
+
+    Map<String, ConsumerMonitorConfig> queryConsumerMonitorConfig();
+
+    ConsumerMonitorConfig queryConsumerMonitorConfigByGroupName(String consumeGroupName);
+
+    boolean deleteConsumerMonitor(String consumeGroupName);
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/OpsService.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/OpsService.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/OpsService.java
new file mode 100644
index 0000000..d3bd68c
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/OpsService.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.service;
+
+import java.util.Map;
+import org.apache.rocketmq.console.service.checker.CheckerType;
+
+public interface OpsService {
+    Map<String, Object> homePageInfo();
+
+    void updateNameSvrAddrList(String nameSvrAddrList);
+
+    String getNameSvrList();
+
+    Map<CheckerType,Object> rocketMqStatusCheck();
+
+    boolean updateIsVIPChannel(String useVIPChannel);
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/ProducerService.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/ProducerService.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/ProducerService.java
new file mode 100644
index 0000000..cda7c48
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/ProducerService.java
@@ -0,0 +1,24 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package org.apache.rocketmq.console.service;
+
+import org.apache.rocketmq.common.protocol.body.ProducerConnection;
+
+public interface ProducerService {
+    ProducerConnection getProducerConnection(String producerGroup, String topic);
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/TopicService.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/TopicService.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/TopicService.java
new file mode 100644
index 0000000..41a6b3b
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/TopicService.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package org.apache.rocketmq.console.service;
+
+import org.apache.rocketmq.client.producer.SendResult;
+import org.apache.rocketmq.common.TopicConfig;
+import org.apache.rocketmq.common.admin.TopicStatsTable;
+import org.apache.rocketmq.common.protocol.body.GroupList;
+import org.apache.rocketmq.common.protocol.body.TopicList;
+import org.apache.rocketmq.common.protocol.route.TopicRouteData;
+import org.apache.rocketmq.console.model.request.SendTopicMessageRequest;
+import org.apache.rocketmq.console.model.request.TopicConfigInfo;
+
+import java.util.List;
+
+public interface TopicService {
+    TopicList fetchAllTopicList();
+
+    TopicStatsTable stats(String topic);
+
+    TopicRouteData route(String topic);
+
+    GroupList queryTopicConsumerInfo(String topic);
+
+    void createOrUpdate(TopicConfigInfo topicCreateOrUpdateRequest);
+
+    TopicConfig examineTopicConfig(String topic, String brokerName);
+
+    List<TopicConfigInfo> examineTopicConfig(String topic);
+
+    boolean deleteTopic(String topic, String clusterName);
+
+    boolean deleteTopic(String topic);
+
+    boolean deleteTopicInBroker(String brokerName, String topic);
+
+    SendResult sendTopicMessageRequest(SendTopicMessageRequest sendTopicMessageRequest);
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/checker/CheckerType.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/checker/CheckerType.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/checker/CheckerType.java
new file mode 100644
index 0000000..8a85008
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/checker/CheckerType.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.service.checker;
+
+public enum CheckerType {
+    CLUSTER_HEALTH_CHECK,
+    TOPIC_ONLY_ONE_BROKER_CHECK
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/checker/RocketMqChecker.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/checker/RocketMqChecker.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/checker/RocketMqChecker.java
new file mode 100644
index 0000000..3b8f58d
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/checker/RocketMqChecker.java
@@ -0,0 +1,24 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.service.checker;
+
+public interface RocketMqChecker {
+    public Object doCheck();
+
+    public CheckerType checkerType();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/checker/impl/ClusterHealthCheckerImpl.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/checker/impl/ClusterHealthCheckerImpl.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/checker/impl/ClusterHealthCheckerImpl.java
new file mode 100644
index 0000000..5c2c893
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/checker/impl/ClusterHealthCheckerImpl.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.service.checker.impl;
+
+import org.apache.rocketmq.console.service.checker.CheckerType;
+import org.apache.rocketmq.console.service.checker.RocketMqChecker;
+import org.springframework.stereotype.Service;
+
+@Service
+public class ClusterHealthCheckerImpl implements RocketMqChecker {
+    @Override
+    public Object doCheck() {
+        return null;
+    }
+
+    @Override
+    public CheckerType checkerType() {
+        return CheckerType.CLUSTER_HEALTH_CHECK;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/checker/impl/TopicOnlyOneBrokerCheckerImpl.java
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/checker/impl/TopicOnlyOneBrokerCheckerImpl.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/checker/impl/TopicOnlyOneBrokerCheckerImpl.java
new file mode 100644
index 0000000..0f06a13
--- /dev/null
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/checker/impl/TopicOnlyOneBrokerCheckerImpl.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.rocketmq.console.service.checker.impl;
+
+import org.apache.rocketmq.console.service.checker.CheckerType;
+import org.apache.rocketmq.console.service.checker.RocketMqChecker;
+import org.springframework.stereotype.Service;
+
+@Service
+public class TopicOnlyOneBrokerCheckerImpl implements RocketMqChecker {
+    @Override
+    public Object doCheck() {
+        return null;
+    }
+
+    @Override
+    public CheckerType checkerType() {
+        return CheckerType.TOPIC_ONLY_ONE_BROKER_CHECK;
+    }
+}


[10/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fur.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fur.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fur.js
new file mode 100644
index 0000000..f25f440
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fur.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a.",
+      "p."
+    ],
+    "DAY": [
+      "domenie",
+      "lunis",
+      "martars",
+      "miercus",
+      "joibe",
+      "vinars",
+      "sabide"
+    ],
+    "ERANAMES": [
+      "pdC",
+      "ddC"
+    ],
+    "ERAS": [
+      "pdC",
+      "ddC"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Zen\u00e2r",
+      "Fevr\u00e2r",
+      "Mar\u00e7",
+      "Avr\u00eel",
+      "Mai",
+      "Jugn",
+      "Lui",
+      "Avost",
+      "Setembar",
+      "Otubar",
+      "Novembar",
+      "Dicembar"
+    ],
+    "SHORTDAY": [
+      "dom",
+      "lun",
+      "mar",
+      "mie",
+      "joi",
+      "vin",
+      "sab"
+    ],
+    "SHORTMONTH": [
+      "Zen",
+      "Fev",
+      "Mar",
+      "Avr",
+      "Mai",
+      "Jug",
+      "Lui",
+      "Avo",
+      "Set",
+      "Otu",
+      "Nov",
+      "Dic"
+    ],
+    "STANDALONEMONTH": [
+      "Zen\u00e2r",
+      "Fevr\u00e2r",
+      "Mar\u00e7",
+      "Avr\u00eel",
+      "Mai",
+      "Jugn",
+      "Lui",
+      "Avost",
+      "Setembar",
+      "Otubar",
+      "Novembar",
+      "Dicembar"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d 'di' MMMM 'dal' y",
+    "longDate": "d 'di' MMMM 'dal' y",
+    "medium": "dd/MM/y HH:mm:ss",
+    "mediumDate": "dd/MM/y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/yy HH:mm",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "fur",
+  "localeID": "fur",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fy-nl.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fy-nl.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fy-nl.js
new file mode 100644
index 0000000..8b6214e
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fy-nl.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "snein",
+      "moandei",
+      "tiisdei",
+      "woansdei",
+      "tongersdei",
+      "freed",
+      "sneon"
+    ],
+    "ERANAMES": [
+      "Foar Kristus",
+      "nei Kristus"
+    ],
+    "ERAS": [
+      "f.Kr.",
+      "n.Kr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "jannewaris",
+      "febrewaris",
+      "maart",
+      "april",
+      "maaie",
+      "juny",
+      "july",
+      "augustus",
+      "septimber",
+      "oktober",
+      "novimber",
+      "desimber"
+    ],
+    "SHORTDAY": [
+      "si",
+      "mo",
+      "ti",
+      "wo",
+      "to",
+      "fr",
+      "so"
+    ],
+    "SHORTMONTH": [
+      "jan.",
+      "feb.",
+      "mrt.",
+      "apr.",
+      "mai",
+      "jun.",
+      "jul.",
+      "aug.",
+      "sep.",
+      "okt.",
+      "nov.",
+      "des."
+    ],
+    "STANDALONEMONTH": [
+      "jannewaris",
+      "febrewaris",
+      "maart",
+      "april",
+      "maaie",
+      "juny",
+      "july",
+      "augustus",
+      "septimber",
+      "oktober",
+      "novimber",
+      "desimber"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd-MM-yy HH:mm",
+    "shortDate": "dd-MM-yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4\u00a0",
+        "negSuf": "-",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "fy-nl",
+  "localeID": "fy_NL",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fy.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fy.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fy.js
new file mode 100644
index 0000000..06169fc
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_fy.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "snein",
+      "moandei",
+      "tiisdei",
+      "woansdei",
+      "tongersdei",
+      "freed",
+      "sneon"
+    ],
+    "ERANAMES": [
+      "Foar Kristus",
+      "nei Kristus"
+    ],
+    "ERAS": [
+      "f.Kr.",
+      "n.Kr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "jannewaris",
+      "febrewaris",
+      "maart",
+      "april",
+      "maaie",
+      "juny",
+      "july",
+      "augustus",
+      "septimber",
+      "oktober",
+      "novimber",
+      "desimber"
+    ],
+    "SHORTDAY": [
+      "si",
+      "mo",
+      "ti",
+      "wo",
+      "to",
+      "fr",
+      "so"
+    ],
+    "SHORTMONTH": [
+      "jan.",
+      "feb.",
+      "mrt.",
+      "apr.",
+      "mai",
+      "jun.",
+      "jul.",
+      "aug.",
+      "sep.",
+      "okt.",
+      "nov.",
+      "des."
+    ],
+    "STANDALONEMONTH": [
+      "jannewaris",
+      "febrewaris",
+      "maart",
+      "april",
+      "maaie",
+      "juny",
+      "july",
+      "augustus",
+      "septimber",
+      "oktober",
+      "novimber",
+      "desimber"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd-MM-yy HH:mm",
+    "shortDate": "dd-MM-yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4\u00a0",
+        "negSuf": "-",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "fy",
+  "localeID": "fy",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ga-ie.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ga-ie.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ga-ie.js
new file mode 100644
index 0000000..13b91b7
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ga-ie.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a.m.",
+      "p.m."
+    ],
+    "DAY": [
+      "D\u00e9 Domhnaigh",
+      "D\u00e9 Luain",
+      "D\u00e9 M\u00e1irt",
+      "D\u00e9 C\u00e9adaoin",
+      "D\u00e9ardaoin",
+      "D\u00e9 hAoine",
+      "D\u00e9 Sathairn"
+    ],
+    "ERANAMES": [
+      "Roimh Chr\u00edost",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "RC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "Ean\u00e1ir",
+      "Feabhra",
+      "M\u00e1rta",
+      "Aibre\u00e1n",
+      "Bealtaine",
+      "Meitheamh",
+      "I\u00fail",
+      "L\u00fanasa",
+      "Me\u00e1n F\u00f3mhair",
+      "Deireadh F\u00f3mhair",
+      "Samhain",
+      "Nollaig"
+    ],
+    "SHORTDAY": [
+      "Domh",
+      "Luan",
+      "M\u00e1irt",
+      "C\u00e9ad",
+      "D\u00e9ar",
+      "Aoine",
+      "Sath"
+    ],
+    "SHORTMONTH": [
+      "Ean",
+      "Feabh",
+      "M\u00e1rta",
+      "Aib",
+      "Beal",
+      "Meith",
+      "I\u00fail",
+      "L\u00fan",
+      "MF\u00f3mh",
+      "DF\u00f3mh",
+      "Samh",
+      "Noll"
+    ],
+    "STANDALONEMONTH": [
+      "Ean\u00e1ir",
+      "Feabhra",
+      "M\u00e1rta",
+      "Aibre\u00e1n",
+      "Bealtaine",
+      "Meitheamh",
+      "I\u00fail",
+      "L\u00fanasa",
+      "Me\u00e1n F\u00f3mhair",
+      "Deireadh F\u00f3mhair",
+      "Samhain",
+      "Nollaig"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ga-ie",
+  "localeID": "ga_IE",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  if (n == 2) {    return PLURAL_CATEGORY.TWO;  }  if (n >= 3 && n <= 6) {    return PLURAL_CATEGORY.FEW;  }  if (n >= 7 && n <= 10) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ga.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ga.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ga.js
new file mode 100644
index 0000000..6aa830a
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ga.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a.m.",
+      "p.m."
+    ],
+    "DAY": [
+      "D\u00e9 Domhnaigh",
+      "D\u00e9 Luain",
+      "D\u00e9 M\u00e1irt",
+      "D\u00e9 C\u00e9adaoin",
+      "D\u00e9ardaoin",
+      "D\u00e9 hAoine",
+      "D\u00e9 Sathairn"
+    ],
+    "ERANAMES": [
+      "Roimh Chr\u00edost",
+      "Anno Domini"
+    ],
+    "ERAS": [
+      "RC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "Ean\u00e1ir",
+      "Feabhra",
+      "M\u00e1rta",
+      "Aibre\u00e1n",
+      "Bealtaine",
+      "Meitheamh",
+      "I\u00fail",
+      "L\u00fanasa",
+      "Me\u00e1n F\u00f3mhair",
+      "Deireadh F\u00f3mhair",
+      "Samhain",
+      "Nollaig"
+    ],
+    "SHORTDAY": [
+      "Domh",
+      "Luan",
+      "M\u00e1irt",
+      "C\u00e9ad",
+      "D\u00e9ar",
+      "Aoine",
+      "Sath"
+    ],
+    "SHORTMONTH": [
+      "Ean",
+      "Feabh",
+      "M\u00e1rta",
+      "Aib",
+      "Beal",
+      "Meith",
+      "I\u00fail",
+      "L\u00fan",
+      "MF\u00f3mh",
+      "DF\u00f3mh",
+      "Samh",
+      "Noll"
+    ],
+    "STANDALONEMONTH": [
+      "Ean\u00e1ir",
+      "Feabhra",
+      "M\u00e1rta",
+      "Aibre\u00e1n",
+      "Bealtaine",
+      "Meitheamh",
+      "I\u00fail",
+      "L\u00fanasa",
+      "Me\u00e1n F\u00f3mhair",
+      "Deireadh F\u00f3mhair",
+      "Samhain",
+      "Nollaig"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ga",
+  "localeID": "ga",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  if (n == 2) {    return PLURAL_CATEGORY.TWO;  }  if (n >= 3 && n <= 6) {    return PLURAL_CATEGORY.FEW;  }  if (n >= 7 && n <= 10) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gd-gb.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gd-gb.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gd-gb.js
new file mode 100644
index 0000000..732788c
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gd-gb.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "m",
+      "f"
+    ],
+    "DAY": [
+      "DiD\u00f2mhnaich",
+      "DiLuain",
+      "DiM\u00e0irt",
+      "DiCiadain",
+      "DiarDaoin",
+      "DihAoine",
+      "DiSathairne"
+    ],
+    "ERANAMES": [
+      "Ro Chr\u00ecosta",
+      "An d\u00e8idh Chr\u00ecosta"
+    ],
+    "ERAS": [
+      "RC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "dhen Fhaoilleach",
+      "dhen Ghearran",
+      "dhen Mh\u00e0rt",
+      "dhen Ghiblean",
+      "dhen Ch\u00e8itean",
+      "dhen \u00d2gmhios",
+      "dhen Iuchar",
+      "dhen L\u00f9nastal",
+      "dhen t-Sultain",
+      "dhen D\u00e0mhair",
+      "dhen t-Samhain",
+      "dhen D\u00f9bhlachd"
+    ],
+    "SHORTDAY": [
+      "DiD",
+      "DiL",
+      "DiM",
+      "DiC",
+      "Dia",
+      "Dih",
+      "DiS"
+    ],
+    "SHORTMONTH": [
+      "Faoi",
+      "Gearr",
+      "M\u00e0rt",
+      "Gibl",
+      "C\u00e8it",
+      "\u00d2gmh",
+      "Iuch",
+      "L\u00f9na",
+      "Sult",
+      "D\u00e0mh",
+      "Samh",
+      "D\u00f9bh"
+    ],
+    "STANDALONEMONTH": [
+      "Am Faoilleach",
+      "An Gearran",
+      "Am M\u00e0rt",
+      "An Giblean",
+      "An C\u00e8itean",
+      "An t-\u00d2gmhios",
+      "An t-Iuchar",
+      "An L\u00f9nastal",
+      "An t-Sultain",
+      "An D\u00e0mhair",
+      "An t-Samhain",
+      "An D\u00f9bhlachd"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d'mh' MMMM y",
+    "longDate": "d'mh' MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u00a3",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "gd-gb",
+  "localeID": "gd_GB",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gd.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gd.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gd.js
new file mode 100644
index 0000000..e44083e
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gd.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "m",
+      "f"
+    ],
+    "DAY": [
+      "DiD\u00f2mhnaich",
+      "DiLuain",
+      "DiM\u00e0irt",
+      "DiCiadain",
+      "DiarDaoin",
+      "DihAoine",
+      "DiSathairne"
+    ],
+    "ERANAMES": [
+      "Ro Chr\u00ecosta",
+      "An d\u00e8idh Chr\u00ecosta"
+    ],
+    "ERAS": [
+      "RC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "dhen Fhaoilleach",
+      "dhen Ghearran",
+      "dhen Mh\u00e0rt",
+      "dhen Ghiblean",
+      "dhen Ch\u00e8itean",
+      "dhen \u00d2gmhios",
+      "dhen Iuchar",
+      "dhen L\u00f9nastal",
+      "dhen t-Sultain",
+      "dhen D\u00e0mhair",
+      "dhen t-Samhain",
+      "dhen D\u00f9bhlachd"
+    ],
+    "SHORTDAY": [
+      "DiD",
+      "DiL",
+      "DiM",
+      "DiC",
+      "Dia",
+      "Dih",
+      "DiS"
+    ],
+    "SHORTMONTH": [
+      "Faoi",
+      "Gearr",
+      "M\u00e0rt",
+      "Gibl",
+      "C\u00e8it",
+      "\u00d2gmh",
+      "Iuch",
+      "L\u00f9na",
+      "Sult",
+      "D\u00e0mh",
+      "Samh",
+      "D\u00f9bh"
+    ],
+    "STANDALONEMONTH": [
+      "Am Faoilleach",
+      "An Gearran",
+      "Am M\u00e0rt",
+      "An Giblean",
+      "An C\u00e8itean",
+      "An t-\u00d2gmhios",
+      "An t-Iuchar",
+      "An L\u00f9nastal",
+      "An t-Sultain",
+      "An D\u00e0mhair",
+      "An t-Samhain",
+      "An D\u00f9bhlachd"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d'mh' MMMM y",
+    "longDate": "d'mh' MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/y HH:mm",
+    "shortDate": "dd/MM/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u00a3",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "gd",
+  "localeID": "gd",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gl-es.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gl-es.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gl-es.js
new file mode 100644
index 0000000..9c68a40
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gl-es.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a.m.",
+      "p.m."
+    ],
+    "DAY": [
+      "domingo",
+      "luns",
+      "martes",
+      "m\u00e9rcores",
+      "xoves",
+      "venres",
+      "s\u00e1bado"
+    ],
+    "ERANAMES": [
+      "antes de Cristo",
+      "despois de Cristo"
+    ],
+    "ERAS": [
+      "a.C.",
+      "d.C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "xaneiro",
+      "febreiro",
+      "marzo",
+      "abril",
+      "maio",
+      "xu\u00f1o",
+      "xullo",
+      "agosto",
+      "setembro",
+      "outubro",
+      "novembro",
+      "decembro"
+    ],
+    "SHORTDAY": [
+      "dom",
+      "lun",
+      "mar",
+      "m\u00e9r",
+      "xov",
+      "ven",
+      "s\u00e1b"
+    ],
+    "SHORTMONTH": [
+      "xan",
+      "feb",
+      "mar",
+      "abr",
+      "mai",
+      "xu\u00f1",
+      "xul",
+      "ago",
+      "set",
+      "out",
+      "nov",
+      "dec"
+    ],
+    "STANDALONEMONTH": [
+      "Xaneiro",
+      "Febreiro",
+      "Marzo",
+      "Abril",
+      "Maio",
+      "Xu\u00f1o",
+      "Xullo",
+      "Agosto",
+      "Setembro",
+      "Outubro",
+      "Novembro",
+      "Decembro"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE dd MMMM y",
+    "longDate": "dd MMMM y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/yy HH:mm",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "gl-es",
+  "localeID": "gl_ES",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gl.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gl.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gl.js
new file mode 100644
index 0000000..966ef01
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gl.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a.m.",
+      "p.m."
+    ],
+    "DAY": [
+      "domingo",
+      "luns",
+      "martes",
+      "m\u00e9rcores",
+      "xoves",
+      "venres",
+      "s\u00e1bado"
+    ],
+    "ERANAMES": [
+      "antes de Cristo",
+      "despois de Cristo"
+    ],
+    "ERAS": [
+      "a.C.",
+      "d.C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "xaneiro",
+      "febreiro",
+      "marzo",
+      "abril",
+      "maio",
+      "xu\u00f1o",
+      "xullo",
+      "agosto",
+      "setembro",
+      "outubro",
+      "novembro",
+      "decembro"
+    ],
+    "SHORTDAY": [
+      "dom",
+      "lun",
+      "mar",
+      "m\u00e9r",
+      "xov",
+      "ven",
+      "s\u00e1b"
+    ],
+    "SHORTMONTH": [
+      "xan",
+      "feb",
+      "mar",
+      "abr",
+      "mai",
+      "xu\u00f1",
+      "xul",
+      "ago",
+      "set",
+      "out",
+      "nov",
+      "dec"
+    ],
+    "STANDALONEMONTH": [
+      "Xaneiro",
+      "Febreiro",
+      "Marzo",
+      "Abril",
+      "Maio",
+      "Xu\u00f1o",
+      "Xullo",
+      "Agosto",
+      "Setembro",
+      "Outubro",
+      "Novembro",
+      "Decembro"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE dd MMMM y",
+    "longDate": "dd MMMM y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/yy HH:mm",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "gl",
+  "localeID": "gl",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gsw-ch.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gsw-ch.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gsw-ch.js
new file mode 100644
index 0000000..bc494c8
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gsw-ch.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "vorm.",
+      "nam."
+    ],
+    "DAY": [
+      "Sunntig",
+      "M\u00e4\u00e4ntig",
+      "Ziischtig",
+      "Mittwuch",
+      "Dunschtig",
+      "Friitig",
+      "Samschtig"
+    ],
+    "ERANAMES": [
+      "v. Chr.",
+      "n. Chr."
+    ],
+    "ERAS": [
+      "v. Chr.",
+      "n. Chr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Januar",
+      "Februar",
+      "M\u00e4rz",
+      "April",
+      "Mai",
+      "Juni",
+      "Juli",
+      "Auguscht",
+      "Sept\u00e4mber",
+      "Oktoober",
+      "Nov\u00e4mber",
+      "Dez\u00e4mber"
+    ],
+    "SHORTDAY": [
+      "Su.",
+      "M\u00e4.",
+      "Zi.",
+      "Mi.",
+      "Du.",
+      "Fr.",
+      "Sa."
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "M\u00e4r",
+      "Apr",
+      "Mai",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Okt",
+      "Nov",
+      "Dez"
+    ],
+    "STANDALONEMONTH": [
+      "Januar",
+      "Februar",
+      "M\u00e4rz",
+      "April",
+      "Mai",
+      "Juni",
+      "Juli",
+      "Auguscht",
+      "Sept\u00e4mber",
+      "Oktoober",
+      "Nov\u00e4mber",
+      "Dez\u00e4mber"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "dd.MM.y HH:mm:ss",
+    "mediumDate": "dd.MM.y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.yy HH:mm",
+    "shortDate": "dd.MM.yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "CHF",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": "\u2019",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "gsw-ch",
+  "localeID": "gsw_CH",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gsw-fr.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gsw-fr.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gsw-fr.js
new file mode 100644
index 0000000..253ae29
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gsw-fr.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "vorm.",
+      "nam."
+    ],
+    "DAY": [
+      "Sunntig",
+      "M\u00e4\u00e4ntig",
+      "Ziischtig",
+      "Mittwuch",
+      "Dunschtig",
+      "Friitig",
+      "Samschtig"
+    ],
+    "ERANAMES": [
+      "v. Chr.",
+      "n. Chr."
+    ],
+    "ERAS": [
+      "v. Chr.",
+      "n. Chr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Januar",
+      "Februar",
+      "M\u00e4rz",
+      "April",
+      "Mai",
+      "Juni",
+      "Juli",
+      "Auguscht",
+      "Sept\u00e4mber",
+      "Oktoober",
+      "Nov\u00e4mber",
+      "Dez\u00e4mber"
+    ],
+    "SHORTDAY": [
+      "Su.",
+      "M\u00e4.",
+      "Zi.",
+      "Mi.",
+      "Du.",
+      "Fr.",
+      "Sa."
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "M\u00e4r",
+      "Apr",
+      "Mai",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Okt",
+      "Nov",
+      "Dez"
+    ],
+    "STANDALONEMONTH": [
+      "Januar",
+      "Februar",
+      "M\u00e4rz",
+      "April",
+      "Mai",
+      "Juni",
+      "Juli",
+      "Auguscht",
+      "Sept\u00e4mber",
+      "Oktoober",
+      "Nov\u00e4mber",
+      "Dez\u00e4mber"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "dd.MM.y HH:mm:ss",
+    "mediumDate": "dd.MM.y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.yy HH:mm",
+    "shortDate": "dd.MM.yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20ac",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": "\u2019",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "gsw-fr",
+  "localeID": "gsw_FR",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gsw-li.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gsw-li.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gsw-li.js
new file mode 100644
index 0000000..615fafd
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gsw-li.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "vorm.",
+      "nam."
+    ],
+    "DAY": [
+      "Sunntig",
+      "M\u00e4\u00e4ntig",
+      "Ziischtig",
+      "Mittwuch",
+      "Dunschtig",
+      "Friitig",
+      "Samschtig"
+    ],
+    "ERANAMES": [
+      "v. Chr.",
+      "n. Chr."
+    ],
+    "ERAS": [
+      "v. Chr.",
+      "n. Chr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Januar",
+      "Februar",
+      "M\u00e4rz",
+      "April",
+      "Mai",
+      "Juni",
+      "Juli",
+      "Auguscht",
+      "Sept\u00e4mber",
+      "Oktoober",
+      "Nov\u00e4mber",
+      "Dez\u00e4mber"
+    ],
+    "SHORTDAY": [
+      "Su.",
+      "M\u00e4.",
+      "Zi.",
+      "Mi.",
+      "Du.",
+      "Fr.",
+      "Sa."
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "M\u00e4r",
+      "Apr",
+      "Mai",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Okt",
+      "Nov",
+      "Dez"
+    ],
+    "STANDALONEMONTH": [
+      "Januar",
+      "Februar",
+      "M\u00e4rz",
+      "April",
+      "Mai",
+      "Juni",
+      "Juli",
+      "Auguscht",
+      "Sept\u00e4mber",
+      "Oktoober",
+      "Nov\u00e4mber",
+      "Dez\u00e4mber"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "dd.MM.y HH:mm:ss",
+    "mediumDate": "dd.MM.y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.yy HH:mm",
+    "shortDate": "dd.MM.yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "CHF",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": "\u2019",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "gsw-li",
+  "localeID": "gsw_LI",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gsw.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gsw.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gsw.js
new file mode 100644
index 0000000..13c517d
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gsw.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "vorm.",
+      "nam."
+    ],
+    "DAY": [
+      "Sunntig",
+      "M\u00e4\u00e4ntig",
+      "Ziischtig",
+      "Mittwuch",
+      "Dunschtig",
+      "Friitig",
+      "Samschtig"
+    ],
+    "ERANAMES": [
+      "v. Chr.",
+      "n. Chr."
+    ],
+    "ERAS": [
+      "v. Chr.",
+      "n. Chr."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Januar",
+      "Februar",
+      "M\u00e4rz",
+      "April",
+      "Mai",
+      "Juni",
+      "Juli",
+      "Auguscht",
+      "Sept\u00e4mber",
+      "Oktoober",
+      "Nov\u00e4mber",
+      "Dez\u00e4mber"
+    ],
+    "SHORTDAY": [
+      "Su.",
+      "M\u00e4.",
+      "Zi.",
+      "Mi.",
+      "Du.",
+      "Fr.",
+      "Sa."
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "M\u00e4r",
+      "Apr",
+      "Mai",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Okt",
+      "Nov",
+      "Dez"
+    ],
+    "STANDALONEMONTH": [
+      "Januar",
+      "Februar",
+      "M\u00e4rz",
+      "April",
+      "Mai",
+      "Juni",
+      "Juli",
+      "Auguscht",
+      "Sept\u00e4mber",
+      "Oktoober",
+      "Nov\u00e4mber",
+      "Dez\u00e4mber"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d. MMMM y",
+    "longDate": "d. MMMM y",
+    "medium": "dd.MM.y HH:mm:ss",
+    "mediumDate": "dd.MM.y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd.MM.yy HH:mm",
+    "shortDate": "dd.MM.yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "CHF",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": "\u2019",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "gsw",
+  "localeID": "gsw",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gu-in.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gu-in.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gu-in.js
new file mode 100644
index 0000000..ecc7a44
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gu-in.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "\u0ab0\u0ab5\u0abf\u0ab5\u0abe\u0ab0",
+      "\u0ab8\u0acb\u0aae\u0ab5\u0abe\u0ab0",
+      "\u0aae\u0a82\u0a97\u0ab3\u0ab5\u0abe\u0ab0",
+      "\u0aac\u0ac1\u0aa7\u0ab5\u0abe\u0ab0",
+      "\u0a97\u0ac1\u0ab0\u0ac1\u0ab5\u0abe\u0ab0",
+      "\u0ab6\u0ac1\u0a95\u0acd\u0ab0\u0ab5\u0abe\u0ab0",
+      "\u0ab6\u0aa8\u0abf\u0ab5\u0abe\u0ab0"
+    ],
+    "ERANAMES": [
+      "\u0a88\u0ab8\u0ab5\u0ac0\u0ab8\u0aa8 \u0aaa\u0ac2\u0ab0\u0acd\u0ab5\u0ac7",
+      "\u0a87\u0ab8\u0ab5\u0ac0\u0ab8\u0aa8"
+    ],
+    "ERAS": [
+      "\u0a88\u0ab8\u0ac1\u0aa8\u0abe \u0a9c\u0aa8\u0acd\u0aae \u0aaa\u0ab9\u0ac7\u0ab2\u0abe",
+      "\u0a87\u0ab8\u0ab5\u0ac0\u0ab8\u0aa8"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1\u0a86\u0ab0\u0ac0",
+      "\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1\u0a86\u0ab0\u0ac0",
+      "\u0aae\u0abe\u0ab0\u0acd\u0a9a",
+      "\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2",
+      "\u0aae\u0ac7",
+      "\u0a9c\u0ac2\u0aa8",
+      "\u0a9c\u0ac1\u0ab2\u0abe\u0a88",
+      "\u0a91\u0a97\u0ab8\u0acd\u0a9f",
+      "\u0ab8\u0aaa\u0acd\u0a9f\u0ac7\u0aae\u0acd\u0aac\u0ab0",
+      "\u0a91\u0a95\u0acd\u0a9f\u0acb\u0aac\u0ab0",
+      "\u0aa8\u0ab5\u0ac7\u0aae\u0acd\u0aac\u0ab0",
+      "\u0aa1\u0abf\u0ab8\u0ac7\u0aae\u0acd\u0aac\u0ab0"
+    ],
+    "SHORTDAY": [
+      "\u0ab0\u0ab5\u0abf",
+      "\u0ab8\u0acb\u0aae",
+      "\u0aae\u0a82\u0a97\u0ab3",
+      "\u0aac\u0ac1\u0aa7",
+      "\u0a97\u0ac1\u0ab0\u0ac1",
+      "\u0ab6\u0ac1\u0a95\u0acd\u0ab0",
+      "\u0ab6\u0aa8\u0abf"
+    ],
+    "SHORTMONTH": [
+      "\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1",
+      "\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1",
+      "\u0aae\u0abe\u0ab0\u0acd\u0a9a",
+      "\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2",
+      "\u0aae\u0ac7",
+      "\u0a9c\u0ac2\u0aa8",
+      "\u0a9c\u0ac1\u0ab2\u0abe\u0a88",
+      "\u0a91\u0a97",
+      "\u0ab8\u0aaa\u0acd\u0a9f\u0ac7",
+      "\u0a91\u0a95\u0acd\u0a9f\u0acb",
+      "\u0aa8\u0ab5\u0ac7",
+      "\u0aa1\u0abf\u0ab8\u0ac7"
+    ],
+    "STANDALONEMONTH": [
+      "\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1\u0a86\u0ab0\u0ac0",
+      "\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1\u0a86\u0ab0\u0ac0",
+      "\u0aae\u0abe\u0ab0\u0acd\u0a9a",
+      "\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2",
+      "\u0aae\u0ac7",
+      "\u0a9c\u0ac2\u0aa8",
+      "\u0a9c\u0ac1\u0ab2\u0abe\u0a88",
+      "\u0a91\u0a97\u0ab8\u0acd\u0a9f",
+      "\u0ab8\u0aaa\u0acd\u0a9f\u0ac7\u0aae\u0acd\u0aac\u0ab0",
+      "\u0a91\u0a95\u0acd\u0a9f\u0acb\u0aac\u0ab0",
+      "\u0aa8\u0ab5\u0ac7\u0aae\u0acd\u0aac\u0ab0",
+      "\u0aa1\u0abf\u0ab8\u0ac7\u0aae\u0acd\u0aac\u0ab0"
+    ],
+    "WEEKENDRANGE": [
+      6,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM, y",
+    "longDate": "d MMMM, y",
+    "medium": "d MMM, y hh:mm:ss a",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "hh:mm:ss a",
+    "short": "d/M/yy hh:mm a",
+    "shortDate": "d/M/yy",
+    "shortTime": "hh:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20b9",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "gu-in",
+  "localeID": "gu_IN",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gu.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gu.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gu.js
new file mode 100644
index 0000000..3804acd
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gu.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "\u0ab0\u0ab5\u0abf\u0ab5\u0abe\u0ab0",
+      "\u0ab8\u0acb\u0aae\u0ab5\u0abe\u0ab0",
+      "\u0aae\u0a82\u0a97\u0ab3\u0ab5\u0abe\u0ab0",
+      "\u0aac\u0ac1\u0aa7\u0ab5\u0abe\u0ab0",
+      "\u0a97\u0ac1\u0ab0\u0ac1\u0ab5\u0abe\u0ab0",
+      "\u0ab6\u0ac1\u0a95\u0acd\u0ab0\u0ab5\u0abe\u0ab0",
+      "\u0ab6\u0aa8\u0abf\u0ab5\u0abe\u0ab0"
+    ],
+    "ERANAMES": [
+      "\u0a88\u0ab8\u0ab5\u0ac0\u0ab8\u0aa8 \u0aaa\u0ac2\u0ab0\u0acd\u0ab5\u0ac7",
+      "\u0a87\u0ab8\u0ab5\u0ac0\u0ab8\u0aa8"
+    ],
+    "ERAS": [
+      "\u0a88\u0ab8\u0ac1\u0aa8\u0abe \u0a9c\u0aa8\u0acd\u0aae \u0aaa\u0ab9\u0ac7\u0ab2\u0abe",
+      "\u0a87\u0ab8\u0ab5\u0ac0\u0ab8\u0aa8"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1\u0a86\u0ab0\u0ac0",
+      "\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1\u0a86\u0ab0\u0ac0",
+      "\u0aae\u0abe\u0ab0\u0acd\u0a9a",
+      "\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2",
+      "\u0aae\u0ac7",
+      "\u0a9c\u0ac2\u0aa8",
+      "\u0a9c\u0ac1\u0ab2\u0abe\u0a88",
+      "\u0a91\u0a97\u0ab8\u0acd\u0a9f",
+      "\u0ab8\u0aaa\u0acd\u0a9f\u0ac7\u0aae\u0acd\u0aac\u0ab0",
+      "\u0a91\u0a95\u0acd\u0a9f\u0acb\u0aac\u0ab0",
+      "\u0aa8\u0ab5\u0ac7\u0aae\u0acd\u0aac\u0ab0",
+      "\u0aa1\u0abf\u0ab8\u0ac7\u0aae\u0acd\u0aac\u0ab0"
+    ],
+    "SHORTDAY": [
+      "\u0ab0\u0ab5\u0abf",
+      "\u0ab8\u0acb\u0aae",
+      "\u0aae\u0a82\u0a97\u0ab3",
+      "\u0aac\u0ac1\u0aa7",
+      "\u0a97\u0ac1\u0ab0\u0ac1",
+      "\u0ab6\u0ac1\u0a95\u0acd\u0ab0",
+      "\u0ab6\u0aa8\u0abf"
+    ],
+    "SHORTMONTH": [
+      "\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1",
+      "\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1",
+      "\u0aae\u0abe\u0ab0\u0acd\u0a9a",
+      "\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2",
+      "\u0aae\u0ac7",
+      "\u0a9c\u0ac2\u0aa8",
+      "\u0a9c\u0ac1\u0ab2\u0abe\u0a88",
+      "\u0a91\u0a97",
+      "\u0ab8\u0aaa\u0acd\u0a9f\u0ac7",
+      "\u0a91\u0a95\u0acd\u0a9f\u0acb",
+      "\u0aa8\u0ab5\u0ac7",
+      "\u0aa1\u0abf\u0ab8\u0ac7"
+    ],
+    "STANDALONEMONTH": [
+      "\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1\u0a86\u0ab0\u0ac0",
+      "\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1\u0a86\u0ab0\u0ac0",
+      "\u0aae\u0abe\u0ab0\u0acd\u0a9a",
+      "\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2",
+      "\u0aae\u0ac7",
+      "\u0a9c\u0ac2\u0aa8",
+      "\u0a9c\u0ac1\u0ab2\u0abe\u0a88",
+      "\u0a91\u0a97\u0ab8\u0acd\u0a9f",
+      "\u0ab8\u0aaa\u0acd\u0a9f\u0ac7\u0aae\u0acd\u0aac\u0ab0",
+      "\u0a91\u0a95\u0acd\u0a9f\u0acb\u0aac\u0ab0",
+      "\u0aa8\u0ab5\u0ac7\u0aae\u0acd\u0aac\u0ab0",
+      "\u0aa1\u0abf\u0ab8\u0ac7\u0aae\u0acd\u0aac\u0ab0"
+    ],
+    "WEEKENDRANGE": [
+      6,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM, y",
+    "longDate": "d MMMM, y",
+    "medium": "d MMM, y hh:mm:ss a",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "hh:mm:ss a",
+    "short": "d/M/yy hh:mm a",
+    "shortDate": "d/M/yy",
+    "shortTime": "hh:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20b9",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "gu",
+  "localeID": "gu",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_guz-ke.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_guz-ke.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_guz-ke.js
new file mode 100644
index 0000000..67ed8c6
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_guz-ke.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "Ma/Mo",
+      "Mambia/Mog"
+    ],
+    "DAY": [
+      "Chumapiri",
+      "Chumatato",
+      "Chumaine",
+      "Chumatano",
+      "Aramisi",
+      "Ichuma",
+      "Esabato"
+    ],
+    "ERANAMES": [
+      "Yeso ataiborwa",
+      "Yeso kaiboirwe"
+    ],
+    "ERAS": [
+      "YA",
+      "YK"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Chanuari",
+      "Feburari",
+      "Machi",
+      "Apiriri",
+      "Mei",
+      "Juni",
+      "Chulai",
+      "Agosti",
+      "Septemba",
+      "Okitoba",
+      "Nobemba",
+      "Disemba"
+    ],
+    "SHORTDAY": [
+      "Cpr",
+      "Ctt",
+      "Cmn",
+      "Cmt",
+      "Ars",
+      "Icm",
+      "Est"
+    ],
+    "SHORTMONTH": [
+      "Can",
+      "Feb",
+      "Mac",
+      "Apr",
+      "Mei",
+      "Jun",
+      "Cul",
+      "Agt",
+      "Sep",
+      "Okt",
+      "Nob",
+      "Dis"
+    ],
+    "STANDALONEMONTH": [
+      "Chanuari",
+      "Feburari",
+      "Machi",
+      "Apiriri",
+      "Mei",
+      "Juni",
+      "Chulai",
+      "Agosti",
+      "Septemba",
+      "Okitoba",
+      "Nobemba",
+      "Disemba"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Ksh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "guz-ke",
+  "localeID": "guz_KE",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_guz.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_guz.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_guz.js
new file mode 100644
index 0000000..8c2b1e6
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_guz.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "Ma/Mo",
+      "Mambia/Mog"
+    ],
+    "DAY": [
+      "Chumapiri",
+      "Chumatato",
+      "Chumaine",
+      "Chumatano",
+      "Aramisi",
+      "Ichuma",
+      "Esabato"
+    ],
+    "ERANAMES": [
+      "Yeso ataiborwa",
+      "Yeso kaiboirwe"
+    ],
+    "ERAS": [
+      "YA",
+      "YK"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Chanuari",
+      "Feburari",
+      "Machi",
+      "Apiriri",
+      "Mei",
+      "Juni",
+      "Chulai",
+      "Agosti",
+      "Septemba",
+      "Okitoba",
+      "Nobemba",
+      "Disemba"
+    ],
+    "SHORTDAY": [
+      "Cpr",
+      "Ctt",
+      "Cmn",
+      "Cmt",
+      "Ars",
+      "Icm",
+      "Est"
+    ],
+    "SHORTMONTH": [
+      "Can",
+      "Feb",
+      "Mac",
+      "Apr",
+      "Mei",
+      "Jun",
+      "Cul",
+      "Agt",
+      "Sep",
+      "Okt",
+      "Nob",
+      "Dis"
+    ],
+    "STANDALONEMONTH": [
+      "Chanuari",
+      "Feburari",
+      "Machi",
+      "Apiriri",
+      "Mei",
+      "Juni",
+      "Chulai",
+      "Agosti",
+      "Septemba",
+      "Okitoba",
+      "Nobemba",
+      "Disemba"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Ksh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "guz",
+  "localeID": "guz",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gv-im.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gv-im.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gv-im.js
new file mode 100644
index 0000000..9c38f7a
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gv-im.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a.m.",
+      "p.m."
+    ],
+    "DAY": [
+      "Jedoonee",
+      "Jelhein",
+      "Jemayrt",
+      "Jercean",
+      "Jerdein",
+      "Jeheiney",
+      "Jesarn"
+    ],
+    "ERANAMES": [
+      "RC",
+      "AD"
+    ],
+    "ERAS": [
+      "RC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Jerrey-geuree",
+      "Toshiaght-arree",
+      "Mayrnt",
+      "Averil",
+      "Boaldyn",
+      "Mean-souree",
+      "Jerrey-souree",
+      "Luanistyn",
+      "Mean-fouyir",
+      "Jerrey-fouyir",
+      "Mee Houney",
+      "Mee ny Nollick"
+    ],
+    "SHORTDAY": [
+      "Jed",
+      "Jel",
+      "Jem",
+      "Jerc",
+      "Jerd",
+      "Jeh",
+      "Jes"
+    ],
+    "SHORTMONTH": [
+      "J-guer",
+      "T-arree",
+      "Mayrnt",
+      "Avrril",
+      "Boaldyn",
+      "M-souree",
+      "J-souree",
+      "Luanistyn",
+      "M-fouyir",
+      "J-fouyir",
+      "M.Houney",
+      "M.Nollick"
+    ],
+    "STANDALONEMONTH": [
+      "Jerrey-geuree",
+      "Toshiaght-arree",
+      "Mayrnt",
+      "Averil",
+      "Boaldyn",
+      "Mean-souree",
+      "Jerrey-souree",
+      "Luanistyn",
+      "Mean-fouyir",
+      "Jerrey-fouyir",
+      "Mee Houney",
+      "Mee ny Nollick"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE dd MMMM y",
+    "longDate": "dd MMMM y",
+    "medium": "MMM dd, y HH:mm:ss",
+    "mediumDate": "MMM dd, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/yy HH:mm",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u00a3",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "gv-im",
+  "localeID": "gv_IM",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gv.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gv.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gv.js
new file mode 100644
index 0000000..fefc641
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_gv.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a.m.",
+      "p.m."
+    ],
+    "DAY": [
+      "Jedoonee",
+      "Jelhein",
+      "Jemayrt",
+      "Jercean",
+      "Jerdein",
+      "Jeheiney",
+      "Jesarn"
+    ],
+    "ERANAMES": [
+      "RC",
+      "AD"
+    ],
+    "ERAS": [
+      "RC",
+      "AD"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Jerrey-geuree",
+      "Toshiaght-arree",
+      "Mayrnt",
+      "Averil",
+      "Boaldyn",
+      "Mean-souree",
+      "Jerrey-souree",
+      "Luanistyn",
+      "Mean-fouyir",
+      "Jerrey-fouyir",
+      "Mee Houney",
+      "Mee ny Nollick"
+    ],
+    "SHORTDAY": [
+      "Jed",
+      "Jel",
+      "Jem",
+      "Jerc",
+      "Jerd",
+      "Jeh",
+      "Jes"
+    ],
+    "SHORTMONTH": [
+      "J-guer",
+      "T-arree",
+      "Mayrnt",
+      "Avrril",
+      "Boaldyn",
+      "M-souree",
+      "J-souree",
+      "Luanistyn",
+      "M-fouyir",
+      "J-fouyir",
+      "M.Houney",
+      "M.Nollick"
+    ],
+    "STANDALONEMONTH": [
+      "Jerrey-geuree",
+      "Toshiaght-arree",
+      "Mayrnt",
+      "Averil",
+      "Boaldyn",
+      "Mean-souree",
+      "Jerrey-souree",
+      "Luanistyn",
+      "Mean-fouyir",
+      "Jerrey-fouyir",
+      "Mee Houney",
+      "Mee ny Nollick"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE dd MMMM y",
+    "longDate": "dd MMMM y",
+    "medium": "MMM dd, y HH:mm:ss",
+    "mediumDate": "MMM dd, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/yy HH:mm",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u00a3",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "gv",
+  "localeID": "gv",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ha-latn-gh.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ha-latn-gh.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ha-latn-gh.js
new file mode 100644
index 0000000..61edae7
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ha-latn-gh.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Lahadi",
+      "Litinin",
+      "Talata",
+      "Laraba",
+      "Alhamis",
+      "Jumma\u02bca",
+      "Asabar"
+    ],
+    "ERANAMES": [
+      "Kafin haihuwar annab",
+      "Bayan haihuwar annab"
+    ],
+    "ERAS": [
+      "KHAI",
+      "BHAI"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Janairu",
+      "Faburairu",
+      "Maris",
+      "Afirilu",
+      "Mayu",
+      "Yuni",
+      "Yuli",
+      "Agusta",
+      "Satumba",
+      "Oktoba",
+      "Nuwamba",
+      "Disamba"
+    ],
+    "SHORTDAY": [
+      "Lh",
+      "Li",
+      "Ta",
+      "Lr",
+      "Al",
+      "Ju",
+      "As"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Fab",
+      "Mar",
+      "Afi",
+      "May",
+      "Yun",
+      "Yul",
+      "Agu",
+      "Sat",
+      "Okt",
+      "Nuw",
+      "Dis"
+    ],
+    "STANDALONEMONTH": [
+      "Janairu",
+      "Faburairu",
+      "Maris",
+      "Afirilu",
+      "Mayu",
+      "Yuni",
+      "Yuli",
+      "Agusta",
+      "Satumba",
+      "Oktoba",
+      "Nuwamba",
+      "Disamba"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM, y",
+    "longDate": "d MMMM, y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/yy HH:mm",
+    "shortDate": "d/M/yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "GHS",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ha-latn-gh",
+  "localeID": "ha_Latn_GH",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ha-latn-ne.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ha-latn-ne.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ha-latn-ne.js
new file mode 100644
index 0000000..05debb8
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ha-latn-ne.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Lahadi",
+      "Litinin",
+      "Talata",
+      "Laraba",
+      "Alhamis",
+      "Jumma\u02bca",
+      "Asabar"
+    ],
+    "ERANAMES": [
+      "Kafin haihuwar annab",
+      "Bayan haihuwar annab"
+    ],
+    "ERAS": [
+      "KHAI",
+      "BHAI"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Janairu",
+      "Faburairu",
+      "Maris",
+      "Afirilu",
+      "Mayu",
+      "Yuni",
+      "Yuli",
+      "Agusta",
+      "Satumba",
+      "Oktoba",
+      "Nuwamba",
+      "Disamba"
+    ],
+    "SHORTDAY": [
+      "Lh",
+      "Li",
+      "Ta",
+      "Lr",
+      "Al",
+      "Ju",
+      "As"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Fab",
+      "Mar",
+      "Afi",
+      "May",
+      "Yun",
+      "Yul",
+      "Agu",
+      "Sat",
+      "Okt",
+      "Nuw",
+      "Dis"
+    ],
+    "STANDALONEMONTH": [
+      "Janairu",
+      "Faburairu",
+      "Maris",
+      "Afirilu",
+      "Mayu",
+      "Yuni",
+      "Yuli",
+      "Agusta",
+      "Satumba",
+      "Oktoba",
+      "Nuwamba",
+      "Disamba"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM, y",
+    "longDate": "d MMMM, y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/yy HH:mm",
+    "shortDate": "d/M/yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "CFA",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ha-latn-ne",
+  "localeID": "ha_Latn_NE",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ha-latn-ng.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ha-latn-ng.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ha-latn-ng.js
new file mode 100644
index 0000000..2839708
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ha-latn-ng.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Lahadi",
+      "Litinin",
+      "Talata",
+      "Laraba",
+      "Alhamis",
+      "Jumma\u02bca",
+      "Asabar"
+    ],
+    "ERANAMES": [
+      "Kafin haihuwar annab",
+      "Bayan haihuwar annab"
+    ],
+    "ERAS": [
+      "KHAI",
+      "BHAI"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Janairu",
+      "Faburairu",
+      "Maris",
+      "Afirilu",
+      "Mayu",
+      "Yuni",
+      "Yuli",
+      "Agusta",
+      "Satumba",
+      "Oktoba",
+      "Nuwamba",
+      "Disamba"
+    ],
+    "SHORTDAY": [
+      "Lh",
+      "Li",
+      "Ta",
+      "Lr",
+      "Al",
+      "Ju",
+      "As"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Fab",
+      "Mar",
+      "Afi",
+      "May",
+      "Yun",
+      "Yul",
+      "Agu",
+      "Sat",
+      "Okt",
+      "Nuw",
+      "Dis"
+    ],
+    "STANDALONEMONTH": [
+      "Janairu",
+      "Faburairu",
+      "Maris",
+      "Afirilu",
+      "Mayu",
+      "Yuni",
+      "Yuli",
+      "Agusta",
+      "Satumba",
+      "Oktoba",
+      "Nuwamba",
+      "Disamba"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM, y",
+    "longDate": "d MMMM, y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/yy HH:mm",
+    "shortDate": "d/M/yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20a6",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ha-latn-ng",
+  "localeID": "ha_Latn_NG",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ha-latn.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ha-latn.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ha-latn.js
new file mode 100644
index 0000000..92666a2
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ha-latn.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Lahadi",
+      "Litinin",
+      "Talata",
+      "Laraba",
+      "Alhamis",
+      "Jumma\u02bca",
+      "Asabar"
+    ],
+    "ERANAMES": [
+      "Kafin haihuwar annab",
+      "Bayan haihuwar annab"
+    ],
+    "ERAS": [
+      "KHAI",
+      "BHAI"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Janairu",
+      "Faburairu",
+      "Maris",
+      "Afirilu",
+      "Mayu",
+      "Yuni",
+      "Yuli",
+      "Agusta",
+      "Satumba",
+      "Oktoba",
+      "Nuwamba",
+      "Disamba"
+    ],
+    "SHORTDAY": [
+      "Lh",
+      "Li",
+      "Ta",
+      "Lr",
+      "Al",
+      "Ju",
+      "As"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Fab",
+      "Mar",
+      "Afi",
+      "May",
+      "Yun",
+      "Yul",
+      "Agu",
+      "Sat",
+      "Okt",
+      "Nuw",
+      "Dis"
+    ],
+    "STANDALONEMONTH": [
+      "Janairu",
+      "Faburairu",
+      "Maris",
+      "Afirilu",
+      "Mayu",
+      "Yuni",
+      "Yuli",
+      "Agusta",
+      "Satumba",
+      "Oktoba",
+      "Nuwamba",
+      "Disamba"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM, y",
+    "longDate": "d MMMM, y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/yy HH:mm",
+    "shortDate": "d/M/yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20a6",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ha-latn",
+  "localeID": "ha_Latn",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ha.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ha.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ha.js
new file mode 100644
index 0000000..1550a07
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ha.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "Lahadi",
+      "Litinin",
+      "Talata",
+      "Laraba",
+      "Alhamis",
+      "Jumma\u02bca",
+      "Asabar"
+    ],
+    "ERANAMES": [
+      "Kafin haihuwar annab",
+      "Bayan haihuwar annab"
+    ],
+    "ERAS": [
+      "KHAI",
+      "BHAI"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Janairu",
+      "Faburairu",
+      "Maris",
+      "Afirilu",
+      "Mayu",
+      "Yuni",
+      "Yuli",
+      "Agusta",
+      "Satumba",
+      "Oktoba",
+      "Nuwamba",
+      "Disamba"
+    ],
+    "SHORTDAY": [
+      "Lh",
+      "Li",
+      "Ta",
+      "Lr",
+      "Al",
+      "Ju",
+      "As"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Fab",
+      "Mar",
+      "Afi",
+      "May",
+      "Yun",
+      "Yul",
+      "Agu",
+      "Sat",
+      "Okt",
+      "Nuw",
+      "Dis"
+    ],
+    "STANDALONEMONTH": [
+      "Janairu",
+      "Faburairu",
+      "Maris",
+      "Afirilu",
+      "Mayu",
+      "Yuni",
+      "Yuli",
+      "Agusta",
+      "Satumba",
+      "Oktoba",
+      "Nuwamba",
+      "Disamba"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM, y",
+    "longDate": "d MMMM, y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/yy HH:mm",
+    "shortDate": "d/M/yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20a6",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ha",
+  "localeID": "ha",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_haw-us.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_haw-us.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_haw-us.js
new file mode 100644
index 0000000..2dab59b
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_haw-us.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "L\u0101pule",
+      "Po\u02bbakahi",
+      "Po\u02bbalua",
+      "Po\u02bbakolu",
+      "Po\u02bbah\u0101",
+      "Po\u02bbalima",
+      "Po\u02bbaono"
+    ],
+    "ERANAMES": [
+      "BCE",
+      "CE"
+    ],
+    "ERAS": [
+      "BCE",
+      "CE"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "Ianuali",
+      "Pepeluali",
+      "Malaki",
+      "\u02bbApelila",
+      "Mei",
+      "Iune",
+      "Iulai",
+      "\u02bbAukake",
+      "Kepakemapa",
+      "\u02bbOkakopa",
+      "Nowemapa",
+      "Kekemapa"
+    ],
+    "SHORTDAY": [
+      "LP",
+      "P1",
+      "P2",
+      "P3",
+      "P4",
+      "P5",
+      "P6"
+    ],
+    "SHORTMONTH": [
+      "Ian.",
+      "Pep.",
+      "Mal.",
+      "\u02bbAp.",
+      "Mei",
+      "Iun.",
+      "Iul.",
+      "\u02bbAu.",
+      "Kep.",
+      "\u02bbOk.",
+      "Now.",
+      "Kek."
+    ],
+    "STANDALONEMONTH": [
+      "Ianuali",
+      "Pepeluali",
+      "Malaki",
+      "\u02bbApelila",
+      "Mei",
+      "Iune",
+      "Iulai",
+      "\u02bbAukake",
+      "Kepakemapa",
+      "\u02bbOkakopa",
+      "Nowemapa",
+      "Kekemapa"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/M/yy h:mm a",
+    "shortDate": "d/M/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "haw-us",
+  "localeID": "haw_US",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);



[29/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-translate.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-translate.js b/rocketmq-console/src/main/resources/static/vendor/angular/angular-translate.js
new file mode 100644
index 0000000..93c0a26
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-translate.js
@@ -0,0 +1,3691 @@
+/*!
+ * angular-translate - v2.13.1 - 2016-12-06
+ * 
+ * Copyright (c) 2016 The angular-translate team, Pascal Precht; Licensed MIT
+ */
+(function (root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD. Register as an anonymous module unless amdModuleId is set
+    define([], function () {
+      return (factory());
+    });
+  } else if (typeof exports === 'object') {
+    // Node. Does not work with strict CommonJS, but
+    // only CommonJS-like environments that support module.exports,
+    // like Node.
+    module.exports = factory();
+  } else {
+    factory();
+  }
+}(this, function () {
+
+/**
+ * @ngdoc overview
+ * @name pascalprecht.translate
+ *
+ * @description
+ * The main module which holds everything together.
+ */
+runTranslate.$inject = ['$translate'];
+$translate.$inject = ['$STORAGE_KEY', '$windowProvider', '$translateSanitizationProvider', 'pascalprechtTranslateOverrider'];
+$translateDefaultInterpolation.$inject = ['$interpolate', '$translateSanitization'];
+translateDirective.$inject = ['$translate', '$interpolate', '$compile', '$parse', '$rootScope'];
+translateAttrDirective.$inject = ['$translate', '$rootScope'];
+translateCloakDirective.$inject = ['$translate', '$rootScope'];
+translateFilterFactory.$inject = ['$parse', '$translate'];
+$translationCache.$inject = ['$cacheFactory'];
+angular.module('pascalprecht.translate', ['ng'])
+  .run(runTranslate);
+
+function runTranslate($translate) {
+
+  'use strict';
+
+  var key = $translate.storageKey(),
+    storage = $translate.storage();
+
+  var fallbackFromIncorrectStorageValue = function () {
+    var preferred = $translate.preferredLanguage();
+    if (angular.isString(preferred)) {
+      $translate.use(preferred);
+      // $translate.use() will also remember the language.
+      // So, we don't need to call storage.put() here.
+    } else {
+      storage.put(key, $translate.use());
+    }
+  };
+
+  fallbackFromIncorrectStorageValue.displayName = 'fallbackFromIncorrectStorageValue';
+
+  if (storage) {
+    if (!storage.get(key)) {
+      fallbackFromIncorrectStorageValue();
+    } else {
+      $translate.use(storage.get(key))['catch'](fallbackFromIncorrectStorageValue);
+    }
+  } else if (angular.isString($translate.preferredLanguage())) {
+    $translate.use($translate.preferredLanguage());
+  }
+}
+
+runTranslate.displayName = 'runTranslate';
+
+/**
+ * @ngdoc object
+ * @name pascalprecht.translate.$translateSanitizationProvider
+ *
+ * @description
+ *
+ * Configurations for $translateSanitization
+ */
+angular.module('pascalprecht.translate').provider('$translateSanitization', $translateSanitizationProvider);
+
+function $translateSanitizationProvider () {
+
+  'use strict';
+
+  var $sanitize,
+      $sce,
+      currentStrategy = null, // TODO change to either 'sanitize', 'escape' or ['sanitize', 'escapeParameters'] in 3.0.
+      hasConfiguredStrategy = false,
+      hasShownNoStrategyConfiguredWarning = false,
+      strategies;
+
+  /**
+   * Definition of a sanitization strategy function
+   * @callback StrategyFunction
+   * @param {string|object} value - value to be sanitized (either a string or an interpolated value map)
+   * @param {string} mode - either 'text' for a string (translation) or 'params' for the interpolated params
+   * @return {string|object}
+   */
+
+  /**
+   * @ngdoc property
+   * @name strategies
+   * @propertyOf pascalprecht.translate.$translateSanitizationProvider
+   *
+   * @description
+   * Following strategies are built-in:
+   * <dl>
+   *   <dt>sanitize</dt>
+   *   <dd>Sanitizes HTML in the translation text using $sanitize</dd>
+   *   <dt>escape</dt>
+   *   <dd>Escapes HTML in the translation</dd>
+   *   <dt>sanitizeParameters</dt>
+   *   <dd>Sanitizes HTML in the values of the interpolation parameters using $sanitize</dd>
+   *   <dt>escapeParameters</dt>
+   *   <dd>Escapes HTML in the values of the interpolation parameters</dd>
+   *   <dt>escaped</dt>
+   *   <dd>Support legacy strategy name 'escaped' for backwards compatibility (will be removed in 3.0)</dd>
+   * </dl>
+   *
+   */
+
+  strategies = {
+    sanitize: function (value, mode/*, context*/) {
+      if (mode === 'text') {
+        value = htmlSanitizeValue(value);
+      }
+      return value;
+    },
+    escape: function (value, mode/*, context*/) {
+      if (mode === 'text') {
+        value = htmlEscapeValue(value);
+      }
+      return value;
+    },
+    sanitizeParameters: function (value, mode/*, context*/) {
+      if (mode === 'params') {
+        value = mapInterpolationParameters(value, htmlSanitizeValue);
+      }
+      return value;
+    },
+    escapeParameters: function (value, mode/*, context*/) {
+      if (mode === 'params') {
+        value = mapInterpolationParameters(value, htmlEscapeValue);
+      }
+      return value;
+    },
+    sce: function (value, mode, context) {
+      if (mode === 'text') {
+        value = htmlTrustValue(value);
+      } else if (mode === 'params') {
+        if (context !== 'filter') {
+          // do html escape in filter context #1101
+          value = mapInterpolationParameters(value, htmlEscapeValue);
+        }
+      }
+      return value;
+    },
+    sceParameters: function (value, mode/*, context*/) {
+      if (mode === 'params') {
+        value = mapInterpolationParameters(value, htmlTrustValue);
+      }
+      return value;
+    }
+  };
+  // Support legacy strategy name 'escaped' for backwards compatibility.
+  // TODO should be removed in 3.0
+  strategies.escaped = strategies.escapeParameters;
+
+  /**
+   * @ngdoc function
+   * @name pascalprecht.translate.$translateSanitizationProvider#addStrategy
+   * @methodOf pascalprecht.translate.$translateSanitizationProvider
+   *
+   * @description
+   * Adds a sanitization strategy to the list of known strategies.
+   *
+   * @param {string} strategyName - unique key for a strategy
+   * @param {StrategyFunction} strategyFunction - strategy function
+   * @returns {object} this
+   */
+  this.addStrategy = function (strategyName, strategyFunction) {
+    strategies[strategyName] = strategyFunction;
+    return this;
+  };
+
+  /**
+   * @ngdoc function
+   * @name pascalprecht.translate.$translateSanitizationProvider#removeStrategy
+   * @methodOf pascalprecht.translate.$translateSanitizationProvider
+   *
+   * @description
+   * Removes a sanitization strategy from the list of known strategies.
+   *
+   * @param {string} strategyName - unique key for a strategy
+   * @returns {object} this
+   */
+  this.removeStrategy = function (strategyName) {
+    delete strategies[strategyName];
+    return this;
+  };
+
+  /**
+   * @ngdoc function
+   * @name pascalprecht.translate.$translateSanitizationProvider#useStrategy
+   * @methodOf pascalprecht.translate.$translateSanitizationProvider
+   *
+   * @description
+   * Selects a sanitization strategy. When an array is provided the strategies will be executed in order.
+   *
+   * @param {string|StrategyFunction|array} strategy The sanitization strategy / strategies which should be used. Either a name of an existing strategy, a custom strategy function, or an array consisting of multiple names and / or custom functions.
+   * @returns {object} this
+   */
+  this.useStrategy = function (strategy) {
+    hasConfiguredStrategy = true;
+    currentStrategy = strategy;
+    return this;
+  };
+
+  /**
+   * @ngdoc object
+   * @name pascalprecht.translate.$translateSanitization
+   * @requires $injector
+   * @requires $log
+   *
+   * @description
+   * Sanitizes interpolation parameters and translated texts.
+   *
+   */
+  this.$get = ['$injector', '$log', function ($injector, $log) {
+
+    var cachedStrategyMap = {};
+
+    var applyStrategies = function (value, mode, context, selectedStrategies) {
+      angular.forEach(selectedStrategies, function (selectedStrategy) {
+        if (angular.isFunction(selectedStrategy)) {
+          value = selectedStrategy(value, mode, context);
+        } else if (angular.isFunction(strategies[selectedStrategy])) {
+          value = strategies[selectedStrategy](value, mode, context);
+        } else if (angular.isString(strategies[selectedStrategy])) {
+          if (!cachedStrategyMap[strategies[selectedStrategy]]) {
+            try {
+              cachedStrategyMap[strategies[selectedStrategy]] = $injector.get(strategies[selectedStrategy]);
+            } catch (e) {
+              cachedStrategyMap[strategies[selectedStrategy]] = function() {};
+              throw new Error('pascalprecht.translate.$translateSanitization: Unknown sanitization strategy: \'' + selectedStrategy + '\'');
+            }
+          }
+          value = cachedStrategyMap[strategies[selectedStrategy]](value, mode, context);
+        } else {
+          throw new Error('pascalprecht.translate.$translateSanitization: Unknown sanitization strategy: \'' + selectedStrategy + '\'');
+        }
+      });
+      return value;
+    };
+
+    // TODO: should be removed in 3.0
+    var showNoStrategyConfiguredWarning = function () {
+      if (!hasConfiguredStrategy && !hasShownNoStrategyConfiguredWarning) {
+        $log.warn('pascalprecht.translate.$translateSanitization: No sanitization strategy has been configured. This can have serious security implications. See http://angular-translate.github.io/docs/#/guide/19_security for details.');
+        hasShownNoStrategyConfiguredWarning = true;
+      }
+    };
+
+    if ($injector.has('$sanitize')) {
+      $sanitize = $injector.get('$sanitize');
+    }
+    if ($injector.has('$sce')) {
+      $sce = $injector.get('$sce');
+    }
+
+    return {
+      /**
+       * @ngdoc function
+       * @name pascalprecht.translate.$translateSanitization#useStrategy
+       * @methodOf pascalprecht.translate.$translateSanitization
+       *
+       * @description
+       * Selects a sanitization strategy. When an array is provided the strategies will be executed in order.
+       *
+       * @param {string|StrategyFunction|array} strategy The sanitization strategy / strategies which should be used. Either a name of an existing strategy, a custom strategy function, or an array consisting of multiple names and / or custom functions.
+       */
+      useStrategy: (function (self) {
+        return function (strategy) {
+          self.useStrategy(strategy);
+        };
+      })(this),
+
+      /**
+       * @ngdoc function
+       * @name pascalprecht.translate.$translateSanitization#sanitize
+       * @methodOf pascalprecht.translate.$translateSanitization
+       *
+       * @description
+       * Sanitizes a value.
+       *
+       * @param {string|object} value The value which should be sanitized.
+       * @param {string} mode The current sanitization mode, either 'params' or 'text'.
+       * @param {string|StrategyFunction|array} [strategy] Optional custom strategy which should be used instead of the currently selected strategy.
+       * @param {string} [context] The context of this call: filter, service. Default is service
+       * @returns {string|object} sanitized value
+       */
+      sanitize: function (value, mode, strategy, context) {
+        if (!currentStrategy) {
+          showNoStrategyConfiguredWarning();
+        }
+
+        if (!strategy && strategy !== null) {
+          strategy = currentStrategy;
+        }
+
+        if (!strategy) {
+          return value;
+        }
+
+        if (!context) {
+          context = 'service';
+        }
+
+        var selectedStrategies = angular.isArray(strategy) ? strategy : [strategy];
+        return applyStrategies(value, mode, context, selectedStrategies);
+      }
+    };
+  }];
+
+  var htmlEscapeValue = function (value) {
+    var element = angular.element('<div></div>');
+    element.text(value); // not chainable, see #1044
+    return element.html();
+  };
+
+  var htmlSanitizeValue = function (value) {
+    if (!$sanitize) {
+      throw new Error('pascalprecht.translate.$translateSanitization: Error cannot find $sanitize service. Either include the ngSanitize module (https://docs.angularjs.org/api/ngSanitize) or use a sanitization strategy which does not depend on $sanitize, such as \'escape\'.');
+    }
+    return $sanitize(value);
+  };
+
+  var htmlTrustValue = function (value) {
+    if (!$sce) {
+      throw new Error('pascalprecht.translate.$translateSanitization: Error cannot find $sce service.');
+    }
+    return $sce.trustAsHtml(value);
+  };
+
+  var mapInterpolationParameters = function (value, iteratee, stack) {
+    if (angular.isDate(value)) {
+      return value;
+    } else if (angular.isObject(value)) {
+      var result = angular.isArray(value) ? [] : {};
+
+      if (!stack) {
+        stack = [];
+      } else {
+        if (stack.indexOf(value) > -1) {
+          throw new Error('pascalprecht.translate.$translateSanitization: Error cannot interpolate parameter due recursive object');
+        }
+      }
+
+      stack.push(value);
+      angular.forEach(value, function (propertyValue, propertyKey) {
+
+        /* Skipping function properties. */
+        if (angular.isFunction(propertyValue)) {
+          return;
+        }
+
+        result[propertyKey] = mapInterpolationParameters(propertyValue, iteratee, stack);
+      });
+      stack.splice(-1, 1); // remove last
+
+      return result;
+    } else if (angular.isNumber(value)) {
+      return value;
+    } else {
+      return iteratee(value);
+    }
+  };
+}
+
+/**
+ * @ngdoc object
+ * @name pascalprecht.translate.$translateProvider
+ * @description
+ *
+ * $translateProvider allows developers to register translation-tables, asynchronous loaders
+ * and similar to configure translation behavior directly inside of a module.
+ *
+ */
+angular.module('pascalprecht.translate')
+  .constant('pascalprechtTranslateOverrider', {})
+  .provider('$translate', $translate);
+
+function $translate($STORAGE_KEY, $windowProvider, $translateSanitizationProvider, pascalprechtTranslateOverrider) {
+
+  'use strict';
+
+  var $translationTable = {},
+    $preferredLanguage,
+    $availableLanguageKeys = [],
+    $languageKeyAliases,
+    $fallbackLanguage,
+    $fallbackWasString,
+    $uses,
+    $nextLang,
+    $storageFactory,
+    $storageKey = $STORAGE_KEY,
+    $storagePrefix,
+    $missingTranslationHandlerFactory,
+    $interpolationFactory,
+    $interpolatorFactories = [],
+    $loaderFactory,
+    $cloakClassName = 'translate-cloak',
+    $loaderOptions,
+    $notFoundIndicatorLeft,
+    $notFoundIndicatorRight,
+    $postCompilingEnabled = false,
+    $forceAsyncReloadEnabled = false,
+    $nestedObjectDelimeter = '.',
+    $isReady = false,
+    $keepContent = false,
+    loaderCache,
+    directivePriority = 0,
+    statefulFilter = true,
+    postProcessFn,
+    uniformLanguageTagResolver = 'default',
+    languageTagResolver = {
+      'default' : function (tag) {
+        return (tag || '').split('-').join('_');
+      },
+      java : function (tag) {
+        var temp = (tag || '').split('-').join('_');
+        var parts = temp.split('_');
+        return parts.length > 1 ? (parts[0].toLowerCase() + '_' + parts[1].toUpperCase()) : temp;
+      },
+      bcp47 : function (tag) {
+        var temp = (tag || '').split('_').join('-');
+        var parts = temp.split('-');
+        return parts.length > 1 ? (parts[0].toLowerCase() + '-' + parts[1].toUpperCase()) : temp;
+      },
+      'iso639-1' : function (tag) {
+        var temp = (tag || '').split('_').join('-');
+        var parts = temp.split('-');
+        return parts[0].toLowerCase();
+      }
+    };
+
+  var version = '2.13.1';
+
+  // tries to determine the browsers language
+  var getFirstBrowserLanguage = function () {
+
+    // internal purpose only
+    if (angular.isFunction(pascalprechtTranslateOverrider.getLocale)) {
+      return pascalprechtTranslateOverrider.getLocale();
+    }
+
+    var nav = $windowProvider.$get().navigator,
+      browserLanguagePropertyKeys = ['language', 'browserLanguage', 'systemLanguage', 'userLanguage'],
+      i,
+      language;
+
+    // support for HTML 5.1 "navigator.languages"
+    if (angular.isArray(nav.languages)) {
+      for (i = 0; i < nav.languages.length; i++) {
+        language = nav.languages[i];
+        if (language && language.length) {
+          return language;
+        }
+      }
+    }
+
+    // support for other well known properties in browsers
+    for (i = 0; i < browserLanguagePropertyKeys.length; i++) {
+      language = nav[browserLanguagePropertyKeys[i]];
+      if (language && language.length) {
+        return language;
+      }
+    }
+
+    return null;
+  };
+  getFirstBrowserLanguage.displayName = 'angular-translate/service: getFirstBrowserLanguage';
+
+  // tries to determine the browsers locale
+  var getLocale = function () {
+    var locale = getFirstBrowserLanguage() || '';
+    if (languageTagResolver[uniformLanguageTagResolver]) {
+      locale = languageTagResolver[uniformLanguageTagResolver](locale);
+    }
+    return locale;
+  };
+  getLocale.displayName = 'angular-translate/service: getLocale';
+
+  /**
+   * @name indexOf
+   * @private
+   *
+   * @description
+   * indexOf polyfill. Kinda sorta.
+   *
+   * @param {array} array Array to search in.
+   * @param {string} searchElement Element to search for.
+   *
+   * @returns {int} Index of search element.
+   */
+  var indexOf = function (array, searchElement) {
+    for (var i = 0, len = array.length; i < len; i++) {
+      if (array[i] === searchElement) {
+        return i;
+      }
+    }
+    return -1;
+  };
+
+  /**
+   * @name trim
+   * @private
+   *
+   * @description
+   * trim polyfill
+   *
+   * @returns {string} The string stripped of whitespace from both ends
+   */
+  var trim = function () {
+    return this.toString().replace(/^\s+|\s+$/g, '');
+  };
+
+  var negotiateLocale = function (preferred) {
+    if (!preferred) {
+      return;
+    }
+
+    var avail = [],
+      locale = angular.lowercase(preferred),
+      i = 0,
+      n = $availableLanguageKeys.length;
+
+    for (; i < n; i++) {
+      avail.push(angular.lowercase($availableLanguageKeys[i]));
+    }
+
+    // Check for an exact match in our list of available keys
+    if (indexOf(avail, locale) > -1) {
+      return preferred;
+    }
+
+    if ($languageKeyAliases) {
+      var alias;
+      for (var langKeyAlias in $languageKeyAliases) {
+        if ($languageKeyAliases.hasOwnProperty(langKeyAlias)) {
+          var hasWildcardKey = false;
+          var hasExactKey = Object.prototype.hasOwnProperty.call($languageKeyAliases, langKeyAlias) &&
+            angular.lowercase(langKeyAlias) === angular.lowercase(preferred);
+
+          if (langKeyAlias.slice(-1) === '*') {
+            hasWildcardKey = langKeyAlias.slice(0, -1) === preferred.slice(0, langKeyAlias.length - 1);
+          }
+          if (hasExactKey || hasWildcardKey) {
+            alias = $languageKeyAliases[langKeyAlias];
+            if (indexOf(avail, angular.lowercase(alias)) > -1) {
+              return alias;
+            }
+          }
+        }
+      }
+    }
+
+    // Check for a language code without region
+    var parts = preferred.split('_');
+
+    if (parts.length > 1 && indexOf(avail, angular.lowercase(parts[0])) > -1) {
+      return parts[0];
+    }
+
+    // If everything fails, return undefined.
+    return;
+  };
+
+  /**
+   * @ngdoc function
+   * @name pascalprecht.translate.$translateProvider#translations
+   * @methodOf pascalprecht.translate.$translateProvider
+   *
+   * @description
+   * Registers a new translation table for specific language key.
+   *
+   * To register a translation table for specific language, pass a defined language
+   * key as first parameter.
+   *
+   * <pre>
+   *  // register translation table for language: 'de_DE'
+   *  $translateProvider.translations('de_DE', {
+   *    'GREETING': 'Hallo Welt!'
+   *  });
+   *
+   *  // register another one
+   *  $translateProvider.translations('en_US', {
+   *    'GREETING': 'Hello world!'
+   *  });
+   * </pre>
+   *
+   * When registering multiple translation tables for for the same language key,
+   * the actual translation table gets extended. This allows you to define module
+   * specific translation which only get added, once a specific module is loaded in
+   * your app.
+   *
+   * Invoking this method with no arguments returns the translation table which was
+   * registered with no language key. Invoking it with a language key returns the
+   * related translation table.
+   *
+   * @param {string} langKey A language key.
+   * @param {object} translationTable A plain old JavaScript object that represents a translation table.
+   *
+   */
+  var translations = function (langKey, translationTable) {
+
+    if (!langKey && !translationTable) {
+      return $translationTable;
+    }
+
+    if (langKey && !translationTable) {
+      if (angular.isString(langKey)) {
+        return $translationTable[langKey];
+      }
+    } else {
+      if (!angular.isObject($translationTable[langKey])) {
+        $translationTable[langKey] = {};
+      }
+      angular.extend($translationTable[langKey], flatObject(translationTable));
+    }
+    return this;
+  };
+
+  this.translations = translations;
+
+  /**
+   * @ngdoc function
+   * @name pascalprecht.translate.$translateProvider#cloakClassName
+   * @methodOf pascalprecht.translate.$translateProvider
+   *
+   * @description
+   *
+   * Let's you change the class name for `translate-cloak` directive.
+   * Default class name is `translate-cloak`.
+   *
+   * @param {string} name translate-cloak class name
+   */
+  this.cloakClassName = function (name) {
+    if (!name) {
+      return $cloakClassName;
+    }
+    $cloakClassName = name;
+    return this;
+  };
+
+  /**
+   * @ngdoc function
+   * @name pascalprecht.translate.$translateProvider#nestedObjectDelimeter
+   * @methodOf pascalprecht.translate.$translateProvider
+   *
+   * @description
+   *
+   * Let's you change the delimiter for namespaced translations.
+   * Default delimiter is `.`.
+   *
+   * @param {string} delimiter namespace separator
+   */
+  this.nestedObjectDelimeter = function (delimiter) {
+    if (!delimiter) {
+      return $nestedObjectDelimeter;
+    }
+    $nestedObjectDelimeter = delimiter;
+    return this;
+  };
+
+  /**
+   * @name flatObject
+   * @private
+   *
+   * @description
+   * Flats an object. This function is used to flatten given translation data with
+   * namespaces, so they are later accessible via dot notation.
+   */
+  var flatObject = function (data, path, result, prevKey) {
+    var key, keyWithPath, keyWithShortPath, val;
+
+    if (!path) {
+      path = [];
+    }
+    if (!result) {
+      result = {};
+    }
+    for (key in data) {
+      if (!Object.prototype.hasOwnProperty.call(data, key)) {
+        continue;
+      }
+      val = data[key];
+      if (angular.isObject(val)) {
+        flatObject(val, path.concat(key), result, key);
+      } else {
+        keyWithPath = path.length ? ('' + path.join($nestedObjectDelimeter) + $nestedObjectDelimeter + key) : key;
+        if (path.length && key === prevKey) {
+          // Create shortcut path (foo.bar == foo.bar.bar)
+          keyWithShortPath = '' + path.join($nestedObjectDelimeter);
+          // Link it to original path
+          result[keyWithShortPath] = '@:' + keyWithPath;
+        }
+        result[keyWithPath] = val;
+      }
+    }
+    return result;
+  };
+  flatObject.displayName = 'flatObject';
+
+  /**
+   * @ngdoc function
+   * @name pascalprecht.translate.$translateProvider#addInterpolation
+   * @methodOf pascalprecht.translate.$translateProvider
+   *
+   * @description
+   * Adds interpolation services to angular-translate, so it can manage them.
+   *
+   * @param {object} factory Interpolation service factory
+   */
+  this.addInterpolation = function (factory) {
+    $interpolatorFactories.push(factory);
+    return this;
+  };
+
+  /**
+   * @ngdoc function
+   * @name pascalprecht.translate.$translateProvider#useMessageFormatInterpolation
+   * @methodOf pascalprecht.translate.$translateProvider
+   *
+   * @description
+   * Tells angular-translate to use interpolation functionality of messageformat.js.
+   * This is useful when having high level pluralization and gender selection.
+   */
+  this.useMessageFormatInterpolation = function () {
+    return this.useInterpolation('$translateMessageFormatInterpolation');
+  };
+
+  /**
+   * @ngdoc function
+   * @name pascalprecht.translate.$translateProvider#useInterpolation
+   * @methodOf pascalprecht.translate.$translateProvider
+   *
+   * @description
+   * Tells angular-translate which interpolation style to use as default, application-wide.
+   * Simply pass a factory/service name. The interpolation service has to implement
+   * the correct interface.
+   *
+   * @param {string} factory Interpolation service name.
+   */
+  this.useInterpolation = function (factory) {
+    $interpolationFactory = factory;
+    return this;
+  };
+
+  /**
+   * @ngdoc function
+   * @name pascalprecht.translate.$translateProvider#useSanitizeStrategy
+   * @methodOf pascalprecht.translate.$translateProvider
+   *
+   * @description
+   * Simply sets a sanitation strategy type.
+   *
+   * @param {string} value Strategy type.
+   */
+  this.useSanitizeValueStrategy = function (value) {
+    $translateSanitizationProvider.useStrategy(value);
+    return this;
+  };
+
+  /**
+   * @ngdoc function
+   * @name pascalprecht.translate.$translateProvider#preferredLanguage
+   * @methodOf pascalprecht.translate.$translateProvider
+   *
+   * @description
+   * Tells the module which of the registered translation tables to use for translation
+   * at initial startup by passing a language key. Similar to `$translateProvider#use`
+   * only that it says which language to **prefer**.
+   *
+   * @param {string} langKey A language key.
+   */
+  this.preferredLanguage = function (langKey) {
+    if (langKey) {
+      setupPreferredLanguage(langKey);
+      return this;
+    }
+    return $preferredLanguage;
+  };
+  var setupPreferredLanguage = function (langKey) {
+    if (langKey) {
+      $preferredLanguage = langKey;
+    }
+    return $preferredLanguage;
+  };
+  /**
+   * @ngdoc function
+   * @name pascalprecht.translate.$translateProvider#translationNotFoundIndicator
+   * @methodOf pascalprecht.translate.$translateProvider
+   *
+   * @description
+   * Sets an indicator which is used when a translation isn't found. E.g. when
+   * setting the indicator as 'X' and one tries to translate a translation id
+   * called `NOT_FOUND`, this will result in `X NOT_FOUND X`.
+   *
+   * Internally this methods sets a left indicator and a right indicator using
+   * `$translateProvider.translationNotFoundIndicatorLeft()` and
+   * `$translateProvider.translationNotFoundIndicatorRight()`.
+   *
+   * **Note**: These methods automatically add a whitespace between the indicators
+   * and the translation id.
+   *
+   * @param {string} indicator An indicator, could be any string.
+   */
+  this.translationNotFoundIndicator = function (indicator) {
+    this.translationNotFoundIndicatorLeft(indicator);
+    this.translationNotFoundIndicatorRight(indicator);
+    return this;
+  };
+
+  /**
+   * ngdoc function
+   * @name pascalprecht.translate.$translateProvider#translationNotFoundIndicatorLeft
+   * @methodOf pascalprecht.translate.$translateProvider
+   *
+   * @description
+   * Sets an indicator which is used when a translation isn't found left to the
+   * translation id.
+   *
+   * @param {string} indicator An indicator.
+   */
+  this.translationNotFoundIndicatorLeft = function (indicator) {
+    if (!indicator) {
+      return $notFoundIndicatorLeft;
+    }
+    $notFoundIndicatorLeft = indicator;
+    return this;
+  };
+
+  /**
+   * ngdoc function
+   * @name pascalprecht.translate.$translateProvider#translationNotFoundIndicatorLeft
+   * @methodOf pascalprecht.translate.$translateProvider
+   *
+   * @description
+   * Sets an indicator which is used when a translation isn't found right to the
+   * translation id.
+   *
+   * @param {string} indicator An indicator.
+   */
+  this.translationNotFoundIndicatorRight = function (indicator) {
+    if (!indicator) {
+      return $notFoundIndicatorRight;
+    }
+    $notFoundIndicatorRight = indicator;
+    return this;
+  };
+
+  /**
+   * @ngdoc function
+   * @name pascalprecht.translate.$translateProvider#fallbackLanguage
+   * @methodOf pascalprecht.translate.$translateProvider
+   *
+   * @description
+   * Tells the module which of the registered translation tables to use when missing translations
+   * at initial startup by passing a language key. Similar to `$translateProvider#use`
+   * only that it says which language to **fallback**.
+   *
+   * @param {string||array} langKey A language key.
+   *
+   */
+  this.fallbackLanguage = function (langKey) {
+    fallbackStack(langKey);
+    return this;
+  };
+
+  var fallbackStack = function (langKey) {
+    if (langKey) {
+      if (angular.isString(langKey)) {
+        $fallbackWasString = true;
+        $fallbackLanguage = [langKey];
+      } else if (angular.isArray(langKey)) {
+        $fallbackWasString = false;
+        $fallbackLanguage = langKey;
+      }
+      if (angular.isString($preferredLanguage) && indexOf($fallbackLanguage, $preferredLanguage) < 0) {
+        $fallbackLanguage.push($preferredLanguage);
+      }
+
+      return this;
+    } else {
+      if ($fallbackWasString) {
+        return $fallbackLanguage[0];
+      } else {
+        return $fallbackLanguage;
+      }
+    }
+  };
+
+  /**
+   * @ngdoc function
+   * @name pascalprecht.translate.$translateProvider#use
+   * @methodOf pascalprecht.translate.$translateProvider
+   *
+   * @description
+   * Set which translation table to use for translation by given language key. When
+   * trying to 'use' a language which isn't provided, it'll throw an error.
+   *
+   * You actually don't have to use this method since `$translateProvider#preferredLanguage`
+   * does the job too.
+   *
+   * @param {string} langKey A language key.
+   */
+  this.use = function (langKey) {
+    if (langKey) {
+      if (!$translationTable[langKey] && (!$loaderFactory)) {
+        // only throw an error, when not loading translation data asynchronously
+        throw new Error('$translateProvider couldn\'t find translationTable for langKey: \'' + langKey + '\'');
+      }
+      $uses = langKey;
+      return this;
+    }
+    return $uses;
+  };
+
+  /**
+   * @ngdoc function
+   * @name pascalprecht.translate.$translateProvider#resolveClientLocale
+   * @methodOf pascalprecht.translate.$translateProvider
+   *
+   * @description
+   * This returns the current browser/client's language key. The result is processed with the configured uniform tag resolver.
+   *
+   * @returns {string} the current client/browser language key
+   */
+  this.resolveClientLocale = function () {
+    return getLocale();
+  };
+
+  /**
+   * @ngdoc function
+   * @name pascalprecht.translate.$translateProvider#storageKey
+   * @methodOf pascalprecht.translate.$translateProvider
+   *
+   * @description
+   * Tells the module which key must represent the choosed language by a user in the storage.
+   *
+   * @param {string} key A key for the storage.
+   */
+  var storageKey = function (key) {
+    if (!key) {
+      if ($storagePrefix) {
+        return $storagePrefix + $storageKey;
+      }
+      return $storageKey;
+    }
+    $storageKey = key;
+    return this;
+  };
+
+  this.storageKey = storageKey;
+
+  /**
+   * @ngdoc function
+   * @name pascalprecht.translate.$translateProvider#useUrlLoader
+   * @methodOf pascalprecht.translate.$translateProvider
+   *
+   * @description
+   * Tells angular-translate to use `$translateUrlLoader` extension service as loader.
+   *
+   * @param {string} url Url
+   * @param {Object=} options Optional configuration object
+   */
+  this.useUrlLoader = function (url, options) {
+    return this.useLoader('$translateUrlLoader', angular.extend({url : url}, options));
+  };
+
+  /**
+   * @ngdoc function
+   * @name pascalprecht.translate.$translateProvider#useStaticFilesLoader
+   * @methodOf pascalprecht.translate.$translateProvider
+   *
+   * @description
+   * Tells angular-translate to use `$translateStaticFilesLoader` extension service as loader.
+   *
+   * @param {Object=} options Optional configuration object
+   */
+  this.useStaticFilesLoader = function (options) {
+    return this.useLoader('$translateStaticFilesLoader', options);
+  };
+
+  /**
+   * @ngdoc function
+   * @name pascalprecht.translate.$translateProvider#useLoader
+   * @methodOf pascalprecht.translate.$translateProvider
+   *
+   * @description
+   * Tells angular-translate to use any other service as loader.
+   *
+   * @param {string} loaderFactory Factory name to use
+   * @param {Object=} options Optional configuration object
+   */
+  this.useLoader = function (loaderFactory, options) {
+    $loaderFactory = loaderFactory;
+    $loaderOptions = options || {};
+    return this;
+  };
+
+  /**
+   * @ngdoc function
+   * @name pascalprecht.translate.$translateProvider#useLocalStorage
+   * @methodOf pascalprecht.translate.$translateProvider
+   *
+   * @description
+   * Tells angular-translate to use `$translateLocalStorage` service as storage layer.
+   *
+   */
+  this.useLocalStorage = function () {
+    return this.useStorage('$translateLocalStorage');
+  };
+
+  /**
+   * @ngdoc function
+   * @name pascalprecht.translate.$translateProvider#useCookieStorage
+   * @methodOf pascalprecht.translate.$translateProvider
+   *
+   * @description
+   * Tells angular-translate to use `$translateCookieStorage` service as storage layer.
+   */
+  this.useCookieStorage = function () {
+    return this.useStorage('$translateCookieStorage');
+  };
+
+  /**
+   * @ngdoc function
+   * @name pascalprecht.translate.$translateProvider#useStorage
+   * @methodOf pascalprecht.translate.$translateProvider
+   *
+   * @description
+   * Tells angular-translate to use custom service as storage layer.
+   */
+  this.useStorage = function (storageFactory) {
+    $storageFactory = storageFactory;
+    return this;
+  };
+
+  /**
+   * @ngdoc function
+   * @name pascalprecht.translate.$translateProvider#storagePrefix
+   * @methodOf pascalprecht.translate.$translateProvider
+   *
+   * @description
+   * Sets prefix for storage key.
+   *
+   * @param {string} prefix Storage key prefix
+   */
+  this.storagePrefix = function (prefix) {
+    if (!prefix) {
+      return prefix;
+    }
+    $storagePrefix = prefix;
+    return this;
+  };
+
+  /**
+   * @ngdoc function
+   * @name pascalprecht.translate.$translateProvider#useMissingTranslationHandlerLog
+   * @methodOf pascalprecht.translate.$translateProvider
+   *
+   * @description
+   * Tells angular-translate to use built-in log handler when trying to translate
+   * a translation Id which doesn't exist.
+   *
+   * This is actually a shortcut method for `useMissingTranslationHandler()`.
+   *
+   */
+  this.useMissingTranslationHandlerLog = function () {
+    return this.useMissingTranslationHandler('$translateMissingTranslationHandlerLog');
+  };
+
+  /**
+   * @ngdoc function
+   * @name pascalprecht.translate.$translateProvider#useMissingTranslationHandler
+   * @methodOf pascalprecht.translate.$translateProvider
+   *
+   * @description
+   * Expects a factory name which later gets instantiated with `$injector`.
+   * This method can be used to tell angular-translate to use a custom
+   * missingTranslationHandler. Just build a factory which returns a function
+   * and expects a translation id as argument.
+   *
+   * Example:
+   * <pre>
+   *  app.config(function ($translateProvider) {
+   *    $translateProvider.useMissingTranslationHandler('customHandler');
+   *  });
+   *
+   *  app.factory('customHandler', function (dep1, dep2) {
+   *    return function (translationId) {
+   *      // something with translationId and dep1 and dep2
+   *    };
+   *  });
+   * </pre>
+   *
+   * @param {string} factory Factory name
+   */
+  this.useMissingTranslationHandler = function (factory) {
+    $missingTranslationHandlerFactory = factory;
+    return this;
+  };
+
+  /**
+   * @ngdoc function
+   * @name pascalprecht.translate.$translateProvider#usePostCompiling
+   * @methodOf pascalprecht.translate.$translateProvider
+   *
+   * @description
+   * If post compiling is enabled, all translated values will be processed
+   * again with AngularJS' $compile.
+   *
+   * Example:
+   * <pre>
+   *  app.config(function ($translateProvider) {
+   *    $translateProvider.usePostCompiling(true);
+   *  });
+   * </pre>
+   *
+   * @param {string} factory Factory name
+   */
+  this.usePostCompiling = function (value) {
+    $postCompilingEnabled = !(!value);
+    return this;
+  };
+
+  /**
+   * @ngdoc function
+   * @name pascalprecht.translate.$translateProvider#forceAsyncReload
+   * @methodOf pascalprecht.translate.$translateProvider
+   *
+   * @description
+   * If force async reload is enabled, async loader will always be called
+   * even if $translationTable already contains the language key, adding
+   * possible new entries to the $translationTable.
+   *
+   * Example:
+   * <pre>
+   *  app.config(function ($translateProvider) {
+   *    $translateProvider.forceAsyncReload(true);
+   *  });
+   * </pre>
+   *
+   * @param {boolean} value - valid values are true or false
+   */
+  this.forceAsyncReload = function (value) {
+    $forceAsyncReloadEnabled = !(!value);
+    return this;
+  };
+
+  /**
+   * @ngdoc function
+   * @name pascalprecht.translate.$translateProvider#uniformLanguageTag
+   * @methodOf pascalprecht.translate.$translateProvider
+   *
+   * @description
+   * Tells angular-translate which language tag should be used as a result when determining
+   * the current browser language.
+   *
+   * This setting must be set before invoking {@link pascalprecht.translate.$translateProvider#methods_determinePreferredLanguage determinePreferredLanguage()}.
+   *
+   * <pre>
+   * $translateProvider
+   *   .uniformLanguageTag('bcp47')
+   *   .determinePreferredLanguage()
+   * </pre>
+   *
+   * The resolver currently supports:
+   * * default
+   *     (traditionally: hyphens will be converted into underscores, i.e. en-US => en_US)
+   *     en-US => en_US
+   *     en_US => en_US
+   *     en-us => en_us
+   * * java
+   *     like default, but the second part will be always in uppercase
+   *     en-US => en_US
+   *     en_US => en_US
+   *     en-us => en_US
+   * * BCP 47 (RFC 4646 & 4647)
+   *     en-US => en-US
+   *     en_US => en-US
+   *     en-us => en-US
+   *
+   * See also:
+   * * http://en.wikipedia.org/wiki/IETF_language_tag
+   * * http://www.w3.org/International/core/langtags/
+   * * http://tools.ietf.org/html/bcp47
+   *
+   * @param {string|object} options - options (or standard)
+   * @param {string} options.standard - valid values are 'default', 'bcp47', 'java'
+   */
+  this.uniformLanguageTag = function (options) {
+
+    if (!options) {
+      options = {};
+    } else if (angular.isString(options)) {
+      options = {
+        standard : options
+      };
+    }
+
+    uniformLanguageTagResolver = options.standard;
+
+    return this;
+  };
+
+  /**
+   * @ngdoc function
+   * @name pascalprecht.translate.$translateProvider#determinePreferredLanguage
+   * @methodOf pascalprecht.translate.$translateProvider
+   *
+   * @description
+   * Tells angular-translate to try to determine on its own which language key
+   * to set as preferred language. When `fn` is given, angular-translate uses it
+   * to determine a language key, otherwise it uses the built-in `getLocale()`
+   * method.
+   *
+   * The `getLocale()` returns a language key in the format `[lang]_[country]` or
+   * `[lang]` depending on what the browser provides.
+   *
+   * Use this method at your own risk, since not all browsers return a valid
+   * locale (see {@link pascalprecht.translate.$translateProvider#methods_uniformLanguageTag uniformLanguageTag()}).
+   *
+   * @param {Function=} fn Function to determine a browser's locale
+   */
+  this.determinePreferredLanguage = function (fn) {
+
+    var locale = (fn && angular.isFunction(fn)) ? fn() : getLocale();
+
+    if (!$availableLanguageKeys.length) {
+      $preferredLanguage = locale;
+    } else {
+      $preferredLanguage = negotiateLocale(locale) || locale;
+    }
+
+    return this;
+  };
+
+  /**
+   * @ngdoc function
+   * @name pascalprecht.translate.$translateProvider#registerAvailableLanguageKeys
+   * @methodOf pascalprecht.translate.$translateProvider
+   *
+   * @description
+   * Registers a set of language keys the app will work with. Use this method in
+   * combination with
+   * {@link pascalprecht.translate.$translateProvider#determinePreferredLanguage determinePreferredLanguage}.
+   * When available languages keys are registered, angular-translate
+   * tries to find the best fitting language key depending on the browsers locale,
+   * considering your language key convention.
+   *
+   * @param {object} languageKeys Array of language keys the your app will use
+   * @param {object=} aliases Alias map.
+   */
+  this.registerAvailableLanguageKeys = function (languageKeys, aliases) {
+    if (languageKeys) {
+      $availableLanguageKeys = languageKeys;
+      if (aliases) {
+        $languageKeyAliases = aliases;
+      }
+      return this;
+    }
+    return $availableLanguageKeys;
+  };
+
+  /**
+   * @ngdoc function
+   * @name pascalprecht.translate.$translateProvider#useLoaderCache
+   * @methodOf pascalprecht.translate.$translateProvider
+   *
+   * @description
+   * Registers a cache for internal $http based loaders.
+   * {@link pascalprecht.translate.$translationCache $translationCache}.
+   * When false the cache will be disabled (default). When true or undefined
+   * the cache will be a default (see $cacheFactory). When an object it will
+   * be treat as a cache object itself: the usage is $http({cache: cache})
+   *
+   * @param {object} cache boolean, string or cache-object
+   */
+  this.useLoaderCache = function (cache) {
+    if (cache === false) {
+      // disable cache
+      loaderCache = undefined;
+    } else if (cache === true) {
+      // enable cache using AJS defaults
+      loaderCache = true;
+    } else if (typeof(cache) === 'undefined') {
+      // enable cache using default
+      loaderCache = '$translationCache';
+    } else if (cache) {
+      // enable cache using given one (see $cacheFactory)
+      loaderCache = cache;
+    }
+    return this;
+  };
+
+  /**
+   * @ngdoc function
+   * @name pascalprecht.translate.$translateProvider#directivePriority
+   * @methodOf pascalprecht.translate.$translateProvider
+   *
+   * @description
+   * Sets the default priority of the translate directive. The standard value is `0`.
+   * Calling this function without an argument will return the current value.
+   *
+   * @param {number} priority for the translate-directive
+   */
+  this.directivePriority = function (priority) {
+    if (priority === undefined) {
+      // getter
+      return directivePriority;
+    } else {
+      // setter with chaining
+      directivePriority = priority;
+      return this;
+    }
+  };
+
+  /**
+   * @ngdoc function
+   * @name pascalprecht.translate.$translateProvider#statefulFilter
+   * @methodOf pascalprecht.translate.$translateProvider
+   *
+   * @description
+   * Since AngularJS 1.3, filters which are not stateless (depending at the scope)
+   * have to explicit define this behavior.
+   * Sets whether the translate filter should be stateful or stateless. The standard value is `true`
+   * meaning being stateful.
+   * Calling this function without an argument will return the current value.
+   *
+   * @param {boolean} state - defines the state of the filter
+   */
+  this.statefulFilter = function (state) {
+    if (state === undefined) {
+      // getter
+      return statefulFilter;
+    } else {
+      // setter with chaining
+      statefulFilter = state;
+      return this;
+    }
+  };
+
+  /**
+   * @ngdoc function
+   * @name pascalprecht.translate.$translateProvider#postProcess
+   * @methodOf pascalprecht.translate.$translateProvider
+   *
+   * @description
+   * The post processor will be intercept right after the translation result. It can modify the result.
+   *
+   * @param {object} fn Function or service name (string) to be called after the translation value has been set / resolved. The function itself will enrich every value being processed and then continue the normal resolver process
+   */
+  this.postProcess = function (fn) {
+    if (fn) {
+      postProcessFn = fn;
+    } else {
+      postProcessFn = undefined;
+    }
+    return this;
+  };
+
+  /**
+   * @ngdoc function
+   * @name pascalprecht.translate.$translateProvider#keepContent
+   * @methodOf pascalprecht.translate.$translateProvider
+   *
+   * @description
+   * If keepContent is set to true than translate directive will always use innerHTML
+   * as a default translation
+   *
+   * Example:
+   * <pre>
+   *  app.config(function ($translateProvider) {
+   *    $translateProvider.keepContent(true);
+   *  });
+   * </pre>
+   *
+   * @param {boolean} value - valid values are true or false
+   */
+  this.keepContent = function (value) {
+    $keepContent = !(!value);
+    return this;
+  };
+
+  /**
+   * @ngdoc object
+   * @name pascalprecht.translate.$translate
+   * @requires $interpolate
+   * @requires $log
+   * @requires $rootScope
+   * @requires $q
+   *
+   * @description
+   * The `$translate` service is the actual core of angular-translate. It expects a translation id
+   * and optional interpolate parameters to translate contents.
+   *
+   * <pre>
+   *  $translate('HEADLINE_TEXT').then(function (translation) {
+   *    $scope.translatedText = translation;
+   *  });
+   * </pre>
+   *
+   * @param {string|array} translationId A token which represents a translation id
+   *                                     This can be optionally an array of translation ids which
+   *                                     results that the function returns an object where each key
+   *                                     is the translation id and the value the translation.
+   * @param {object=} interpolateParams An object hash for dynamic values
+   * @param {string} interpolationId The id of the interpolation to use
+   * @param {string} defaultTranslationText the optional default translation text that is written as
+   *                                        as default text in case it is not found in any configured language
+   * @param {string} forceLanguage A language to be used instead of the current language
+   * @returns {object} promise
+   */
+  this.$get = ['$log', '$injector', '$rootScope', '$q', function ($log, $injector, $rootScope, $q) {
+
+    var Storage,
+      defaultInterpolator = $injector.get($interpolationFactory || '$translateDefaultInterpolation'),
+      pendingLoader = false,
+      interpolatorHashMap = {},
+      langPromises = {},
+      fallbackIndex,
+      startFallbackIteration;
+
+    var $translate = function (translationId, interpolateParams, interpolationId, defaultTranslationText, forceLanguage) {
+      if (!$uses && $preferredLanguage) {
+        $uses = $preferredLanguage;
+      }
+      var uses = (forceLanguage && forceLanguage !== $uses) ? // we don't want to re-negotiate $uses
+        (negotiateLocale(forceLanguage) || forceLanguage) : $uses;
+
+      // Check forceLanguage is present
+      if (forceLanguage) {
+        loadTranslationsIfMissing(forceLanguage);
+      }
+
+      // Duck detection: If the first argument is an array, a bunch of translations was requested.
+      // The result is an object.
+      if (angular.isArray(translationId)) {
+        // Inspired by Q.allSettled by Kris Kowal
+        // https://github.com/kriskowal/q/blob/b0fa72980717dc202ffc3cbf03b936e10ebbb9d7/q.js#L1553-1563
+        // This transforms all promises regardless resolved or rejected
+        var translateAll = function (translationIds) {
+          var results = {}; // storing the actual results
+          var promises = []; // promises to wait for
+          // Wraps the promise a) being always resolved and b) storing the link id->value
+          var translate = function (translationId) {
+            var deferred = $q.defer();
+            var regardless = function (value) {
+              results[translationId] = value;
+              deferred.resolve([translationId, value]);
+            };
+            // we don't care whether the promise was resolved or rejected; just store the values
+            $translate(translationId, interpolateParams, interpolationId, defaultTranslationText, forceLanguage).then(regardless, regardless);
+            return deferred.promise;
+          };
+          for (var i = 0, c = translationIds.length; i < c; i++) {
+            promises.push(translate(translationIds[i]));
+          }
+          // wait for all (including storing to results)
+          return $q.all(promises).then(function () {
+            // return the results
+            return results;
+          });
+        };
+        return translateAll(translationId);
+      }
+
+      var deferred = $q.defer();
+
+      // trim off any whitespace
+      if (translationId) {
+        translationId = trim.apply(translationId);
+      }
+
+      var promiseToWaitFor = (function () {
+        var promise = $preferredLanguage ?
+          langPromises[$preferredLanguage] :
+          langPromises[uses];
+
+        fallbackIndex = 0;
+
+        if ($storageFactory && !promise) {
+          // looks like there's no pending promise for $preferredLanguage or
+          // $uses. Maybe there's one pending for a language that comes from
+          // storage.
+          var langKey = Storage.get($storageKey);
+          promise = langPromises[langKey];
+
+          if ($fallbackLanguage && $fallbackLanguage.length) {
+            var index = indexOf($fallbackLanguage, langKey);
+            // maybe the language from storage is also defined as fallback language
+            // we increase the fallback language index to not search in that language
+            // as fallback, since it's probably the first used language
+            // in that case the index starts after the first element
+            fallbackIndex = (index === 0) ? 1 : 0;
+
+            // but we can make sure to ALWAYS fallback to preferred language at least
+            if (indexOf($fallbackLanguage, $preferredLanguage) < 0) {
+              $fallbackLanguage.push($preferredLanguage);
+            }
+          }
+        }
+        return promise;
+      }());
+
+      if (!promiseToWaitFor) {
+        // no promise to wait for? okay. Then there's no loader registered
+        // nor is a one pending for language that comes from storage.
+        // We can just translate.
+        determineTranslation(translationId, interpolateParams, interpolationId, defaultTranslationText, uses).then(deferred.resolve, deferred.reject);
+      } else {
+        var promiseResolved = function () {
+          // $uses may have changed while waiting
+          if (!forceLanguage) {
+            uses = $uses;
+          }
+          determineTranslation(translationId, interpolateParams, interpolationId, defaultTranslationText, uses).then(deferred.resolve, deferred.reject);
+        };
+        promiseResolved.displayName = 'promiseResolved';
+
+        promiseToWaitFor['finally'](promiseResolved);
+      }
+      return deferred.promise;
+    };
+
+    /**
+     * @name applyNotFoundIndicators
+     * @private
+     *
+     * @description
+     * Applies not fount indicators to given translation id, if needed.
+     * This function gets only executed, if a translation id doesn't exist,
+     * which is why a translation id is expected as argument.
+     *
+     * @param {string} translationId Translation id.
+     * @returns {string} Same as given translation id but applied with not found
+     * indicators.
+     */
+    var applyNotFoundIndicators = function (translationId) {
+      // applying notFoundIndicators
+      if ($notFoundIndicatorLeft) {
+        translationId = [$notFoundIndicatorLeft, translationId].join(' ');
+      }
+      if ($notFoundIndicatorRight) {
+        translationId = [translationId, $notFoundIndicatorRight].join(' ');
+      }
+      return translationId;
+    };
+
+    /**
+     * @name useLanguage
+     * @private
+     *
+     * @description
+     * Makes actual use of a language by setting a given language key as used
+     * language and informs registered interpolators to also use the given
+     * key as locale.
+     *
+     * @param {string} key Locale key.
+     */
+    var useLanguage = function (key) {
+      $uses = key;
+
+      // make sure to store new language key before triggering success event
+      if ($storageFactory) {
+        Storage.put($translate.storageKey(), $uses);
+      }
+
+      $rootScope.$emit('$translateChangeSuccess', {language : key});
+
+      // inform default interpolator
+      defaultInterpolator.setLocale($uses);
+
+      var eachInterpolator = function (interpolator, id) {
+        interpolatorHashMap[id].setLocale($uses);
+      };
+      eachInterpolator.displayName = 'eachInterpolatorLocaleSetter';
+
+      // inform all others too!
+      angular.forEach(interpolatorHashMap, eachInterpolator);
+      $rootScope.$emit('$translateChangeEnd', {language : key});
+    };
+
+    /**
+     * @name loadAsync
+     * @private
+     *
+     * @description
+     * Kicks of registered async loader using `$injector` and applies existing
+     * loader options. When resolved, it updates translation tables accordingly
+     * or rejects with given language key.
+     *
+     * @param {string} key Language key.
+     * @return {Promise} A promise.
+     */
+    var loadAsync = function (key) {
+      if (!key) {
+        throw 'No language key specified for loading.';
+      }
+
+      var deferred = $q.defer();
+
+      $rootScope.$emit('$translateLoadingStart', {language : key});
+      pendingLoader = true;
+
+      var cache = loaderCache;
+      if (typeof(cache) === 'string') {
+        // getting on-demand instance of loader
+        cache = $injector.get(cache);
+      }
+
+      var loaderOptions = angular.extend({}, $loaderOptions, {
+        key : key,
+        $http : angular.extend({}, {
+          cache : cache
+        }, $loaderOptions.$http)
+      });
+
+      var onLoaderSuccess = function (data) {
+        var translationTable = {};
+        $rootScope.$emit('$translateLoadingSuccess', {language : key});
+
+        if (angular.isArray(data)) {
+          angular.forEach(data, function (table) {
+            angular.extend(translationTable, flatObject(table));
+          });
+        } else {
+          angular.extend(translationTable, flatObject(data));
+        }
+        pendingLoader = false;
+        deferred.resolve({
+          key : key,
+          table : translationTable
+        });
+        $rootScope.$emit('$translateLoadingEnd', {language : key});
+      };
+      onLoaderSuccess.displayName = 'onLoaderSuccess';
+
+      var onLoaderError = function (key) {
+        $rootScope.$emit('$translateLoadingError', {language : key});
+        deferred.reject(key);
+        $rootScope.$emit('$translateLoadingEnd', {language : key});
+      };
+      onLoaderError.displayName = 'onLoaderError';
+
+      $injector.get($loaderFactory)(loaderOptions)
+        .then(onLoaderSuccess, onLoaderError);
+
+      return deferred.promise;
+    };
+
+    if ($storageFactory) {
+      Storage = $injector.get($storageFactory);
+
+      if (!Storage.get || !Storage.put) {
+        throw new Error('Couldn\'t use storage \'' + $storageFactory + '\', missing get() or put() method!');
+      }
+    }
+
+    // if we have additional interpolations that were added via
+    // $translateProvider.addInterpolation(), we have to map'em
+    if ($interpolatorFactories.length) {
+      var eachInterpolationFactory = function (interpolatorFactory) {
+        var interpolator = $injector.get(interpolatorFactory);
+        // setting initial locale for each interpolation service
+        interpolator.setLocale($preferredLanguage || $uses);
+        // make'em recognizable through id
+        interpolatorHashMap[interpolator.getInterpolationIdentifier()] = interpolator;
+      };
+      eachInterpolationFactory.displayName = 'interpolationFactoryAdder';
+
+      angular.forEach($interpolatorFactories, eachInterpolationFactory);
+    }
+
+    /**
+     * @name getTranslationTable
+     * @private
+     *
+     * @description
+     * Returns a promise that resolves to the translation table
+     * or is rejected if an error occurred.
+     *
+     * @param langKey
+     * @returns {Q.promise}
+     */
+    var getTranslationTable = function (langKey) {
+      var deferred = $q.defer();
+      if (Object.prototype.hasOwnProperty.call($translationTable, langKey)) {
+        deferred.resolve($translationTable[langKey]);
+      } else if (langPromises[langKey]) {
+        var onResolve = function (data) {
+          translations(data.key, data.table);
+          deferred.resolve(data.table);
+        };
+        onResolve.displayName = 'translationTableResolver';
+        langPromises[langKey].then(onResolve, deferred.reject);
+      } else {
+        deferred.reject();
+      }
+      return deferred.promise;
+    };
+
+    /**
+     * @name getFallbackTranslation
+     * @private
+     *
+     * @description
+     * Returns a promise that will resolve to the translation
+     * or be rejected if no translation was found for the language.
+     * This function is currently only used for fallback language translation.
+     *
+     * @param langKey The language to translate to.
+     * @param translationId
+     * @param interpolateParams
+     * @param Interpolator
+     * @returns {Q.promise}
+     */
+    var getFallbackTranslation = function (langKey, translationId, interpolateParams, Interpolator) {
+      var deferred = $q.defer();
+
+      var onResolve = function (translationTable) {
+        if (Object.prototype.hasOwnProperty.call(translationTable, translationId)) {
+          Interpolator.setLocale(langKey);
+          var translation = translationTable[translationId];
+          if (translation.substr(0, 2) === '@:') {
+            getFallbackTranslation(langKey, translation.substr(2), interpolateParams, Interpolator)
+              .then(deferred.resolve, deferred.reject);
+          } else {
+            var interpolatedValue = Interpolator.interpolate(translationTable[translationId], interpolateParams, 'service');
+            interpolatedValue = applyPostProcessing(translationId, translationTable[translationId], interpolatedValue, interpolateParams, langKey);
+
+            deferred.resolve(interpolatedValue);
+
+          }
+          Interpolator.setLocale($uses);
+        } else {
+          deferred.reject();
+        }
+      };
+      onResolve.displayName = 'fallbackTranslationResolver';
+
+      getTranslationTable(langKey).then(onResolve, deferred.reject);
+
+      return deferred.promise;
+    };
+
+    /**
+     * @name getFallbackTranslationInstant
+     * @private
+     *
+     * @description
+     * Returns a translation
+     * This function is currently only used for fallback language translation.
+     *
+     * @param langKey The language to translate to.
+     * @param translationId
+     * @param interpolateParams
+     * @param Interpolator
+     * @param sanitizeStrategy sanitize strategy override
+     *
+     * @returns {string} translation
+     */
+    var getFallbackTranslationInstant = function (langKey, translationId, interpolateParams, Interpolator, sanitizeStrategy) {
+      var result, translationTable = $translationTable[langKey];
+
+      if (translationTable && Object.prototype.hasOwnProperty.call(translationTable, translationId)) {
+        Interpolator.setLocale(langKey);
+        result = Interpolator.interpolate(translationTable[translationId], interpolateParams, 'filter', sanitizeStrategy);
+        result = applyPostProcessing(translationId, translationTable[translationId], result, interpolateParams, langKey, sanitizeStrategy);
+        // workaround for TrustedValueHolderType
+        if (!angular.isString(result) && angular.isFunction(result.$$unwrapTrustedValue)) {
+          var result2 = result.$$unwrapTrustedValue();
+          if (result2.substr(0, 2) === '@:') {
+            return getFallbackTranslationInstant(langKey, result2.substr(2), interpolateParams, Interpolator, sanitizeStrategy);
+          }
+        } else if (result.substr(0, 2) === '@:') {
+          return getFallbackTranslationInstant(langKey, result.substr(2), interpolateParams, Interpolator, sanitizeStrategy);
+        }
+        Interpolator.setLocale($uses);
+      }
+
+      return result;
+    };
+
+
+    /**
+     * @name translateByHandler
+     * @private
+     *
+     * Translate by missing translation handler.
+     *
+     * @param translationId
+     * @param interpolateParams
+     * @param defaultTranslationText
+     * @param sanitizeStrategy sanitize strategy override
+     *
+     * @returns translation created by $missingTranslationHandler or translationId is $missingTranslationHandler is
+     * absent
+     */
+    var translateByHandler = function (translationId, interpolateParams, defaultTranslationText, sanitizeStrategy) {
+      // If we have a handler factory - we might also call it here to determine if it provides
+      // a default text for a translationid that can't be found anywhere in our tables
+      if ($missingTranslationHandlerFactory) {
+        return $injector.get($missingTranslationHandlerFactory)(translationId, $uses, interpolateParams, defaultTranslationText, sanitizeStrategy);
+      } else {
+        return translationId;
+      }
+    };
+
+    /**
+     * @name resolveForFallbackLanguage
+     * @private
+     *
+     * Recursive helper function for fallbackTranslation that will sequentially look
+     * for a translation in the fallbackLanguages starting with fallbackLanguageIndex.
+     *
+     * @param fallbackLanguageIndex
+     * @param translationId
+     * @param interpolateParams
+     * @param Interpolator
+     * @returns {Q.promise} Promise that will resolve to the translation.
+     */
+    var resolveForFallbackLanguage = function (fallbackLanguageIndex, translationId, interpolateParams, Interpolator, defaultTranslationText) {
+      var deferred = $q.defer();
+
+      if (fallbackLanguageIndex < $fallbackLanguage.length) {
+        var langKey = $fallbackLanguage[fallbackLanguageIndex];
+        getFallbackTranslation(langKey, translationId, interpolateParams, Interpolator).then(
+          function (data) {
+            deferred.resolve(data);
+          },
+          function () {
+            // Look in the next fallback language for a translation.
+            // It delays the resolving by passing another promise to resolve.
+            return resolveForFallbackLanguage(fallbackLanguageIndex + 1, translationId, interpolateParams, Interpolator, defaultTranslationText).then(deferred.resolve, deferred.reject);
+          }
+        );
+      } else {
+        // No translation found in any fallback language
+        // if a default translation text is set in the directive, then return this as a result
+        if (defaultTranslationText) {
+          deferred.resolve(defaultTranslationText);
+        } else {
+          var missingTranslationHandlerTranslation = translateByHandler(translationId, interpolateParams, defaultTranslationText);
+
+          // if no default translation is set and an error handler is defined, send it to the handler
+          // and then return the result if it isn't undefined
+          if ($missingTranslationHandlerFactory && missingTranslationHandlerTranslation) {
+            deferred.resolve(missingTranslationHandlerTranslation);
+          } else {
+            deferred.reject(applyNotFoundIndicators(translationId));
+          }
+        }
+      }
+      return deferred.promise;
+    };
+
+    /**
+     * @name resolveForFallbackLanguageInstant
+     * @private
+     *
+     * Recursive helper function for fallbackTranslation that will sequentially look
+     * for a translation in the fallbackLanguages starting with fallbackLanguageIndex.
+     *
+     * @param fallbackLanguageIndex
+     * @param translationId
+     * @param interpolateParams
+     * @param Interpolator
+     * @param sanitizeStrategy
+     * @returns {string} translation
+     */
+    var resolveForFallbackLanguageInstant = function (fallbackLanguageIndex, translationId, interpolateParams, Interpolator, sanitizeStrategy) {
+      var result;
+
+      if (fallbackLanguageIndex < $fallbackLanguage.length) {
+        var langKey = $fallbackLanguage[fallbackLanguageIndex];
+        result = getFallbackTranslationInstant(langKey, translationId, interpolateParams, Interpolator, sanitizeStrategy);
+        if (!result && result !== '') {
+          result = resolveForFallbackLanguageInstant(fallbackLanguageIndex + 1, translationId, interpolateParams, Interpolator);
+        }
+      }
+      return result;
+    };
+
+    /**
+     * Translates with the usage of the fallback languages.
+     *
+     * @param translationId
+     * @param interpolateParams
+     * @param Interpolator
+     * @returns {Q.promise} Promise, that resolves to the translation.
+     */
+    var fallbackTranslation = function (translationId, interpolateParams, Interpolator, defaultTranslationText) {
+      // Start with the fallbackLanguage with index 0
+      return resolveForFallbackLanguage((startFallbackIteration > 0 ? startFallbackIteration : fallbackIndex), translationId, interpolateParams, Interpolator, defaultTranslationText);
+    };
+
+    /**
+     * Translates with the usage of the fallback languages.
+     *
+     * @param translationId
+     * @param interpolateParams
+     * @param Interpolator
+     * @returns {String} translation
+     */
+    var fallbackTranslationInstant = function (translationId, interpolateParams, Interpolator, sanitizeStrategy) {
+      // Start with the fallbackLanguage with index 0
+      return resolveForFallbackLanguageInstant((startFallbackIteration > 0 ? startFallbackIteration : fallbackIndex), translationId, interpolateParams, Interpolator, sanitizeStrategy);
+    };
+
+    var determineTranslation = function (translationId, interpolateParams, interpolationId, defaultTranslationText, uses) {
+
+      var deferred = $q.defer();
+
+      var table = uses ? $translationTable[uses] : $translationTable,
+        Interpolator = (interpolationId) ? interpolatorHashMap[interpolationId] : defaultInterpolator;
+
+      // if the translation id exists, we can just interpolate it
+      if (table && Object.prototype.hasOwnProperty.call(table, translationId)) {
+        var translation = table[translationId];
+
+        // If using link, rerun $translate with linked translationId and return it
+        if (translation.substr(0, 2) === '@:') {
+
+          $translate(translation.substr(2), interpolateParams, interpolationId, defaultTranslationText, uses)
+            .then(deferred.resolve, deferred.reject);
+        } else {
+          //
+          var resolvedTranslation = Interpolator.interpolate(translation, interpolateParams, 'service');
+          resolvedTranslation = applyPostProcessing(translationId, translation, resolvedTranslation, interpolateParams, uses);
+          deferred.resolve(resolvedTranslation);
+        }
+      } else {
+        var missingTranslationHandlerTranslation;
+        // for logging purposes only (as in $translateMissingTranslationHandlerLog), value is not returned to promise
+        if ($missingTranslationHandlerFactory && !pendingLoader) {
+          missingTranslationHandlerTranslation = translateByHandler(translationId, interpolateParams, defaultTranslationText);
+        }
+
+        // since we couldn't translate the inital requested translation id,
+        // we try it now with one or more fallback languages, if fallback language(s) is
+        // configured.
+        if (uses && $fallbackLanguage && $fallbackLanguage.length) {
+          fallbackTranslation(translationId, interpolateParams, Interpolator, defaultTranslationText)
+            .then(function (translation) {
+              deferred.resolve(translation);
+            }, function (_translationId) {
+              deferred.reject(applyNotFoundIndicators(_translationId));
+            });
+        } else if ($missingTranslationHandlerFactory && !pendingLoader && missingTranslationHandlerTranslation) {
+          // looks like the requested translation id doesn't exists.
+          // Now, if there is a registered handler for missing translations and no
+          // asyncLoader is pending, we execute the handler
+          if (defaultTranslationText) {
+            deferred.resolve(defaultTranslationText);
+          } else {
+            deferred.resolve(missingTranslationHandlerTranslation);
+          }
+        } else {
+          if (defaultTranslationText) {
+            deferred.resolve(defaultTranslationText);
+          } else {
+            deferred.reject(applyNotFoundIndicators(translationId));
+          }
+        }
+      }
+      return deferred.promise;
+    };
+
+    var determineTranslationInstant = function (translationId, interpolateParams, interpolationId, uses, sanitizeStrategy) {
+
+      var result, table = uses ? $translationTable[uses] : $translationTable,
+        Interpolator = defaultInterpolator;
+
+      // if the interpolation id exists use custom interpolator
+      if (interpolatorHashMap && Object.prototype.hasOwnProperty.call(interpolatorHashMap, interpolationId)) {
+        Interpolator = interpolatorHashMap[interpolationId];
+      }
+
+      // if the translation id exists, we can just interpolate it
+      if (table && Object.prototype.hasOwnProperty.call(table, translationId)) {
+        var translation = table[translationId];
+
+        // If using link, rerun $translate with linked translationId and return it
+        if (translation.substr(0, 2) === '@:') {
+          result = determineTranslationInstant(translation.substr(2), interpolateParams, interpolationId, uses, sanitizeStrategy);
+        } else {
+          result = Interpolator.interpolate(translation, interpolateParams, 'filter', sanitizeStrategy);
+          result = applyPostProcessing(translationId, translation, result, interpolateParams, uses, sanitizeStrategy);
+        }
+      } else {
+        var missingTranslationHandlerTranslation;
+        // for logging purposes only (as in $translateMissingTranslationHandlerLog), value is not returned to promise
+        if ($missingTranslationHandlerFactory && !pendingLoader) {
+          missingTranslationHandlerTranslation = translateByHandler(translationId, interpolateParams, sanitizeStrategy);
+        }
+
+        // since we couldn't translate the inital requested translation id,
+        // we try it now with one or more fallback languages, if fallback language(s) is
+        // configured.
+        if (uses && $fallbackLanguage && $fallbackLanguage.length) {
+          fallbackIndex = 0;
+          result = fallbackTranslationInstant(translationId, interpolateParams, Interpolator, sanitizeStrategy);
+        } else if ($missingTranslationHandlerFactory && !pendingLoader && missingTranslationHandlerTranslation) {
+          // looks like the requested translation id doesn't exists.
+          // Now, if there is a registered handler for missing translations and no
+          // asyncLoader is pending, we execute the handler
+          result = missingTranslationHandlerTranslation;
+        } else {
+          result = applyNotFoundIndicators(translationId);
+        }
+      }
+
+      return result;
+    };
+
+    var clearNextLangAndPromise = function (key) {
+      if ($nextLang === key) {
+        $nextLang = undefined;
+      }
+      langPromises[key] = undefined;
+    };
+
+    var applyPostProcessing = function (translationId, translation, resolvedTranslation, interpolateParams, uses, sanitizeStrategy) {
+      var fn = postProcessFn;
+
+      if (fn) {
+
+        if (typeof(fn) === 'string') {
+          // getting on-demand instance
+          fn = $injector.get(fn);
+        }
+        if (fn) {
+          return fn(translationId, translation, resolvedTranslation, interpolateParams, uses, sanitizeStrategy);
+        }
+      }
+
+      return resolvedTranslation;
+    };
+
+    var loadTranslationsIfMissing = function (key) {
+      if (!$translationTable[key] && $loaderFactory && !langPromises[key]) {
+        langPromises[key] = loadAsync(key).then(function (translation) {
+          translations(translation.key, translation.table);
+          return translation;
+        });
+      }
+    };
+
+    /**
+     * @ngdoc function
+     * @name pascalprecht.translate.$translate#preferredLanguage
+     * @methodOf pascalprecht.translate.$translate
+     *
+     * @description
+     * Returns the language key for the preferred language.
+     *
+     * @param {string} langKey language String or Array to be used as preferredLanguage (changing at runtime)
+     *
+     * @return {string} preferred language key
+     */
+    $translate.preferredLanguage = function (langKey) {
+      if (langKey) {
+        setupPreferredLanguage(langKey);
+      }
+      return $preferredLanguage;
+    };
+
+    /**
+     * @ngdoc function
+     * @name pascalprecht.translate.$translate#cloakClassName
+     * @methodOf pascalprecht.translate.$translate
+     *
+     * @description
+     * Returns the configured class name for `translate-cloak` directive.
+     *
+     * @return {string} cloakClassName
+     */
+    $translate.cloakClassName = function () {
+      return $cloakClassName;
+    };
+
+    /**
+     * @ngdoc function
+     * @name pascalprecht.translate.$translate#nestedObjectDelimeter
+     * @methodOf pascalprecht.translate.$translate
+     *
+     * @description
+     * Returns the configured delimiter for nested namespaces.
+     *
+     * @return {string} nestedObjectDelimeter
+     */
+    $translate.nestedObjectDelimeter = function () {
+      return $nestedObjectDelimeter;
+    };
+
+    /**
+     * @ngdoc function
+     * @name pascalprecht.translate.$translate#fallbackLanguage
+     * @methodOf pascalprecht.translate.$translate
+     *
+     * @description
+     * Returns the language key for the fallback languages or sets a new fallback stack.
+     *
+     * @param {string=} langKey language String or Array of fallback languages to be used (to change stack at runtime)
+     *
+     * @return {string||array} fallback language key
+     */
+    $translate.fallbackLanguage = function (langKey) {
+      if (langKey !== undefined && langKey !== null) {
+        fallbackStack(langKey);
+
+        // as we might have an async loader initiated and a new translation language might have been defined
+        // we need to add the promise to the stack also. So - iterate.
+        if ($loaderFactory) {
+          if ($fallbackLanguage && $fallbackLanguage.length) {
+            for (var i = 0, len = $fallbackLanguage.length; i < len; i++) {
+              if (!langPromises[$fallbackLanguage[i]]) {
+                langPromises[$fallbackLanguage[i]] = loadAsync($fallbackLanguage[i]);
+              }
+            }
+          }
+        }
+        $translate.use($translate.use());
+      }
+      if ($fallbackWasString) {
+        return $fallbackLanguage[0];
+      } else {
+        return $fallbackLanguage;
+      }
+
+    };
+
+    /**
+     * @ngdoc function
+     * @name pascalprecht.translate.$translate#useFallbackLanguage
+     * @methodOf pascalprecht.translate.$translate
+     *
+     * @description
+     * Sets the first key of the fallback language stack to be used for translation.
+     * Therefore all languages in the fallback array BEFORE this key will be skipped!
+     *
+     * @param {string=} langKey Contains the langKey the iteration shall start with. Set to false if you want to
+     * get back to the whole stack
+     */
+    $translate.useFallbackLanguage = function (langKey) {
+      if (langKey !== undefined && langKey !== null) {
+        if (!langKey) {
+          startFallbackIteration = 0;
+        } else {
+          var langKeyPosition = indexOf($fallbackLanguage, langKey);
+          if (langKeyPosition > -1) {
+            startFallbackIteration = langKeyPosition;
+          }
+        }
+
+      }
+
+    };
+
+    /**
+     * @ngdoc function
+     * @name pascalprecht.translate.$translate#proposedLanguage
+     * @methodOf pascalprecht.translate.$translate
+     *
+     * @description
+     * Returns the language key of language that is currently loaded asynchronously.
+     *
+     * @return {string} language key
+     */
+    $translate.proposedLanguage = function () {
+      return $nextLang;
+    };
+
+    /**
+     * @ngdoc function
+     * @name pascalprecht.translate.$translate#storage
+     * @methodOf pascalprecht.translate.$translate
+     *
+     * @description
+     * Returns registered storage.
+     *
+     * @return {object} Storage
+     */
+    $translate.storage = function () {
+      return Storage;
+    };
+
+    /**
+     * @ngdoc function
+     * @name pascalprecht.translate.$translate#negotiateLocale
+     * @methodOf pascalprecht.translate.$translate
+     *
+     * @description
+     * Returns a language key based on available languages and language aliases. If a
+     * language key cannot be resolved, returns undefined.
+     *
+     * If no or a falsy key is given, returns undefined.
+     *
+     * @param {string} [key] Language key
+     * @return {string|undefined} Language key or undefined if no language key is found.
+     */
+    $translate.negotiateLocale = negotiateLocale;
+
+    /**
+     * @ngdoc function
+     * @name pascalprecht.translate.$translate#use
+     * @methodOf pascalprecht.translate.$translate
+     *
+     * @description
+     * Tells angular-translate which language to use by given language key. This method is
+     * used to change language at runtime. It also takes care of storing the language
+     * key in a configured store to let your app remember the choosed language.
+     *
+     * When trying to 'use' a language which isn't available it tries to load it
+     * asynchronously with registered loaders.
+     *
+     * Returns promise object with loaded language file data or string of the currently used language.
+     *
+     * If no or a falsy key is given it returns the currently used language key.
+     * The returned string will be ```undefined``` if setting up $translate hasn't finished.
+     * @example
+     * $translate.use("en_US").then(function(data){
+       *   $scope.text = $translate("HELLO");
+       * });
+     *
+     * @param {string} [key] Language key
+     * @return {object|string} Promise with loaded language data or the language key if a falsy param was given.
+     */
+    $translate.use = function (key) {
+      if (!key) {
+        return $uses;
+      }
+
+      var deferred = $q.defer();
+
+      $rootScope.$emit('$translateChangeStart', {language : key});
+
+      // Try to get the aliased language key
+      var aliasedKey = negotiateLocale(key);
+      // Ensure only registered language keys will be loaded
+      if ($availableLanguageKeys.length > 0 && !aliasedKey) {
+        return $q.reject(key);
+      }
+
+      if (aliasedKey) {
+        key = aliasedKey;
+      }
+
+      // if there isn't a translation table for the language we've requested,
+      // we load it asynchronously
+      $nextLang = key;
+      if (($forceAsyncReloadEnabled || !$translationTable[key]) && $loaderFactory && !langPromises[key]) {
+        langPromises[key] = loadAsync(key).then(function (translation) {
+          translations(translation.key, translation.table);
+          deferred.resolve(translation.key);
+          if ($nextLang === key) {
+            useLanguage(translation.key);
+          }
+          return translation;
+        }, function (key) {
+          $rootScope.$emit('$translateChangeError', {language : key});
+          deferred.reject(key);
+          $rootScope.$emit('$translateChangeEnd', {language : key});
+          return $q.reject(key);
+        });
+        langPromises[key]['finally'](function () {
+          clearNextLangAndPromise(key);
+        });
+      } else if (langPromises[key]) {
+        // we are already loading this asynchronously
+        // resolve our new deferred when the old langPromise is resolved
+        langPromises[key].then(function (translation) {
+          if ($nextLang === translation.key) {
+            useLanguage(translation.key);
+          }
+          deferred.resolve(translation.key);
+          return translation;
+        }, function (key) {
+          // find first available fallback language if that request has failed
+          if (!$uses && $fallbackLanguage && $fallbackLanguage.length > 0 && $fallbackLanguage[0] !== key) {
+            return $translate.use($fallbackLanguage[0]).then(deferred.resolve, deferred.reject);
+          } else {
+            return deferred.reject(key);
+          }
+        });
+      } else {
+        deferred.resolve(key);
+        useLanguage(key);
+      }
+
+      return deferred.promise;
+    };
+
+    /**
+     * @ngdoc function
+     * @name pascalprecht.translate.$translate#resolveClientLocale
+     * @methodOf pascalprecht.translate.$translate
+     *
+     * @description
+     * This returns the current browser/client's language key. The result is processed with the configured uniform tag resolver.
+     *
+     * @returns {string} the current client/browser language key
+     */
+    $translate.resolveClientLocale = function () {
+      return getLocale();
+    };
+
+    /**
+     * @ngdoc function
+     * @name pascalprecht.translate.$translate#storageKey
+     * @methodOf pascalprecht.translate.$translate
+     *
+     * @description
+     * Returns the key for the storage.
+     *
+     * @return {string} storage key
+     */
+    $translate.storageKey = function () {
+      return storageKey();
+    };
+
+    /**
+     * @ngdoc function
+     * @name pascalprecht.translate.$translate#isPostCompilingEnabled
+     * @methodOf pascalprecht.translate.$translate
+     *
+     * @description
+     * Returns whether post compiling is enabled or not
+     *
+     * @return {bool} storage key
+     */
+    $translate.isPostCompilingEnabled = function () {
+      return $postCompilingEnabled;
+    };
+
+    /**
+     * @ngdoc function
+     * @name pascalprecht.translate.$translate#isForceAsyncReloadEnabled
+     * @methodOf pascalprecht.translate.$translate
+     *
+     * @description
+     * Returns whether force async reload is enabled or not
+     *
+     * @return {boolean} forceAsyncReload value
+     */
+    $translate.isForceAsyncReloadEnabled = function () {
+      return $forceAsyncReloadEnabled;
+    };
+
+    /**
+     * @ngdoc function
+     * @name pascalprecht.translate.$translate#isKeepContent
+     * @methodOf pascalprecht.translate.$translate
+     *
+     * @description
+     * Returns whether keepContent or not
+     *
+     * @return {boolean} keepContent value
+     */
+    $translate.isKeepContent = function () {
+      return $keepContent;
+    };
+
+    /**
+     * @ngdoc function
+     * @name pascalprecht.translate.$translate#refresh
+     * @methodOf pascalprecht.translate.$translate
+     *
+     * @description
+     * Refreshes a translation table pointed by the given langKey. If langKey is not specified,
+     * the module will drop all existent translation tables and load new version of those which
+     * are currently in use.
+     *
+     * Refresh means that the module will drop target translation table and try to load it again.
+     *
+     * In case there are no loaders registered the refresh() method will throw an Error.
+     *
+     * If the module is able to refresh translation tables refresh() method will broadcast
+     * $translateRefreshStart and $translateRefreshEnd events.
+     *
+     * @example
+     * // this will drop all currently existent translation tables and reload those which are
+     * // currently in use
+     * $translate.refresh();
+     * // this will refresh a translation table for the en_US language
+     * $translate.refresh('en_US');
+     *
+     * @param {string} langKey A language key of the table, which has to be refreshed
+     *
+     * @return {promise} Promise, which will be resolved in case a translation tables refreshing
+     * process is finished successfully, and reject if not.
+     */
+    $translate.refresh = function (langKey) {
+      if (!$loaderFactory) {
+        throw new Error('Couldn\'t refresh translation table, no loader registered!');
+      }
+
+      var deferred = $q.defer();
+
+      function resolve() {
+        deferred.resolve();
+        $rootScope.$emit('$translateRefreshEnd', {language : langKey});
+      }
+
+      function reject() {
+        deferred.reject();
+        $rootScope.$emit('$translateRefreshEnd', {language : langKey});
+      }
+
+      $rootScope.$emit('$translateRefreshStart', {language : langKey});
+
+      if (!langKey) {
+        // if there's no language key specified we refresh ALL THE THINGS!
+        var tables = [], loadingKeys = {};
+
+        // reload registered fallback languages
+        if ($fallbackLanguage && $fallbackLanguage.length) {
+          for (var i = 0, len = $fallbackLanguage.length; i < len; i++) {
+            tables.push(loadAsync($fallbackLanguage[i]));
+            loadingKeys[$fallbackLanguage[i]] = true;
+          }
+        }
+
+        // reload currently used language
+        if ($uses && !loadingKeys[$uses]) {
+          tables.push(loadAsync($uses));
+        }
+
+        var allTranslationsLoaded = function (tableData) {
+          $translationTable = {};
+          angular.forEach(tableData, function (data) {
+            translations(data.key, data.table);
+          });
+          if ($uses) {
+            useLanguage($uses);
+          }
+          resolve();
+        };
+        allTranslationsLoaded.displayName = 'refreshPostProcessor';
+
+        $q.all(tables).then(allTranslationsLoaded, reject);
+
+      } else if ($translationTable[langKey]) {
+
+        var oneTranslationsLoaded = function (data) {
+          translations(data.key, data.table);
+          if (langKey === $uses) {
+            useLanguage($uses);
+          }
+          resolve();
+          return data;
+        };
+        oneTranslationsLoaded.displayName = 'refreshPostProcessor';
+
+        loadAsync(langKey).then(oneTranslationsLoaded, reject);
+
+      } else {
+        reject();
+      }
+      return deferred.promise;
+    };
+
+    /**
+     * @ngdoc function
+     * @name pascalprecht.translate.$translate#instant
+     * @methodOf pascalprecht.translate.$translate
+     *
+     * @description
+     * Returns a translation instantly from the internal state of loaded translation. All rules
+     * regarding the current language, the preferred language of even fallback languages will be
+     * used except any promise handling. If a language was not found, an asynchronous loading
+     * will be invoked in the background.
+     *
+     * @param {string|array} translationId A token which represents a translation id
+     *                                     This can be optionally an array of translation ids which
+     *                                     results that the function's promise returns an object where
+     *                                     each key is the translation id and the value the translation.
+     * @param {object} interpolateParams Params
+     * @param {string} interpolationId The id of the interpolation to use
+     * @param {string} forceLanguage A language to be used instead of the current language
+     * @param {string} sanitizeStrategy force sanitize strategy for this call instead of using the configured one
+     *
+     * @return {string|object} translation
+     */
+    $translate.instant = function (translationId, interpolateParams, interpolatio

<TRUNCATED>


[07/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kea.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kea.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kea.js
new file mode 100644
index 0000000..7bd3cab
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kea.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "am",
+      "pm"
+    ],
+    "DAY": [
+      "dumingu",
+      "sigunda-fera",
+      "tersa-fera",
+      "kuarta-fera",
+      "kinta-fera",
+      "sesta-fera",
+      "sabadu"
+    ],
+    "ERANAMES": [
+      "Antis di Kristu",
+      "Dispos di Kristu"
+    ],
+    "ERAS": [
+      "AK",
+      "DK"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Janeru",
+      "Febreru",
+      "Marsu",
+      "Abril",
+      "Maiu",
+      "Junhu",
+      "Julhu",
+      "Agostu",
+      "Setenbru",
+      "Otubru",
+      "Nuvenbru",
+      "Dizenbru"
+    ],
+    "SHORTDAY": [
+      "dum",
+      "sig",
+      "ter",
+      "kua",
+      "kin",
+      "ses",
+      "sab"
+    ],
+    "SHORTMONTH": [
+      "Jan",
+      "Feb",
+      "Mar",
+      "Abr",
+      "Mai",
+      "Jun",
+      "Jul",
+      "Ago",
+      "Set",
+      "Otu",
+      "Nuv",
+      "Diz"
+    ],
+    "STANDALONEMONTH": [
+      "Janeru",
+      "Febreru",
+      "Marsu",
+      "Abril",
+      "Maiu",
+      "Junhu",
+      "Julhu",
+      "Agostu",
+      "Setenbru",
+      "Otubru",
+      "Nuvenbru",
+      "Dizenbru"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d 'di' MMMM 'di' y",
+    "longDate": "d 'di' MMMM 'di' y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "CVE",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "kea",
+  "localeID": "kea",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_khq-ml.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_khq-ml.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_khq-ml.js
new file mode 100644
index 0000000..5ec7148
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_khq-ml.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "Adduha",
+      "Aluula"
+    ],
+    "DAY": [
+      "Alhadi",
+      "Atini",
+      "Atalata",
+      "Alarba",
+      "Alhamiisa",
+      "Aljuma",
+      "Assabdu"
+    ],
+    "ERANAMES": [
+      "Isaa jine",
+      "Isaa jamanoo"
+    ],
+    "ERAS": [
+      "IJ",
+      "IZ"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u017danwiye",
+      "Feewiriye",
+      "Marsi",
+      "Awiril",
+      "Me",
+      "\u017duwe\u014b",
+      "\u017duyye",
+      "Ut",
+      "Sektanbur",
+      "Oktoobur",
+      "Noowanbur",
+      "Deesanbur"
+    ],
+    "SHORTDAY": [
+      "Alh",
+      "Ati",
+      "Ata",
+      "Ala",
+      "Alm",
+      "Alj",
+      "Ass"
+    ],
+    "SHORTMONTH": [
+      "\u017dan",
+      "Fee",
+      "Mar",
+      "Awi",
+      "Me",
+      "\u017duw",
+      "\u017duy",
+      "Ut",
+      "Sek",
+      "Okt",
+      "Noo",
+      "Dee"
+    ],
+    "STANDALONEMONTH": [
+      "\u017danwiye",
+      "Feewiriye",
+      "Marsi",
+      "Awiril",
+      "Me",
+      "\u017duwe\u014b",
+      "\u017duyye",
+      "Ut",
+      "Sektanbur",
+      "Oktoobur",
+      "Noowanbur",
+      "Deesanbur"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "CFA",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a4"
+      }
+    ]
+  },
+  "id": "khq-ml",
+  "localeID": "khq_ML",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_khq.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_khq.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_khq.js
new file mode 100644
index 0000000..8035933
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_khq.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "Adduha",
+      "Aluula"
+    ],
+    "DAY": [
+      "Alhadi",
+      "Atini",
+      "Atalata",
+      "Alarba",
+      "Alhamiisa",
+      "Aljuma",
+      "Assabdu"
+    ],
+    "ERANAMES": [
+      "Isaa jine",
+      "Isaa jamanoo"
+    ],
+    "ERAS": [
+      "IJ",
+      "IZ"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u017danwiye",
+      "Feewiriye",
+      "Marsi",
+      "Awiril",
+      "Me",
+      "\u017duwe\u014b",
+      "\u017duyye",
+      "Ut",
+      "Sektanbur",
+      "Oktoobur",
+      "Noowanbur",
+      "Deesanbur"
+    ],
+    "SHORTDAY": [
+      "Alh",
+      "Ati",
+      "Ata",
+      "Ala",
+      "Alm",
+      "Alj",
+      "Ass"
+    ],
+    "SHORTMONTH": [
+      "\u017dan",
+      "Fee",
+      "Mar",
+      "Awi",
+      "Me",
+      "\u017duw",
+      "\u017duy",
+      "Ut",
+      "Sek",
+      "Okt",
+      "Noo",
+      "Dee"
+    ],
+    "STANDALONEMONTH": [
+      "\u017danwiye",
+      "Feewiriye",
+      "Marsi",
+      "Awiril",
+      "Me",
+      "\u017duwe\u014b",
+      "\u017duyye",
+      "Ut",
+      "Sektanbur",
+      "Oktoobur",
+      "Noowanbur",
+      "Deesanbur"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "CFA",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a4"
+      }
+    ]
+  },
+  "id": "khq",
+  "localeID": "khq",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ki-ke.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ki-ke.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ki-ke.js
new file mode 100644
index 0000000..b049763
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ki-ke.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "Kiroko",
+      "Hwa\u0129-in\u0129"
+    ],
+    "DAY": [
+      "Kiumia",
+      "Njumatat\u0169",
+      "Njumaine",
+      "Njumatana",
+      "Aramithi",
+      "Njumaa",
+      "Njumamothi"
+    ],
+    "ERANAMES": [
+      "Mbere ya Kristo",
+      "Thutha wa Kristo"
+    ],
+    "ERAS": [
+      "MK",
+      "TK"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Njenuar\u0129",
+      "Mwere wa ker\u0129",
+      "Mwere wa gatat\u0169",
+      "Mwere wa kana",
+      "Mwere wa gatano",
+      "Mwere wa gatandat\u0169",
+      "Mwere wa m\u0169gwanja",
+      "Mwere wa kanana",
+      "Mwere wa kenda",
+      "Mwere wa ik\u0169mi",
+      "Mwere wa ik\u0169mi na \u0169mwe",
+      "Ndithemba"
+    ],
+    "SHORTDAY": [
+      "KMA",
+      "NTT",
+      "NMN",
+      "NMT",
+      "ART",
+      "NMA",
+      "NMM"
+    ],
+    "SHORTMONTH": [
+      "JEN",
+      "WKR",
+      "WGT",
+      "WKN",
+      "WTN",
+      "WTD",
+      "WMJ",
+      "WNN",
+      "WKD",
+      "WIK",
+      "WMW",
+      "DIT"
+    ],
+    "STANDALONEMONTH": [
+      "Njenuar\u0129",
+      "Mwere wa ker\u0129",
+      "Mwere wa gatat\u0169",
+      "Mwere wa kana",
+      "Mwere wa gatano",
+      "Mwere wa gatandat\u0169",
+      "Mwere wa m\u0169gwanja",
+      "Mwere wa kanana",
+      "Mwere wa kenda",
+      "Mwere wa ik\u0169mi",
+      "Mwere wa ik\u0169mi na \u0169mwe",
+      "Ndithemba"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Ksh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ki-ke",
+  "localeID": "ki_KE",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ki.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ki.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ki.js
new file mode 100644
index 0000000..f79a457
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ki.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "Kiroko",
+      "Hwa\u0129-in\u0129"
+    ],
+    "DAY": [
+      "Kiumia",
+      "Njumatat\u0169",
+      "Njumaine",
+      "Njumatana",
+      "Aramithi",
+      "Njumaa",
+      "Njumamothi"
+    ],
+    "ERANAMES": [
+      "Mbere ya Kristo",
+      "Thutha wa Kristo"
+    ],
+    "ERAS": [
+      "MK",
+      "TK"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Njenuar\u0129",
+      "Mwere wa ker\u0129",
+      "Mwere wa gatat\u0169",
+      "Mwere wa kana",
+      "Mwere wa gatano",
+      "Mwere wa gatandat\u0169",
+      "Mwere wa m\u0169gwanja",
+      "Mwere wa kanana",
+      "Mwere wa kenda",
+      "Mwere wa ik\u0169mi",
+      "Mwere wa ik\u0169mi na \u0169mwe",
+      "Ndithemba"
+    ],
+    "SHORTDAY": [
+      "KMA",
+      "NTT",
+      "NMN",
+      "NMT",
+      "ART",
+      "NMA",
+      "NMM"
+    ],
+    "SHORTMONTH": [
+      "JEN",
+      "WKR",
+      "WGT",
+      "WKN",
+      "WTN",
+      "WTD",
+      "WMJ",
+      "WNN",
+      "WKD",
+      "WIK",
+      "WMW",
+      "DIT"
+    ],
+    "STANDALONEMONTH": [
+      "Njenuar\u0129",
+      "Mwere wa ker\u0129",
+      "Mwere wa gatat\u0169",
+      "Mwere wa kana",
+      "Mwere wa gatano",
+      "Mwere wa gatandat\u0169",
+      "Mwere wa m\u0169gwanja",
+      "Mwere wa kanana",
+      "Mwere wa kenda",
+      "Mwere wa ik\u0169mi",
+      "Mwere wa ik\u0169mi na \u0169mwe",
+      "Ndithemba"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Ksh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ki",
+  "localeID": "ki",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kk-cyrl-kz.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kk-cyrl-kz.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kk-cyrl-kz.js
new file mode 100644
index 0000000..20738da
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kk-cyrl-kz.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0442\u0430\u04a3\u0435\u0440\u0442\u0435\u04a3\u0433\u0456",
+      "\u0442\u04af\u0441\u0442\u0435\u043d \u043a\u0435\u0439\u0456\u043d\u0433\u0456"
+    ],
+    "DAY": [
+      "\u0436\u0435\u043a\u0441\u0435\u043d\u0431\u0456",
+      "\u0434\u04af\u0439\u0441\u0435\u043d\u0431\u0456",
+      "\u0441\u0435\u0439\u0441\u0435\u043d\u0431\u0456",
+      "\u0441\u04d9\u0440\u0441\u0435\u043d\u0431\u0456",
+      "\u0431\u0435\u0439\u0441\u0435\u043d\u0431\u0456",
+      "\u0436\u04b1\u043c\u0430",
+      "\u0441\u0435\u043d\u0431\u0456"
+    ],
+    "ERANAMES": [
+      "\u0411\u0456\u0437\u0434\u0456\u04a3 \u0437\u0430\u043c\u0430\u043d\u044b\u043c\u044b\u0437\u0493\u0430 \u0434\u0435\u0439\u0456\u043d",
+      "\u0411\u0456\u0437\u0434\u0456\u04a3 \u0437\u0430\u043c\u0430\u043d\u044b\u043c\u044b\u0437"
+    ],
+    "ERAS": [
+      "\u0431.\u0437.\u0434.",
+      "\u0431.\u0437."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u049b\u0430\u04a3\u0442\u0430\u0440",
+      "\u0430\u049b\u043f\u0430\u043d",
+      "\u043d\u0430\u0443\u0440\u044b\u0437",
+      "\u0441\u04d9\u0443\u0456\u0440",
+      "\u043c\u0430\u043c\u044b\u0440",
+      "\u043c\u0430\u0443\u0441\u044b\u043c",
+      "\u0448\u0456\u043b\u0434\u0435",
+      "\u0442\u0430\u043c\u044b\u0437",
+      "\u049b\u044b\u0440\u043a\u04af\u0439\u0435\u043a",
+      "\u049b\u0430\u0437\u0430\u043d",
+      "\u049b\u0430\u0440\u0430\u0448\u0430",
+      "\u0436\u0435\u043b\u0442\u043e\u049b\u0441\u0430\u043d"
+    ],
+    "SHORTDAY": [
+      "\u0436\u0435\u043a",
+      "\u0434\u04af\u0439",
+      "\u0441\u0435\u0439",
+      "\u0441\u04d9\u0440",
+      "\u0431\u0435\u0439",
+      "\u0436\u04b1\u043c\u0430",
+      "\u0441\u0435\u043d"
+    ],
+    "SHORTMONTH": [
+      "\u049b\u0430\u04a3.",
+      "\u0430\u049b\u043f.",
+      "\u043d\u0430\u0443.",
+      "\u0441\u04d9\u0443.",
+      "\u043c\u0430\u043c.",
+      "\u043c\u0430\u0443.",
+      "\u0448\u0456\u043b.",
+      "\u0442\u0430\u043c.",
+      "\u049b\u044b\u0440.",
+      "\u049b\u0430\u0437.",
+      "\u049b\u0430\u0440.",
+      "\u0436\u0435\u043b\u0442."
+    ],
+    "STANDALONEMONTH": [
+      "\u049b\u0430\u04a3\u0442\u0430\u0440",
+      "\u0430\u049b\u043f\u0430\u043d",
+      "\u043d\u0430\u0443\u0440\u044b\u0437",
+      "\u0441\u04d9\u0443\u0456\u0440",
+      "\u043c\u0430\u043c\u044b\u0440",
+      "\u043c\u0430\u0443\u0441\u044b\u043c",
+      "\u0448\u0456\u043b\u0434\u0435",
+      "\u0442\u0430\u043c\u044b\u0437",
+      "\u049b\u044b\u0440\u043a\u04af\u0439\u0435\u043a",
+      "\u049b\u0430\u0437\u0430\u043d",
+      "\u049b\u0430\u0440\u0430\u0448\u0430",
+      "\u0436\u0435\u043b\u0442\u043e\u049b\u0441\u0430\u043d"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "y, dd-MMM HH:mm:ss",
+    "mediumDate": "y, dd-MMM",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/yy HH:mm",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20b8",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "kk-cyrl-kz",
+  "localeID": "kk_Cyrl_KZ",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kk-cyrl.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kk-cyrl.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kk-cyrl.js
new file mode 100644
index 0000000..f716820
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kk-cyrl.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0442\u0430\u04a3\u0435\u0440\u0442\u0435\u04a3\u0433\u0456",
+      "\u0442\u04af\u0441\u0442\u0435\u043d \u043a\u0435\u0439\u0456\u043d\u0433\u0456"
+    ],
+    "DAY": [
+      "\u0436\u0435\u043a\u0441\u0435\u043d\u0431\u0456",
+      "\u0434\u04af\u0439\u0441\u0435\u043d\u0431\u0456",
+      "\u0441\u0435\u0439\u0441\u0435\u043d\u0431\u0456",
+      "\u0441\u04d9\u0440\u0441\u0435\u043d\u0431\u0456",
+      "\u0431\u0435\u0439\u0441\u0435\u043d\u0431\u0456",
+      "\u0436\u04b1\u043c\u0430",
+      "\u0441\u0435\u043d\u0431\u0456"
+    ],
+    "ERANAMES": [
+      "\u0411\u0456\u0437\u0434\u0456\u04a3 \u0437\u0430\u043c\u0430\u043d\u044b\u043c\u044b\u0437\u0493\u0430 \u0434\u0435\u0439\u0456\u043d",
+      "\u0411\u0456\u0437\u0434\u0456\u04a3 \u0437\u0430\u043c\u0430\u043d\u044b\u043c\u044b\u0437"
+    ],
+    "ERAS": [
+      "\u0431.\u0437.\u0434.",
+      "\u0431.\u0437."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u049b\u0430\u04a3\u0442\u0430\u0440",
+      "\u0430\u049b\u043f\u0430\u043d",
+      "\u043d\u0430\u0443\u0440\u044b\u0437",
+      "\u0441\u04d9\u0443\u0456\u0440",
+      "\u043c\u0430\u043c\u044b\u0440",
+      "\u043c\u0430\u0443\u0441\u044b\u043c",
+      "\u0448\u0456\u043b\u0434\u0435",
+      "\u0442\u0430\u043c\u044b\u0437",
+      "\u049b\u044b\u0440\u043a\u04af\u0439\u0435\u043a",
+      "\u049b\u0430\u0437\u0430\u043d",
+      "\u049b\u0430\u0440\u0430\u0448\u0430",
+      "\u0436\u0435\u043b\u0442\u043e\u049b\u0441\u0430\u043d"
+    ],
+    "SHORTDAY": [
+      "\u0436\u0435\u043a",
+      "\u0434\u04af\u0439",
+      "\u0441\u0435\u0439",
+      "\u0441\u04d9\u0440",
+      "\u0431\u0435\u0439",
+      "\u0436\u04b1\u043c\u0430",
+      "\u0441\u0435\u043d"
+    ],
+    "SHORTMONTH": [
+      "\u049b\u0430\u04a3.",
+      "\u0430\u049b\u043f.",
+      "\u043d\u0430\u0443.",
+      "\u0441\u04d9\u0443.",
+      "\u043c\u0430\u043c.",
+      "\u043c\u0430\u0443.",
+      "\u0448\u0456\u043b.",
+      "\u0442\u0430\u043c.",
+      "\u049b\u044b\u0440.",
+      "\u049b\u0430\u0437.",
+      "\u049b\u0430\u0440.",
+      "\u0436\u0435\u043b\u0442."
+    ],
+    "STANDALONEMONTH": [
+      "\u049b\u0430\u04a3\u0442\u0430\u0440",
+      "\u0430\u049b\u043f\u0430\u043d",
+      "\u043d\u0430\u0443\u0440\u044b\u0437",
+      "\u0441\u04d9\u0443\u0456\u0440",
+      "\u043c\u0430\u043c\u044b\u0440",
+      "\u043c\u0430\u0443\u0441\u044b\u043c",
+      "\u0448\u0456\u043b\u0434\u0435",
+      "\u0442\u0430\u043c\u044b\u0437",
+      "\u049b\u044b\u0440\u043a\u04af\u0439\u0435\u043a",
+      "\u049b\u0430\u0437\u0430\u043d",
+      "\u049b\u0430\u0440\u0430\u0448\u0430",
+      "\u0436\u0435\u043b\u0442\u043e\u049b\u0441\u0430\u043d"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "y, dd-MMM HH:mm:ss",
+    "mediumDate": "y, dd-MMM",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/yy HH:mm",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20b8",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "kk-cyrl",
+  "localeID": "kk_Cyrl",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kk.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kk.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kk.js
new file mode 100644
index 0000000..976d500
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kk.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0442\u0430\u04a3\u0435\u0440\u0442\u0435\u04a3\u0433\u0456",
+      "\u0442\u04af\u0441\u0442\u0435\u043d \u043a\u0435\u0439\u0456\u043d\u0433\u0456"
+    ],
+    "DAY": [
+      "\u0436\u0435\u043a\u0441\u0435\u043d\u0431\u0456",
+      "\u0434\u04af\u0439\u0441\u0435\u043d\u0431\u0456",
+      "\u0441\u0435\u0439\u0441\u0435\u043d\u0431\u0456",
+      "\u0441\u04d9\u0440\u0441\u0435\u043d\u0431\u0456",
+      "\u0431\u0435\u0439\u0441\u0435\u043d\u0431\u0456",
+      "\u0436\u04b1\u043c\u0430",
+      "\u0441\u0435\u043d\u0431\u0456"
+    ],
+    "ERANAMES": [
+      "\u0411\u0456\u0437\u0434\u0456\u04a3 \u0437\u0430\u043c\u0430\u043d\u044b\u043c\u044b\u0437\u0493\u0430 \u0434\u0435\u0439\u0456\u043d",
+      "\u0411\u0456\u0437\u0434\u0456\u04a3 \u0437\u0430\u043c\u0430\u043d\u044b\u043c\u044b\u0437"
+    ],
+    "ERAS": [
+      "\u0431.\u0437.\u0434.",
+      "\u0431.\u0437."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "\u049b\u0430\u04a3\u0442\u0430\u0440",
+      "\u0430\u049b\u043f\u0430\u043d",
+      "\u043d\u0430\u0443\u0440\u044b\u0437",
+      "\u0441\u04d9\u0443\u0456\u0440",
+      "\u043c\u0430\u043c\u044b\u0440",
+      "\u043c\u0430\u0443\u0441\u044b\u043c",
+      "\u0448\u0456\u043b\u0434\u0435",
+      "\u0442\u0430\u043c\u044b\u0437",
+      "\u049b\u044b\u0440\u043a\u04af\u0439\u0435\u043a",
+      "\u049b\u0430\u0437\u0430\u043d",
+      "\u049b\u0430\u0440\u0430\u0448\u0430",
+      "\u0436\u0435\u043b\u0442\u043e\u049b\u0441\u0430\u043d"
+    ],
+    "SHORTDAY": [
+      "\u0436\u0435\u043a",
+      "\u0434\u04af\u0439",
+      "\u0441\u0435\u0439",
+      "\u0441\u04d9\u0440",
+      "\u0431\u0435\u0439",
+      "\u0436\u04b1\u043c\u0430",
+      "\u0441\u0435\u043d"
+    ],
+    "SHORTMONTH": [
+      "\u049b\u0430\u04a3.",
+      "\u0430\u049b\u043f.",
+      "\u043d\u0430\u0443.",
+      "\u0441\u04d9\u0443.",
+      "\u043c\u0430\u043c.",
+      "\u043c\u0430\u0443.",
+      "\u0448\u0456\u043b.",
+      "\u0442\u0430\u043c.",
+      "\u049b\u044b\u0440.",
+      "\u049b\u0430\u0437.",
+      "\u049b\u0430\u0440.",
+      "\u0436\u0435\u043b\u0442."
+    ],
+    "STANDALONEMONTH": [
+      "\u049b\u0430\u04a3\u0442\u0430\u0440",
+      "\u0430\u049b\u043f\u0430\u043d",
+      "\u043d\u0430\u0443\u0440\u044b\u0437",
+      "\u0441\u04d9\u0443\u0456\u0440",
+      "\u043c\u0430\u043c\u044b\u0440",
+      "\u043c\u0430\u0443\u0441\u044b\u043c",
+      "\u0448\u0456\u043b\u0434\u0435",
+      "\u0442\u0430\u043c\u044b\u0437",
+      "\u049b\u044b\u0440\u043a\u04af\u0439\u0435\u043a",
+      "\u049b\u0430\u0437\u0430\u043d",
+      "\u049b\u0430\u0440\u0430\u0448\u0430",
+      "\u0436\u0435\u043b\u0442\u043e\u049b\u0441\u0430\u043d"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "y, dd-MMM HH:mm:ss",
+    "mediumDate": "y, dd-MMM",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM/yy HH:mm",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20b8",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a0\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a0\u00a4"
+      }
+    ]
+  },
+  "id": "kk",
+  "localeID": "kk",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kkj-cm.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kkj-cm.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kkj-cm.js
new file mode 100644
index 0000000..9247110
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kkj-cm.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "s\u0254ndi",
+      "lundi",
+      "mardi",
+      "m\u025brk\u025br\u025bdi",
+      "yedi",
+      "va\u014bd\u025br\u025bdi",
+      "m\u0254n\u0254 s\u0254ndi"
+    ],
+    "ERANAMES": [
+      "BCE",
+      "CE"
+    ],
+    "ERAS": [
+      "BCE",
+      "CE"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "pamba",
+      "wanja",
+      "mbiy\u0254 m\u025bndo\u014bg\u0254",
+      "Ny\u0254l\u0254mb\u0254\u014bg\u0254",
+      "M\u0254n\u0254 \u014bgbanja",
+      "Nya\u014bgw\u025b \u014bgbanja",
+      "ku\u014bgw\u025b",
+      "f\u025b",
+      "njapi",
+      "nyukul",
+      "11",
+      "\u0253ul\u0253us\u025b"
+    ],
+    "SHORTDAY": [
+      "s\u0254ndi",
+      "lundi",
+      "mardi",
+      "m\u025brk\u025br\u025bdi",
+      "yedi",
+      "va\u014bd\u025br\u025bdi",
+      "m\u0254n\u0254 s\u0254ndi"
+    ],
+    "SHORTMONTH": [
+      "pamba",
+      "wanja",
+      "mbiy\u0254 m\u025bndo\u014bg\u0254",
+      "Ny\u0254l\u0254mb\u0254\u014bg\u0254",
+      "M\u0254n\u0254 \u014bgbanja",
+      "Nya\u014bgw\u025b \u014bgbanja",
+      "ku\u014bgw\u025b",
+      "f\u025b",
+      "njapi",
+      "nyukul",
+      "11",
+      "\u0253ul\u0253us\u025b"
+    ],
+    "STANDALONEMONTH": [
+      "pamba",
+      "wanja",
+      "mbiy\u0254 m\u025bndo\u014bg\u0254",
+      "Ny\u0254l\u0254mb\u0254\u014bg\u0254",
+      "M\u0254n\u0254 \u014bgbanja",
+      "Nya\u014bgw\u025b \u014bgbanja",
+      "ku\u014bgw\u025b",
+      "f\u025b",
+      "njapi",
+      "nyukul",
+      "11",
+      "\u0253ul\u0253us\u025b"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE dd MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM y HH:mm",
+    "shortDate": "dd/MM y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "kkj-cm",
+  "localeID": "kkj_CM",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kkj.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kkj.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kkj.js
new file mode 100644
index 0000000..247c7aa
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kkj.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AM",
+      "PM"
+    ],
+    "DAY": [
+      "s\u0254ndi",
+      "lundi",
+      "mardi",
+      "m\u025brk\u025br\u025bdi",
+      "yedi",
+      "va\u014bd\u025br\u025bdi",
+      "m\u0254n\u0254 s\u0254ndi"
+    ],
+    "ERANAMES": [
+      "BCE",
+      "CE"
+    ],
+    "ERAS": [
+      "BCE",
+      "CE"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "pamba",
+      "wanja",
+      "mbiy\u0254 m\u025bndo\u014bg\u0254",
+      "Ny\u0254l\u0254mb\u0254\u014bg\u0254",
+      "M\u0254n\u0254 \u014bgbanja",
+      "Nya\u014bgw\u025b \u014bgbanja",
+      "ku\u014bgw\u025b",
+      "f\u025b",
+      "njapi",
+      "nyukul",
+      "11",
+      "\u0253ul\u0253us\u025b"
+    ],
+    "SHORTDAY": [
+      "s\u0254ndi",
+      "lundi",
+      "mardi",
+      "m\u025brk\u025br\u025bdi",
+      "yedi",
+      "va\u014bd\u025br\u025bdi",
+      "m\u0254n\u0254 s\u0254ndi"
+    ],
+    "SHORTMONTH": [
+      "pamba",
+      "wanja",
+      "mbiy\u0254 m\u025bndo\u014bg\u0254",
+      "Ny\u0254l\u0254mb\u0254\u014bg\u0254",
+      "M\u0254n\u0254 \u014bgbanja",
+      "Nya\u014bgw\u025b \u014bgbanja",
+      "ku\u014bgw\u025b",
+      "f\u025b",
+      "njapi",
+      "nyukul",
+      "11",
+      "\u0253ul\u0253us\u025b"
+    ],
+    "STANDALONEMONTH": [
+      "pamba",
+      "wanja",
+      "mbiy\u0254 m\u025bndo\u014bg\u0254",
+      "Ny\u0254l\u0254mb\u0254\u014bg\u0254",
+      "M\u0254n\u0254 \u014bgbanja",
+      "Nya\u014bgw\u025b \u014bgbanja",
+      "ku\u014bgw\u025b",
+      "f\u025b",
+      "njapi",
+      "nyukul",
+      "11",
+      "\u0253ul\u0253us\u025b"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE dd MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "dd/MM y HH:mm",
+    "shortDate": "dd/MM y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "kkj",
+  "localeID": "kkj",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kl-gl.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kl-gl.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kl-gl.js
new file mode 100644
index 0000000..bf1c87e
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kl-gl.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "ulloqeqqata-tungaa",
+      "ulloqeqqata-kingorna"
+    ],
+    "DAY": [
+      "sabaat",
+      "ataasinngorneq",
+      "marlunngorneq",
+      "pingasunngorneq",
+      "sisamanngorneq",
+      "tallimanngorneq",
+      "arfininngorneq"
+    ],
+    "ERANAMES": [
+      "Kristusip inunngornerata siornagut",
+      "Kristusip inunngornerata kingornagut"
+    ],
+    "ERAS": [
+      "Kr.in.si.",
+      "Kr.in.king."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "januari",
+      "februari",
+      "martsi",
+      "aprili",
+      "maji",
+      "juni",
+      "juli",
+      "augustusi",
+      "septemberi",
+      "oktoberi",
+      "novemberi",
+      "decemberi"
+    ],
+    "SHORTDAY": [
+      "sab",
+      "ata",
+      "mar",
+      "pin",
+      "sis",
+      "tal",
+      "arf"
+    ],
+    "SHORTMONTH": [
+      "jan",
+      "feb",
+      "mar",
+      "apr",
+      "maj",
+      "jun",
+      "jul",
+      "aug",
+      "sep",
+      "okt",
+      "nov",
+      "dec"
+    ],
+    "STANDALONEMONTH": [
+      "januari",
+      "februari",
+      "martsi",
+      "aprili",
+      "maji",
+      "juni",
+      "juli",
+      "augustusi",
+      "septemberi",
+      "oktoberi",
+      "novemberi",
+      "decemberi"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE dd MMMM y",
+    "longDate": "dd MMMM y",
+    "medium": "MMM dd, y h:mm:ss a",
+    "mediumDate": "MMM dd, y",
+    "mediumTime": "h:mm:ss a",
+    "short": "y-MM-dd h:mm a",
+    "shortDate": "y-MM-dd",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "kr",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4-",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "kl-gl",
+  "localeID": "kl_GL",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kl.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kl.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kl.js
new file mode 100644
index 0000000..96d1285
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kl.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "ulloqeqqata-tungaa",
+      "ulloqeqqata-kingorna"
+    ],
+    "DAY": [
+      "sabaat",
+      "ataasinngorneq",
+      "marlunngorneq",
+      "pingasunngorneq",
+      "sisamanngorneq",
+      "tallimanngorneq",
+      "arfininngorneq"
+    ],
+    "ERANAMES": [
+      "Kristusip inunngornerata siornagut",
+      "Kristusip inunngornerata kingornagut"
+    ],
+    "ERAS": [
+      "Kr.in.si.",
+      "Kr.in.king."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "januari",
+      "februari",
+      "martsi",
+      "aprili",
+      "maji",
+      "juni",
+      "juli",
+      "augustusi",
+      "septemberi",
+      "oktoberi",
+      "novemberi",
+      "decemberi"
+    ],
+    "SHORTDAY": [
+      "sab",
+      "ata",
+      "mar",
+      "pin",
+      "sis",
+      "tal",
+      "arf"
+    ],
+    "SHORTMONTH": [
+      "jan",
+      "feb",
+      "mar",
+      "apr",
+      "maj",
+      "jun",
+      "jul",
+      "aug",
+      "sep",
+      "okt",
+      "nov",
+      "dec"
+    ],
+    "STANDALONEMONTH": [
+      "januari",
+      "februari",
+      "martsi",
+      "aprili",
+      "maji",
+      "juni",
+      "juli",
+      "augustusi",
+      "septemberi",
+      "oktoberi",
+      "novemberi",
+      "decemberi"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE dd MMMM y",
+    "longDate": "dd MMMM y",
+    "medium": "MMM dd, y h:mm:ss a",
+    "mediumDate": "MMM dd, y",
+    "mediumTime": "h:mm:ss a",
+    "short": "y-MM-dd h:mm a",
+    "shortDate": "y-MM-dd",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "kr",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4-",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "kl",
+  "localeID": "kl",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kln-ke.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kln-ke.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kln-ke.js
new file mode 100644
index 0000000..69f6179
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kln-ke.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "karoon",
+      "kooskoliny"
+    ],
+    "DAY": [
+      "Kotisap",
+      "Kotaai",
+      "Koaeng\u2019",
+      "Kosomok",
+      "Koang\u2019wan",
+      "Komuut",
+      "Kolo"
+    ],
+    "ERANAMES": [
+      "Amait kesich Jesu",
+      "Kokakesich Jesu"
+    ],
+    "ERAS": [
+      "AM",
+      "KO"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Mulgul",
+      "Ng\u2019atyaato",
+      "Kiptaamo",
+      "Iwootkuut",
+      "Mamuut",
+      "Paagi",
+      "Ng\u2019eiyeet",
+      "Rooptui",
+      "Bureet",
+      "Epeeso",
+      "Kipsuunde ne taai",
+      "Kipsuunde nebo aeng\u2019"
+    ],
+    "SHORTDAY": [
+      "Kts",
+      "Kot",
+      "Koo",
+      "Kos",
+      "Koa",
+      "Kom",
+      "Kol"
+    ],
+    "SHORTMONTH": [
+      "Mul",
+      "Ngat",
+      "Taa",
+      "Iwo",
+      "Mam",
+      "Paa",
+      "Nge",
+      "Roo",
+      "Bur",
+      "Epe",
+      "Kpt",
+      "Kpa"
+    ],
+    "STANDALONEMONTH": [
+      "Mulgul",
+      "Ng\u2019atyaato",
+      "Kiptaamo",
+      "Iwootkuut",
+      "Mamuut",
+      "Paagi",
+      "Ng\u2019eiyeet",
+      "Rooptui",
+      "Bureet",
+      "Epeeso",
+      "Kipsuunde ne taai",
+      "Kipsuunde nebo aeng\u2019"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Ksh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "kln-ke",
+  "localeID": "kln_KE",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kln.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kln.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kln.js
new file mode 100644
index 0000000..5362331
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kln.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "karoon",
+      "kooskoliny"
+    ],
+    "DAY": [
+      "Kotisap",
+      "Kotaai",
+      "Koaeng\u2019",
+      "Kosomok",
+      "Koang\u2019wan",
+      "Komuut",
+      "Kolo"
+    ],
+    "ERANAMES": [
+      "Amait kesich Jesu",
+      "Kokakesich Jesu"
+    ],
+    "ERAS": [
+      "AM",
+      "KO"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Mulgul",
+      "Ng\u2019atyaato",
+      "Kiptaamo",
+      "Iwootkuut",
+      "Mamuut",
+      "Paagi",
+      "Ng\u2019eiyeet",
+      "Rooptui",
+      "Bureet",
+      "Epeeso",
+      "Kipsuunde ne taai",
+      "Kipsuunde nebo aeng\u2019"
+    ],
+    "SHORTDAY": [
+      "Kts",
+      "Kot",
+      "Koo",
+      "Kos",
+      "Koa",
+      "Kom",
+      "Kol"
+    ],
+    "SHORTMONTH": [
+      "Mul",
+      "Ngat",
+      "Taa",
+      "Iwo",
+      "Mam",
+      "Paa",
+      "Nge",
+      "Roo",
+      "Bur",
+      "Epe",
+      "Kpt",
+      "Kpa"
+    ],
+    "STANDALONEMONTH": [
+      "Mulgul",
+      "Ng\u2019atyaato",
+      "Kiptaamo",
+      "Iwootkuut",
+      "Mamuut",
+      "Paagi",
+      "Ng\u2019eiyeet",
+      "Rooptui",
+      "Bureet",
+      "Epeeso",
+      "Kipsuunde ne taai",
+      "Kipsuunde nebo aeng\u2019"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Ksh",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "kln",
+  "localeID": "kln",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_km-kh.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_km-kh.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_km-kh.js
new file mode 100644
index 0000000..185486b
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_km-kh.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u1796\u17d2\u179a\u17b9\u1780",
+      "\u179b\u17d2\u1784\u17b6\u1785"
+    ],
+    "DAY": [
+      "\u17a2\u17b6\u1791\u17b7\u178f\u17d2\u1799",
+      "\u1785\u1793\u17d2\u1791",
+      "\u17a2\u1784\u17d2\u1782\u17b6\u179a",
+      "\u1796\u17bb\u1792",
+      "\u1796\u17d2\u179a\u17a0\u179f\u17d2\u1794\u178f\u17b7\u17cd",
+      "\u179f\u17bb\u1780\u17d2\u179a",
+      "\u179f\u17c5\u179a\u17cd"
+    ],
+    "ERANAMES": [
+      "\u1798\u17bb\u1793\u200b\u1782\u17d2\u179a\u17b7\u179f\u17d2\u178f\u179f\u1780\u179a\u17b6\u1787",
+      "\u1782\u17d2\u179a\u17b7\u179f\u17d2\u178f\u179f\u1780\u179a\u17b6\u1787"
+    ],
+    "ERAS": [
+      "\u1798\u17bb\u1793 \u1782.\u179f.",
+      "\u1782.\u179f."
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u1798\u1780\u179a\u17b6",
+      "\u1780\u17bb\u1798\u17d2\u1797\u17c8",
+      "\u1798\u17b8\u1793\u17b6",
+      "\u1798\u17c1\u179f\u17b6",
+      "\u17a7\u179f\u1797\u17b6",
+      "\u1798\u17b7\u1790\u17bb\u1793\u17b6",
+      "\u1780\u1780\u17d2\u1780\u178a\u17b6",
+      "\u179f\u17b8\u17a0\u17b6",
+      "\u1780\u1789\u17d2\u1789\u17b6",
+      "\u178f\u17bb\u179b\u17b6",
+      "\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6",
+      "\u1792\u17d2\u1793\u17bc"
+    ],
+    "SHORTDAY": [
+      "\u17a2\u17b6\u1791\u17b7\u178f\u17d2\u1799",
+      "\u1785\u1793\u17d2\u1791",
+      "\u17a2\u1784\u17d2\u1782\u17b6\u179a",
+      "\u1796\u17bb\u1792",
+      "\u1796\u17d2\u179a\u17a0\u179f\u17d2\u1794\u178f\u17b7\u17cd",
+      "\u179f\u17bb\u1780\u17d2\u179a",
+      "\u179f\u17c5\u179a\u17cd"
+    ],
+    "SHORTMONTH": [
+      "\u1798\u1780\u179a\u17b6",
+      "\u1780\u17bb\u1798\u17d2\u1797\u17c8",
+      "\u1798\u17b8\u1793\u17b6",
+      "\u1798\u17c1\u179f\u17b6",
+      "\u17a7\u179f\u1797\u17b6",
+      "\u1798\u17b7\u1790\u17bb\u1793\u17b6",
+      "\u1780\u1780\u17d2\u1780\u178a\u17b6",
+      "\u179f\u17b8\u17a0\u17b6",
+      "\u1780\u1789\u17d2\u1789\u17b6",
+      "\u178f\u17bb\u179b\u17b6",
+      "\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6",
+      "\u1792\u17d2\u1793\u17bc"
+    ],
+    "STANDALONEMONTH": [
+      "\u1798\u1780\u179a\u17b6",
+      "\u1780\u17bb\u1798\u17d2\u1797\u17c8",
+      "\u1798\u17b8\u1793\u17b6",
+      "\u1798\u17c1\u179f\u17b6",
+      "\u17a7\u179f\u1797\u17b6",
+      "\u1798\u17b7\u1790\u17bb\u1793\u17b6",
+      "\u1780\u1780\u17d2\u1780\u178a\u17b6",
+      "\u179f\u17b8\u17a0\u17b6",
+      "\u1780\u1789\u17d2\u1789\u17b6",
+      "\u178f\u17bb\u179b\u17b6",
+      "\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6",
+      "\u1792\u17d2\u1793\u17bc"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/M/yy h:mm a",
+    "shortDate": "d/M/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Riel",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "km-kh",
+  "localeID": "km_KH",
+  "pluralCat": function(n, opt_precision) {  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_km.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_km.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_km.js
new file mode 100644
index 0000000..4291454
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_km.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u1796\u17d2\u179a\u17b9\u1780",
+      "\u179b\u17d2\u1784\u17b6\u1785"
+    ],
+    "DAY": [
+      "\u17a2\u17b6\u1791\u17b7\u178f\u17d2\u1799",
+      "\u1785\u1793\u17d2\u1791",
+      "\u17a2\u1784\u17d2\u1782\u17b6\u179a",
+      "\u1796\u17bb\u1792",
+      "\u1796\u17d2\u179a\u17a0\u179f\u17d2\u1794\u178f\u17b7\u17cd",
+      "\u179f\u17bb\u1780\u17d2\u179a",
+      "\u179f\u17c5\u179a\u17cd"
+    ],
+    "ERANAMES": [
+      "\u1798\u17bb\u1793\u200b\u1782\u17d2\u179a\u17b7\u179f\u17d2\u178f\u179f\u1780\u179a\u17b6\u1787",
+      "\u1782\u17d2\u179a\u17b7\u179f\u17d2\u178f\u179f\u1780\u179a\u17b6\u1787"
+    ],
+    "ERAS": [
+      "\u1798\u17bb\u1793 \u1782.\u179f.",
+      "\u1782.\u179f."
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u1798\u1780\u179a\u17b6",
+      "\u1780\u17bb\u1798\u17d2\u1797\u17c8",
+      "\u1798\u17b8\u1793\u17b6",
+      "\u1798\u17c1\u179f\u17b6",
+      "\u17a7\u179f\u1797\u17b6",
+      "\u1798\u17b7\u1790\u17bb\u1793\u17b6",
+      "\u1780\u1780\u17d2\u1780\u178a\u17b6",
+      "\u179f\u17b8\u17a0\u17b6",
+      "\u1780\u1789\u17d2\u1789\u17b6",
+      "\u178f\u17bb\u179b\u17b6",
+      "\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6",
+      "\u1792\u17d2\u1793\u17bc"
+    ],
+    "SHORTDAY": [
+      "\u17a2\u17b6\u1791\u17b7\u178f\u17d2\u1799",
+      "\u1785\u1793\u17d2\u1791",
+      "\u17a2\u1784\u17d2\u1782\u17b6\u179a",
+      "\u1796\u17bb\u1792",
+      "\u1796\u17d2\u179a\u17a0\u179f\u17d2\u1794\u178f\u17b7\u17cd",
+      "\u179f\u17bb\u1780\u17d2\u179a",
+      "\u179f\u17c5\u179a\u17cd"
+    ],
+    "SHORTMONTH": [
+      "\u1798\u1780\u179a\u17b6",
+      "\u1780\u17bb\u1798\u17d2\u1797\u17c8",
+      "\u1798\u17b8\u1793\u17b6",
+      "\u1798\u17c1\u179f\u17b6",
+      "\u17a7\u179f\u1797\u17b6",
+      "\u1798\u17b7\u1790\u17bb\u1793\u17b6",
+      "\u1780\u1780\u17d2\u1780\u178a\u17b6",
+      "\u179f\u17b8\u17a0\u17b6",
+      "\u1780\u1789\u17d2\u1789\u17b6",
+      "\u178f\u17bb\u179b\u17b6",
+      "\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6",
+      "\u1792\u17d2\u1793\u17bc"
+    ],
+    "STANDALONEMONTH": [
+      "\u1798\u1780\u179a\u17b6",
+      "\u1780\u17bb\u1798\u17d2\u1797\u17c8",
+      "\u1798\u17b8\u1793\u17b6",
+      "\u1798\u17c1\u179f\u17b6",
+      "\u17a7\u179f\u1797\u17b6",
+      "\u1798\u17b7\u1790\u17bb\u1793\u17b6",
+      "\u1780\u1780\u17d2\u1780\u178a\u17b6",
+      "\u179f\u17b8\u17a0\u17b6",
+      "\u1780\u1789\u17d2\u1789\u17b6",
+      "\u178f\u17bb\u179b\u17b6",
+      "\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6",
+      "\u1792\u17d2\u1793\u17bc"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d/M/yy h:mm a",
+    "shortDate": "d/M/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Riel",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "km",
+  "localeID": "km",
+  "pluralCat": function(n, opt_precision) {  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kn-in.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kn-in.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kn-in.js
new file mode 100644
index 0000000..372dd63
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kn-in.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0caa\u0cc2\u0cb0\u0ccd\u0cb5\u0cbe\u0cb9\u0ccd\u0ca8",
+      "\u0c85\u0caa\u0cb0\u0cbe\u0cb9\u0ccd\u0ca8"
+    ],
+    "DAY": [
+      "\u0cad\u0cbe\u0ca8\u0cc1\u0cb5\u0cbe\u0cb0",
+      "\u0cb8\u0ccb\u0cae\u0cb5\u0cbe\u0cb0",
+      "\u0cae\u0c82\u0c97\u0cb3\u0cb5\u0cbe\u0cb0",
+      "\u0cac\u0cc1\u0ca7\u0cb5\u0cbe\u0cb0",
+      "\u0c97\u0cc1\u0cb0\u0cc1\u0cb5\u0cbe\u0cb0",
+      "\u0cb6\u0cc1\u0c95\u0ccd\u0cb0\u0cb5\u0cbe\u0cb0",
+      "\u0cb6\u0ca8\u0cbf\u0cb5\u0cbe\u0cb0"
+    ],
+    "ERANAMES": [
+      "\u0c95\u0ccd\u0cb0\u0cbf\u0cb8\u0ccd\u0ca4 \u0caa\u0cc2\u0cb0\u0ccd\u0cb5",
+      "\u0c95\u0ccd\u0cb0\u0cbf\u0cb8\u0ccd\u0ca4 \u0cb6\u0c95"
+    ],
+    "ERAS": [
+      "\u0c95\u0ccd\u0cb0\u0cbf.\u0caa\u0cc2",
+      "\u0c95\u0ccd\u0cb0\u0cbf.\u0cb6"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u0c9c\u0ca8\u0cb5\u0cb0\u0cbf",
+      "\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cb5\u0cb0\u0cbf",
+      "\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd",
+      "\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd",
+      "\u0cae\u0cc7",
+      "\u0c9c\u0cc2\u0ca8\u0ccd",
+      "\u0c9c\u0cc1\u0cb2\u0cc8",
+      "\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd",
+      "\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82\u0cac\u0cb0\u0ccd",
+      "\u0c85\u0c95\u0ccd\u0c9f\u0ccb\u0cac\u0cb0\u0ccd",
+      "\u0ca8\u0cb5\u0cc6\u0c82\u0cac\u0cb0\u0ccd",
+      "\u0ca1\u0cbf\u0cb8\u0cc6\u0c82\u0cac\u0cb0\u0ccd"
+    ],
+    "SHORTDAY": [
+      "\u0cad\u0cbe\u0ca8\u0cc1",
+      "\u0cb8\u0ccb\u0cae",
+      "\u0cae\u0c82\u0c97\u0cb3",
+      "\u0cac\u0cc1\u0ca7",
+      "\u0c97\u0cc1\u0cb0\u0cc1",
+      "\u0cb6\u0cc1\u0c95\u0ccd\u0cb0",
+      "\u0cb6\u0ca8\u0cbf"
+    ],
+    "SHORTMONTH": [
+      "\u0c9c\u0ca8",
+      "\u0cab\u0cc6\u0cac\u0ccd\u0cb0",
+      "\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd",
+      "\u0c8f\u0caa\u0ccd\u0cb0\u0cbf",
+      "\u0cae\u0cc7",
+      "\u0c9c\u0cc2\u0ca8\u0ccd",
+      "\u0c9c\u0cc1\u0cb2\u0cc8",
+      "\u0c86\u0c97",
+      "\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82",
+      "\u0c85\u0c95\u0ccd\u0c9f\u0ccb",
+      "\u0ca8\u0cb5\u0cc6\u0c82",
+      "\u0ca1\u0cbf\u0cb8\u0cc6\u0c82"
+    ],
+    "STANDALONEMONTH": [
+      "\u0c9c\u0ca8\u0cb5\u0cb0\u0cbf",
+      "\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cb5\u0cb0\u0cbf",
+      "\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd",
+      "\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd",
+      "\u0cae\u0cc7",
+      "\u0c9c\u0cc2\u0ca8\u0ccd",
+      "\u0c9c\u0cc1\u0cb2\u0cc8",
+      "\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd",
+      "\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82\u0cac\u0cb0\u0ccd",
+      "\u0c85\u0c95\u0ccd\u0c9f\u0ccb\u0cac\u0cb0\u0ccd",
+      "\u0ca8\u0cb5\u0cc6\u0c82\u0cac\u0cb0\u0ccd",
+      "\u0ca1\u0cbf\u0cb8\u0cc6\u0c82\u0cac\u0cb0\u0ccd"
+    ],
+    "WEEKENDRANGE": [
+      6,
+      6
+    ],
+    "fullDate": "EEEE, MMMM d, y",
+    "longDate": "MMMM d, y",
+    "medium": "MMM d, y hh:mm:ss a",
+    "mediumDate": "MMM d, y",
+    "mediumTime": "hh:mm:ss a",
+    "short": "M/d/yy hh:mm a",
+    "shortDate": "M/d/yy",
+    "shortTime": "hh:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20b9",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "kn-in",
+  "localeID": "kn_IN",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kn.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kn.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kn.js
new file mode 100644
index 0000000..2667956
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kn.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0caa\u0cc2\u0cb0\u0ccd\u0cb5\u0cbe\u0cb9\u0ccd\u0ca8",
+      "\u0c85\u0caa\u0cb0\u0cbe\u0cb9\u0ccd\u0ca8"
+    ],
+    "DAY": [
+      "\u0cad\u0cbe\u0ca8\u0cc1\u0cb5\u0cbe\u0cb0",
+      "\u0cb8\u0ccb\u0cae\u0cb5\u0cbe\u0cb0",
+      "\u0cae\u0c82\u0c97\u0cb3\u0cb5\u0cbe\u0cb0",
+      "\u0cac\u0cc1\u0ca7\u0cb5\u0cbe\u0cb0",
+      "\u0c97\u0cc1\u0cb0\u0cc1\u0cb5\u0cbe\u0cb0",
+      "\u0cb6\u0cc1\u0c95\u0ccd\u0cb0\u0cb5\u0cbe\u0cb0",
+      "\u0cb6\u0ca8\u0cbf\u0cb5\u0cbe\u0cb0"
+    ],
+    "ERANAMES": [
+      "\u0c95\u0ccd\u0cb0\u0cbf\u0cb8\u0ccd\u0ca4 \u0caa\u0cc2\u0cb0\u0ccd\u0cb5",
+      "\u0c95\u0ccd\u0cb0\u0cbf\u0cb8\u0ccd\u0ca4 \u0cb6\u0c95"
+    ],
+    "ERAS": [
+      "\u0c95\u0ccd\u0cb0\u0cbf.\u0caa\u0cc2",
+      "\u0c95\u0ccd\u0cb0\u0cbf.\u0cb6"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u0c9c\u0ca8\u0cb5\u0cb0\u0cbf",
+      "\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cb5\u0cb0\u0cbf",
+      "\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd",
+      "\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd",
+      "\u0cae\u0cc7",
+      "\u0c9c\u0cc2\u0ca8\u0ccd",
+      "\u0c9c\u0cc1\u0cb2\u0cc8",
+      "\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd",
+      "\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82\u0cac\u0cb0\u0ccd",
+      "\u0c85\u0c95\u0ccd\u0c9f\u0ccb\u0cac\u0cb0\u0ccd",
+      "\u0ca8\u0cb5\u0cc6\u0c82\u0cac\u0cb0\u0ccd",
+      "\u0ca1\u0cbf\u0cb8\u0cc6\u0c82\u0cac\u0cb0\u0ccd"
+    ],
+    "SHORTDAY": [
+      "\u0cad\u0cbe\u0ca8\u0cc1",
+      "\u0cb8\u0ccb\u0cae",
+      "\u0cae\u0c82\u0c97\u0cb3",
+      "\u0cac\u0cc1\u0ca7",
+      "\u0c97\u0cc1\u0cb0\u0cc1",
+      "\u0cb6\u0cc1\u0c95\u0ccd\u0cb0",
+      "\u0cb6\u0ca8\u0cbf"
+    ],
+    "SHORTMONTH": [
+      "\u0c9c\u0ca8",
+      "\u0cab\u0cc6\u0cac\u0ccd\u0cb0",
+      "\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd",
+      "\u0c8f\u0caa\u0ccd\u0cb0\u0cbf",
+      "\u0cae\u0cc7",
+      "\u0c9c\u0cc2\u0ca8\u0ccd",
+      "\u0c9c\u0cc1\u0cb2\u0cc8",
+      "\u0c86\u0c97",
+      "\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82",
+      "\u0c85\u0c95\u0ccd\u0c9f\u0ccb",
+      "\u0ca8\u0cb5\u0cc6\u0c82",
+      "\u0ca1\u0cbf\u0cb8\u0cc6\u0c82"
+    ],
+    "STANDALONEMONTH": [
+      "\u0c9c\u0ca8\u0cb5\u0cb0\u0cbf",
+      "\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cb5\u0cb0\u0cbf",
+      "\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd",
+      "\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd",
+      "\u0cae\u0cc7",
+      "\u0c9c\u0cc2\u0ca8\u0ccd",
+      "\u0c9c\u0cc1\u0cb2\u0cc8",
+      "\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd",
+      "\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82\u0cac\u0cb0\u0ccd",
+      "\u0c85\u0c95\u0ccd\u0c9f\u0ccb\u0cac\u0cb0\u0ccd",
+      "\u0ca8\u0cb5\u0cc6\u0c82\u0cac\u0cb0\u0ccd",
+      "\u0ca1\u0cbf\u0cb8\u0cc6\u0c82\u0cac\u0cb0\u0ccd"
+    ],
+    "WEEKENDRANGE": [
+      6,
+      6
+    ],
+    "fullDate": "EEEE, MMMM d, y",
+    "longDate": "MMMM d, y",
+    "medium": "MMM d, y hh:mm:ss a",
+    "mediumDate": "MMM d, y",
+    "mediumTime": "hh:mm:ss a",
+    "short": "M/d/yy hh:mm a",
+    "shortDate": "M/d/yy",
+    "shortTime": "hh:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20b9",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "kn",
+  "localeID": "kn",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ko-kp.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ko-kp.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ko-kp.js
new file mode 100644
index 0000000..2763f7b
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ko-kp.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\uc624\uc804",
+      "\uc624\ud6c4"
+    ],
+    "DAY": [
+      "\uc77c\uc694\uc77c",
+      "\uc6d4\uc694\uc77c",
+      "\ud654\uc694\uc77c",
+      "\uc218\uc694\uc77c",
+      "\ubaa9\uc694\uc77c",
+      "\uae08\uc694\uc77c",
+      "\ud1a0\uc694\uc77c"
+    ],
+    "ERANAMES": [
+      "\uae30\uc6d0\uc804",
+      "\uc11c\uae30"
+    ],
+    "ERAS": [
+      "\uae30\uc6d0\uc804",
+      "\uc11c\uae30"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "1\uc6d4",
+      "2\uc6d4",
+      "3\uc6d4",
+      "4\uc6d4",
+      "5\uc6d4",
+      "6\uc6d4",
+      "7\uc6d4",
+      "8\uc6d4",
+      "9\uc6d4",
+      "10\uc6d4",
+      "11\uc6d4",
+      "12\uc6d4"
+    ],
+    "SHORTDAY": [
+      "\uc77c",
+      "\uc6d4",
+      "\ud654",
+      "\uc218",
+      "\ubaa9",
+      "\uae08",
+      "\ud1a0"
+    ],
+    "SHORTMONTH": [
+      "1\uc6d4",
+      "2\uc6d4",
+      "3\uc6d4",
+      "4\uc6d4",
+      "5\uc6d4",
+      "6\uc6d4",
+      "7\uc6d4",
+      "8\uc6d4",
+      "9\uc6d4",
+      "10\uc6d4",
+      "11\uc6d4",
+      "12\uc6d4"
+    ],
+    "STANDALONEMONTH": [
+      "1\uc6d4",
+      "2\uc6d4",
+      "3\uc6d4",
+      "4\uc6d4",
+      "5\uc6d4",
+      "6\uc6d4",
+      "7\uc6d4",
+      "8\uc6d4",
+      "9\uc6d4",
+      "10\uc6d4",
+      "11\uc6d4",
+      "12\uc6d4"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "y\ub144 M\uc6d4 d\uc77c EEEE",
+    "longDate": "y\ub144 M\uc6d4 d\uc77c",
+    "medium": "y. M. d. a h:mm:ss",
+    "mediumDate": "y. M. d.",
+    "mediumTime": "a h:mm:ss",
+    "short": "yy. M. d. a h:mm",
+    "shortDate": "yy. M. d.",
+    "shortTime": "a h:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20a9KP",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ko-kp",
+  "localeID": "ko_KP",
+  "pluralCat": function(n, opt_precision) {  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ko-kr.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ko-kr.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ko-kr.js
new file mode 100644
index 0000000..016c523
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ko-kr.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\uc624\uc804",
+      "\uc624\ud6c4"
+    ],
+    "DAY": [
+      "\uc77c\uc694\uc77c",
+      "\uc6d4\uc694\uc77c",
+      "\ud654\uc694\uc77c",
+      "\uc218\uc694\uc77c",
+      "\ubaa9\uc694\uc77c",
+      "\uae08\uc694\uc77c",
+      "\ud1a0\uc694\uc77c"
+    ],
+    "ERANAMES": [
+      "\uae30\uc6d0\uc804",
+      "\uc11c\uae30"
+    ],
+    "ERAS": [
+      "\uae30\uc6d0\uc804",
+      "\uc11c\uae30"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "1\uc6d4",
+      "2\uc6d4",
+      "3\uc6d4",
+      "4\uc6d4",
+      "5\uc6d4",
+      "6\uc6d4",
+      "7\uc6d4",
+      "8\uc6d4",
+      "9\uc6d4",
+      "10\uc6d4",
+      "11\uc6d4",
+      "12\uc6d4"
+    ],
+    "SHORTDAY": [
+      "\uc77c",
+      "\uc6d4",
+      "\ud654",
+      "\uc218",
+      "\ubaa9",
+      "\uae08",
+      "\ud1a0"
+    ],
+    "SHORTMONTH": [
+      "1\uc6d4",
+      "2\uc6d4",
+      "3\uc6d4",
+      "4\uc6d4",
+      "5\uc6d4",
+      "6\uc6d4",
+      "7\uc6d4",
+      "8\uc6d4",
+      "9\uc6d4",
+      "10\uc6d4",
+      "11\uc6d4",
+      "12\uc6d4"
+    ],
+    "STANDALONEMONTH": [
+      "1\uc6d4",
+      "2\uc6d4",
+      "3\uc6d4",
+      "4\uc6d4",
+      "5\uc6d4",
+      "6\uc6d4",
+      "7\uc6d4",
+      "8\uc6d4",
+      "9\uc6d4",
+      "10\uc6d4",
+      "11\uc6d4",
+      "12\uc6d4"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "y\ub144 M\uc6d4 d\uc77c EEEE",
+    "longDate": "y\ub144 M\uc6d4 d\uc77c",
+    "medium": "y. M. d. a h:mm:ss",
+    "mediumDate": "y. M. d.",
+    "mediumTime": "a h:mm:ss",
+    "short": "yy. M. d. a h:mm",
+    "shortDate": "yy. M. d.",
+    "shortTime": "a h:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20a9",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ko-kr",
+  "localeID": "ko_KR",
+  "pluralCat": function(n, opt_precision) {  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ko.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ko.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ko.js
new file mode 100644
index 0000000..d3ff9ee
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ko.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\uc624\uc804",
+      "\uc624\ud6c4"
+    ],
+    "DAY": [
+      "\uc77c\uc694\uc77c",
+      "\uc6d4\uc694\uc77c",
+      "\ud654\uc694\uc77c",
+      "\uc218\uc694\uc77c",
+      "\ubaa9\uc694\uc77c",
+      "\uae08\uc694\uc77c",
+      "\ud1a0\uc694\uc77c"
+    ],
+    "ERANAMES": [
+      "\uae30\uc6d0\uc804",
+      "\uc11c\uae30"
+    ],
+    "ERAS": [
+      "\uae30\uc6d0\uc804",
+      "\uc11c\uae30"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "1\uc6d4",
+      "2\uc6d4",
+      "3\uc6d4",
+      "4\uc6d4",
+      "5\uc6d4",
+      "6\uc6d4",
+      "7\uc6d4",
+      "8\uc6d4",
+      "9\uc6d4",
+      "10\uc6d4",
+      "11\uc6d4",
+      "12\uc6d4"
+    ],
+    "SHORTDAY": [
+      "\uc77c",
+      "\uc6d4",
+      "\ud654",
+      "\uc218",
+      "\ubaa9",
+      "\uae08",
+      "\ud1a0"
+    ],
+    "SHORTMONTH": [
+      "1\uc6d4",
+      "2\uc6d4",
+      "3\uc6d4",
+      "4\uc6d4",
+      "5\uc6d4",
+      "6\uc6d4",
+      "7\uc6d4",
+      "8\uc6d4",
+      "9\uc6d4",
+      "10\uc6d4",
+      "11\uc6d4",
+      "12\uc6d4"
+    ],
+    "STANDALONEMONTH": [
+      "1\uc6d4",
+      "2\uc6d4",
+      "3\uc6d4",
+      "4\uc6d4",
+      "5\uc6d4",
+      "6\uc6d4",
+      "7\uc6d4",
+      "8\uc6d4",
+      "9\uc6d4",
+      "10\uc6d4",
+      "11\uc6d4",
+      "12\uc6d4"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "y\ub144 M\uc6d4 d\uc77c EEEE",
+    "longDate": "y\ub144 M\uc6d4 d\uc77c",
+    "medium": "y. M. d. a h:mm:ss",
+    "mediumDate": "y. M. d.",
+    "mediumTime": "a h:mm:ss",
+    "short": "yy. M. d. a h:mm",
+    "shortDate": "yy. M. d.",
+    "shortTime": "a h:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20a9",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ko",
+  "localeID": "ko",
+  "pluralCat": function(n, opt_precision) {  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kok-in.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kok-in.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kok-in.js
new file mode 100644
index 0000000..abfcd60
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_kok-in.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u092e.\u092a\u0942.",
+      "\u092e.\u0928\u0902."
+    ],
+    "DAY": [
+      "\u0906\u0926\u093f\u0924\u094d\u092f\u0935\u093e\u0930",
+      "\u0938\u094b\u092e\u0935\u093e\u0930",
+      "\u092e\u0902\u0917\u0933\u093e\u0930",
+      "\u092c\u0941\u0927\u0935\u093e\u0930",
+      "\u0917\u0941\u0930\u0941\u0935\u093e\u0930",
+      "\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930",
+      "\u0936\u0928\u093f\u0935\u093e\u0930"
+    ],
+    "ERANAMES": [
+      "\u0915\u094d\u0930\u093f\u0938\u094d\u0924\u092a\u0942\u0930\u094d\u0935",
+      "\u0915\u094d\u0930\u093f\u0938\u094d\u0924\u0936\u0916\u093e"
+    ],
+    "ERAS": [
+      "\u0915\u094d\u0930\u093f\u0938\u094d\u0924\u092a\u0942\u0930\u094d\u0935",
+      "\u0915\u094d\u0930\u093f\u0938\u094d\u0924\u0936\u0916\u093e"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940",
+      "\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940",
+      "\u092e\u093e\u0930\u094d\u091a",
+      "\u090f\u092a\u094d\u0930\u093f\u0932",
+      "\u092e\u0947",
+      "\u091c\u0942\u0928",
+      "\u091c\u0941\u0932\u0948",
+      "\u0913\u0917\u0938\u094d\u091f",
+      "\u0938\u0947\u092a\u094d\u091f\u0947\u0902\u092c\u0930",
+      "\u0913\u0915\u094d\u091f\u094b\u092c\u0930",
+      "\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930",
+      "\u0921\u093f\u0938\u0947\u0902\u092c\u0930"
+    ],
+    "SHORTDAY": [
+      "\u0930\u0935\u093f",
+      "\u0938\u094b\u092e",
+      "\u092e\u0902\u0917\u0933",
+      "\u092c\u0941\u0927",
+      "\u0917\u0941\u0930\u0941",
+      "\u0936\u0941\u0915\u094d\u0930",
+      "\u0936\u0928\u093f"
+    ],
+    "SHORTMONTH": [
+      "\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940",
+      "\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940",
+      "\u092e\u093e\u0930\u094d\u091a",
+      "\u090f\u092a\u094d\u0930\u093f\u0932",
+      "\u092e\u0947",
+      "\u091c\u0942\u0928",
+      "\u091c\u0941\u0932\u0948",
+      "\u0913\u0917\u0938\u094d\u091f",
+      "\u0938\u0947\u092a\u094d\u091f\u0947\u0902\u092c\u0930",
+      "\u0913\u0915\u094d\u091f\u094b\u092c\u0930",
+      "\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930",
+      "\u0921\u093f\u0938\u0947\u0902\u092c\u0930"
+    ],
+    "STANDALONEMONTH": [
+      "\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940",
+      "\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940",
+      "\u092e\u093e\u0930\u094d\u091a",
+      "\u090f\u092a\u094d\u0930\u093f\u0932",
+      "\u092e\u0947",
+      "\u091c\u0942\u0928",
+      "\u091c\u0941\u0932\u0948",
+      "\u0913\u0917\u0938\u094d\u091f",
+      "\u0938\u0947\u092a\u094d\u091f\u0947\u0902\u092c\u0930",
+      "\u0913\u0915\u094d\u091f\u094b\u092c\u0930",
+      "\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930",
+      "\u0921\u093f\u0938\u0947\u0902\u092c\u0930"
+    ],
+    "WEEKENDRANGE": [
+      6,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "dd-MM-y h:mm:ss a",
+    "mediumDate": "dd-MM-y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d-M-yy h:mm a",
+    "shortDate": "d-M-yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u20b9",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 2,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "kok-in",
+  "localeID": "kok_IN",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);



[32/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-route.min.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-route.min.js b/rocketmq-console/src/main/resources/static/vendor/angular/angular-route.min.js
new file mode 100644
index 0000000..7bacd21
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-route.min.js
@@ -0,0 +1,15 @@
+/*
+ AngularJS v1.5.6
+ (c) 2010-2016 Google, Inc. http://angularjs.org
+ License: MIT
+*/
+(function(C,d){'use strict';function w(s,h,f){return{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(a,e,b,g,y){function k(){n&&(f.cancel(n),n=null);l&&(l.$destroy(),l=null);m&&(n=f.leave(m),n.then(function(){n=null}),m=null)}function z(){var b=s.current&&s.current.locals;if(d.isDefined(b&&b.$template)){var b=a.$new(),g=s.current;m=y(b,function(b){f.enter(b,null,m||e).then(function(){!d.isDefined(u)||u&&!a.$eval(u)||h()});k()});l=g.scope=b;l.$emit("$viewContentLoaded");
+l.$eval(r)}else k()}var l,m,n,u=b.autoscroll,r=b.onload||"";a.$on("$routeChangeSuccess",z);z()}}}function v(d,h,f){return{restrict:"ECA",priority:-400,link:function(a,e){var b=f.current,g=b.locals;e.html(g.$template);var y=d(e.contents());if(b.controller){g.$scope=a;var k=h(b.controller,g);b.controllerAs&&(a[b.controllerAs]=k);e.data("$ngControllerController",k);e.children().data("$ngControllerController",k)}a[b.resolveAs||"$resolve"]=g;y(a)}}}var r=d.module("ngRoute",["ng"]).provider("$route",function(){function s(a,
+e){return d.extend(Object.create(a),e)}function h(a,d){var b=d.caseInsensitiveMatch,g={originalPath:a,regexp:a},f=g.keys=[];a=a.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)(\*\?|[\?\*])?/g,function(a,d,b,e){a="?"===e||"*?"===e?"?":null;e="*"===e||"*?"===e?"*":null;f.push({name:b,optional:!!a});d=d||"";return""+(a?"":d)+"(?:"+(a?d:"")+(e&&"(.+?)"||"([^/]+)")+(a||"")+")"+(a||"")}).replace(/([\/$\*])/g,"\\$1");g.regexp=new RegExp("^"+a+"$",b?"i":"");return g}var f={};this.when=function(a,e){var b=
+d.copy(e);d.isUndefined(b.reloadOnSearch)&&(b.reloadOnSearch=!0);d.isUndefined(b.caseInsensitiveMatch)&&(b.caseInsensitiveMatch=this.caseInsensitiveMatch);f[a]=d.extend(b,a&&h(a,b));if(a){var g="/"==a[a.length-1]?a.substr(0,a.length-1):a+"/";f[g]=d.extend({redirectTo:a},h(g,b))}return this};this.caseInsensitiveMatch=!1;this.otherwise=function(a){"string"===typeof a&&(a={redirectTo:a});this.when(null,a);return this};this.$get=["$rootScope","$location","$routeParams","$q","$injector","$templateRequest",
+"$sce",function(a,e,b,g,h,k,r){function l(q){var c=t.current;(A=(p=w())&&c&&p.$$route===c.$$route&&d.equals(p.pathParams,c.pathParams)&&!p.reloadOnSearch&&!x)||!c&&!p||a.$broadcast("$routeChangeStart",p,c).defaultPrevented&&q&&q.preventDefault()}function m(){var q=t.current,c=p;if(A)q.params=c.params,d.copy(q.params,b),a.$broadcast("$routeUpdate",q);else if(c||q)x=!1,(t.current=c)&&c.redirectTo&&(d.isString(c.redirectTo)?e.path(v(c.redirectTo,c.params)).search(c.params).replace():e.url(c.redirectTo(c.pathParams,
+e.path(),e.search())).replace()),g.when(c).then(n).then(function(e){c==t.current&&(c&&(c.locals=e,d.copy(c.params,b)),a.$broadcast("$routeChangeSuccess",c,q))},function(d){c==t.current&&a.$broadcast("$routeChangeError",c,q,d)})}function n(a){if(a){var c=d.extend({},a.resolve);d.forEach(c,function(a,b){c[b]=d.isString(a)?h.get(a):h.invoke(a,null,null,b)});a=u(a);d.isDefined(a)&&(c.$template=a);return g.all(c)}}function u(a){var c,b;d.isDefined(c=a.template)?d.isFunction(c)&&(c=c(a.params)):d.isDefined(b=
+a.templateUrl)&&(d.isFunction(b)&&(b=b(a.params)),d.isDefined(b)&&(a.loadedTemplateUrl=r.valueOf(b),c=k(b)));return c}function w(){var a,c;d.forEach(f,function(b,g){var f;if(f=!c){var h=e.path();f=b.keys;var l={};if(b.regexp)if(h=b.regexp.exec(h)){for(var k=1,n=h.length;k<n;++k){var m=f[k-1],p=h[k];m&&p&&(l[m.name]=p)}f=l}else f=null;else f=null;f=a=f}f&&(c=s(b,{params:d.extend({},e.search(),a),pathParams:a}),c.$$route=b)});return c||f[null]&&s(f[null],{params:{},pathParams:{}})}function v(a,b){var e=
+[];d.forEach((a||"").split(":"),function(a,d){if(0===d)e.push(a);else{var f=a.match(/(\w+)(?:[?*])?(.*)/),g=f[1];e.push(b[g]);e.push(f[2]||"");delete b[g]}});return e.join("")}var x=!1,p,A,t={routes:f,reload:function(){x=!0;var b={defaultPrevented:!1,preventDefault:function(){this.defaultPrevented=!0;x=!1}};a.$evalAsync(function(){l(b);b.defaultPrevented||m()})},updateParams:function(a){if(this.current&&this.current.$$route)a=d.extend({},this.current.params,a),e.path(v(this.current.$$route.originalPath,
+a)),e.search(a);else throw B("norout");}};a.$on("$locationChangeStart",l);a.$on("$locationChangeSuccess",m);return t}]}),B=d.$$minErr("ngRoute");r.provider("$routeParams",function(){this.$get=function(){return{}}});r.directive("ngView",w);r.directive("ngView",v);w.$inject=["$route","$anchorScroll","$animate"];v.$inject=["$compile","$controller","$route"]})(window,window.angular);
+//# sourceMappingURL=angular-route.min.js.map

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-route.min.js.map
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-route.min.js.map b/rocketmq-console/src/main/resources/static/vendor/angular/angular-route.min.js.map
new file mode 100644
index 0000000..5eeff24
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-route.min.js.map
@@ -0,0 +1,8 @@
+{
+"version":3,
+"file":"angular-route.min.js",
+"lineCount":14,
+"mappings":"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",
+"sources":["angular-route.js"],
+"names":["window","angular","ngViewFactory","$route","$anchorScroll","$animate","restrict","terminal","priority","transclude","link","scope","$element","attr","ctrl","$transclude","cleanupLastView","previousLeaveAnimation","cancel","currentScope","$destroy","currentElement","leave","then","update","locals","current","isDefined","$template","newScope","$new","clone","enter","onNgViewEnter","autoScrollExp","$eval","$emit","onloadExp","autoscroll","onload","$on","ngViewFillContentFactory","$compile","$controller","html","contents","controller","$scope","controllerAs","data","children","resolveAs","ngRouteModule","module","provider","$RouteProvider","inherit","parent","extra","extend","Object","create","pathRegExp","path","opts","insensitive","caseInsensitiveMatch","ret","originalPath","regexp","keys","replace","_","slash","key","option","optional","star","push","name","RegExp","routes","when","this.when","route","routeCopy","copy","isUndefined","reloadOnSearch","redirectPath","length",
 "substr","redirectTo","otherwise","this.otherwise","params","$get","$rootScope","$location","$routeParams","$q","$injector","$templateRequest","$sce","prepareRoute","$locationEvent","lastRoute","preparedRouteIsUpdateOnly","preparedRoute","parseRoute","$$route","equals","pathParams","forceReload","$broadcast","defaultPrevented","preventDefault","commitRoute","nextRoute","isString","interpolate","search","url","resolveLocals","error","resolve","forEach","value","get","invoke","template","getTemplateFor","all","templateUrl","isFunction","loadedTemplateUrl","valueOf","match","m","exec","on","i","len","val","string","result","split","segment","segmentMatch","join","reload","fakeLocationEvent","fakePreventDefault","$evalAsync","updateParams","newParams","$routeMinErr","$$minErr","$RouteParamsProvider","this.$get","directive","$inject"]
+}

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-sanitize.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-sanitize.js b/rocketmq-console/src/main/resources/static/vendor/angular/angular-sanitize.js
new file mode 100644
index 0000000..d2f3e37
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-sanitize.js
@@ -0,0 +1,717 @@
+/**
+ * @license AngularJS v1.5.6
+ * (c) 2010-2016 Google, Inc. http://angularjs.org
+ * License: MIT
+ */
+(function(window, angular) {'use strict';
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *     Any commits to this file should be reviewed with security in mind.  *
+ *   Changes to this file can potentially create security vulnerabilities. *
+ *          An approval from 2 Core members with history of modifying      *
+ *                         this file is required.                          *
+ *                                                                         *
+ *  Does the change somehow allow for arbitrary javascript to be executed? *
+ *    Or allows for someone to change the prototype of built-in objects?   *
+ *     Or gives undesired access to variables likes document or window?    *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+var $sanitizeMinErr = angular.$$minErr('$sanitize');
+
+/**
+ * @ngdoc module
+ * @name ngSanitize
+ * @description
+ *
+ * # ngSanitize
+ *
+ * The `ngSanitize` module provides functionality to sanitize HTML.
+ *
+ *
+ * <div doc-module-components="ngSanitize"></div>
+ *
+ * See {@link ngSanitize.$sanitize `$sanitize`} for usage.
+ */
+
+/**
+ * @ngdoc service
+ * @name $sanitize
+ * @kind function
+ *
+ * @description
+ *   Sanitizes an html string by stripping all potentially dangerous tokens.
+ *
+ *   The input is sanitized by parsing the HTML into tokens. All safe tokens (from a whitelist) are
+ *   then serialized back to properly escaped html string. This means that no unsafe input can make
+ *   it into the returned string.
+ *
+ *   The whitelist for URL sanitization of attribute values is configured using the functions
+ *   `aHrefSanitizationWhitelist` and `imgSrcSanitizationWhitelist` of {@link ng.$compileProvider
+ *   `$compileProvider`}.
+ *
+ *   The input may also contain SVG markup if this is enabled via {@link $sanitizeProvider}.
+ *
+ * @param {string} html HTML input.
+ * @returns {string} Sanitized HTML.
+ *
+ * @example
+   <example module="sanitizeExample" deps="angular-sanitize.js">
+   <file name="index.html">
+     <script>
+         angular.module('sanitizeExample', ['ngSanitize'])
+           .controller('ExampleController', ['$scope', '$sce', function($scope, $sce) {
+             $scope.snippet =
+               '<p style="color:blue">an html\n' +
+               '<em onmouseover="this.textContent=\'PWN3D!\'">click here</em>\n' +
+               'snippet</p>';
+             $scope.deliberatelyTrustDangerousSnippet = function() {
+               return $sce.trustAsHtml($scope.snippet);
+             };
+           }]);
+     </script>
+     <div ng-controller="ExampleController">
+        Snippet: <textarea ng-model="snippet" cols="60" rows="3"></textarea>
+       <table>
+         <tr>
+           <td>Directive</td>
+           <td>How</td>
+           <td>Source</td>
+           <td>Rendered</td>
+         </tr>
+         <tr id="bind-html-with-sanitize">
+           <td>ng-bind-html</td>
+           <td>Automatically uses $sanitize</td>
+           <td><pre>&lt;div ng-bind-html="snippet"&gt;<br/>&lt;/div&gt;</pre></td>
+           <td><div ng-bind-html="snippet"></div></td>
+         </tr>
+         <tr id="bind-html-with-trust">
+           <td>ng-bind-html</td>
+           <td>Bypass $sanitize by explicitly trusting the dangerous value</td>
+           <td>
+           <pre>&lt;div ng-bind-html="deliberatelyTrustDangerousSnippet()"&gt;
+&lt;/div&gt;</pre>
+           </td>
+           <td><div ng-bind-html="deliberatelyTrustDangerousSnippet()"></div></td>
+         </tr>
+         <tr id="bind-default">
+           <td>ng-bind</td>
+           <td>Automatically escapes</td>
+           <td><pre>&lt;div ng-bind="snippet"&gt;<br/>&lt;/div&gt;</pre></td>
+           <td><div ng-bind="snippet"></div></td>
+         </tr>
+       </table>
+       </div>
+   </file>
+   <file name="protractor.js" type="protractor">
+     it('should sanitize the html snippet by default', function() {
+       expect(element(by.css('#bind-html-with-sanitize div')).getInnerHtml()).
+         toBe('<p>an html\n<em>click here</em>\nsnippet</p>');
+     });
+
+     it('should inline raw snippet if bound to a trusted value', function() {
+       expect(element(by.css('#bind-html-with-trust div')).getInnerHtml()).
+         toBe("<p style=\"color:blue\">an html\n" +
+              "<em onmouseover=\"this.textContent='PWN3D!'\">click here</em>\n" +
+              "snippet</p>");
+     });
+
+     it('should escape snippet without any filter', function() {
+       expect(element(by.css('#bind-default div')).getInnerHtml()).
+         toBe("&lt;p style=\"color:blue\"&gt;an html\n" +
+              "&lt;em onmouseover=\"this.textContent='PWN3D!'\"&gt;click here&lt;/em&gt;\n" +
+              "snippet&lt;/p&gt;");
+     });
+
+     it('should update', function() {
+       element(by.model('snippet')).clear();
+       element(by.model('snippet')).sendKeys('new <b onclick="alert(1)">text</b>');
+       expect(element(by.css('#bind-html-with-sanitize div')).getInnerHtml()).
+         toBe('new <b>text</b>');
+       expect(element(by.css('#bind-html-with-trust div')).getInnerHtml()).toBe(
+         'new <b onclick="alert(1)">text</b>');
+       expect(element(by.css('#bind-default div')).getInnerHtml()).toBe(
+         "new &lt;b onclick=\"alert(1)\"&gt;text&lt;/b&gt;");
+     });
+   </file>
+   </example>
+ */
+
+
+/**
+ * @ngdoc provider
+ * @name $sanitizeProvider
+ *
+ * @description
+ * Creates and configures {@link $sanitize} instance.
+ */
+function $SanitizeProvider() {
+  var svgEnabled = false;
+
+  this.$get = ['$$sanitizeUri', function($$sanitizeUri) {
+    if (svgEnabled) {
+      angular.extend(validElements, svgElements);
+    }
+    return function(html) {
+      var buf = [];
+      htmlParser(html, htmlSanitizeWriter(buf, function(uri, isImage) {
+        return !/^unsafe:/.test($$sanitizeUri(uri, isImage));
+      }));
+      return buf.join('');
+    };
+  }];
+
+
+  /**
+   * @ngdoc method
+   * @name $sanitizeProvider#enableSvg
+   * @kind function
+   *
+   * @description
+   * Enables a subset of svg to be supported by the sanitizer.
+   *
+   * <div class="alert alert-warning">
+   *   <p>By enabling this setting without taking other precautions, you might expose your
+   *   application to click-hijacking attacks. In these attacks, sanitized svg elements could be positioned
+   *   outside of the containing element and be rendered over other elements on the page (e.g. a login
+   *   link). Such behavior can then result in phishing incidents.</p>
+   *
+   *   <p>To protect against these, explicitly setup `overflow: hidden` css rule for all potential svg
+   *   tags within the sanitized content:</p>
+   *
+   *   <br>
+   *
+   *   <pre><code>
+   *   .rootOfTheIncludedContent svg {
+   *     overflow: hidden !important;
+   *   }
+   *   </code></pre>
+   * </div>
+   *
+   * @param {boolean=} flag Enable or disable SVG support in the sanitizer.
+   * @returns {boolean|ng.$sanitizeProvider} Returns the currently configured value if called
+   *    without an argument or self for chaining otherwise.
+   */
+  this.enableSvg = function(enableSvg) {
+    if (angular.isDefined(enableSvg)) {
+      svgEnabled = enableSvg;
+      return this;
+    } else {
+      return svgEnabled;
+    }
+  };
+}
+
+function sanitizeText(chars) {
+  var buf = [];
+  var writer = htmlSanitizeWriter(buf, angular.noop);
+  writer.chars(chars);
+  return buf.join('');
+}
+
+
+// Regular Expressions for parsing tags and attributes
+var SURROGATE_PAIR_REGEXP = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
+  // Match everything outside of normal chars and " (quote character)
+  NON_ALPHANUMERIC_REGEXP = /([^\#-~ |!])/g;
+
+
+// Good source of info about elements and attributes
+// http://dev.w3.org/html5/spec/Overview.html#semantics
+// http://simon.html5.org/html-elements
+
+// Safe Void Elements - HTML5
+// http://dev.w3.org/html5/spec/Overview.html#void-elements
+var voidElements = toMap("area,br,col,hr,img,wbr");
+
+// Elements that you can, intentionally, leave open (and which close themselves)
+// http://dev.w3.org/html5/spec/Overview.html#optional-tags
+var optionalEndTagBlockElements = toMap("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),
+    optionalEndTagInlineElements = toMap("rp,rt"),
+    optionalEndTagElements = angular.extend({},
+                                            optionalEndTagInlineElements,
+                                            optionalEndTagBlockElements);
+
+// Safe Block Elements - HTML5
+var blockElements = angular.extend({}, optionalEndTagBlockElements, toMap("address,article," +
+        "aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5," +
+        "h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,section,table,ul"));
+
+// Inline Elements - HTML5
+var inlineElements = angular.extend({}, optionalEndTagInlineElements, toMap("a,abbr,acronym,b," +
+        "bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s," +
+        "samp,small,span,strike,strong,sub,sup,time,tt,u,var"));
+
+// SVG Elements
+// https://wiki.whatwg.org/wiki/Sanitization_rules#svg_Elements
+// Note: the elements animate,animateColor,animateMotion,animateTransform,set are intentionally omitted.
+// They can potentially allow for arbitrary javascript to be executed. See #11290
+var svgElements = toMap("circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph," +
+        "hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline," +
+        "radialGradient,rect,stop,svg,switch,text,title,tspan");
+
+// Blocked Elements (will be stripped)
+var blockedElements = toMap("script,style");
+
+var validElements = angular.extend({},
+                                   voidElements,
+                                   blockElements,
+                                   inlineElements,
+                                   optionalEndTagElements);
+
+//Attributes that have href and hence need to be sanitized
+var uriAttrs = toMap("background,cite,href,longdesc,src,xlink:href");
+
+var htmlAttrs = toMap('abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,' +
+    'color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,' +
+    'ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,' +
+    'scope,scrolling,shape,size,span,start,summary,tabindex,target,title,type,' +
+    'valign,value,vspace,width');
+
+// SVG attributes (without "id" and "name" attributes)
+// https://wiki.whatwg.org/wiki/Sanitization_rules#svg_Attributes
+var svgAttrs = toMap('accent-height,accumulate,additive,alphabetic,arabic-form,ascent,' +
+    'baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,' +
+    'cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,' +
+    'font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,' +
+    'height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,' +
+    'marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,' +
+    'max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,' +
+    'path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,' +
+    'requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,' +
+    'stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,' +
+    'stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,' +
+    'stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,' +
+    'underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,' +
+    'width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,' +
+    'xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan', true);
+
+var validAttrs = angular.extend({},
+                                uriAttrs,
+                                svgAttrs,
+                                htmlAttrs);
+
+function toMap(str, lowercaseKeys) {
+  var obj = {}, items = str.split(','), i;
+  for (i = 0; i < items.length; i++) {
+    obj[lowercaseKeys ? angular.lowercase(items[i]) : items[i]] = true;
+  }
+  return obj;
+}
+
+var inertBodyElement;
+(function(window) {
+  var doc;
+  if (window.document && window.document.implementation) {
+    doc = window.document.implementation.createHTMLDocument("inert");
+  } else {
+    throw $sanitizeMinErr('noinert', "Can't create an inert html document");
+  }
+  var docElement = doc.documentElement || doc.getDocumentElement();
+  var bodyElements = docElement.getElementsByTagName('body');
+
+  // usually there should be only one body element in the document, but IE doesn't have any, so we need to create one
+  if (bodyElements.length === 1) {
+    inertBodyElement = bodyElements[0];
+  } else {
+    var html = doc.createElement('html');
+    inertBodyElement = doc.createElement('body');
+    html.appendChild(inertBodyElement);
+    doc.appendChild(html);
+  }
+})(window);
+
+/**
+ * @example
+ * htmlParser(htmlString, {
+ *     start: function(tag, attrs) {},
+ *     end: function(tag) {},
+ *     chars: function(text) {},
+ *     comment: function(text) {}
+ * });
+ *
+ * @param {string} html string
+ * @param {object} handler
+ */
+function htmlParser(html, handler) {
+  if (html === null || html === undefined) {
+    html = '';
+  } else if (typeof html !== 'string') {
+    html = '' + html;
+  }
+  inertBodyElement.innerHTML = html;
+
+  //mXSS protection
+  var mXSSAttempts = 5;
+  do {
+    if (mXSSAttempts === 0) {
+      throw $sanitizeMinErr('uinput', "Failed to sanitize html because the input is unstable");
+    }
+    mXSSAttempts--;
+
+    // strip custom-namespaced attributes on IE<=11
+    if (window.document.documentMode) {
+      stripCustomNsAttrs(inertBodyElement);
+    }
+    html = inertBodyElement.innerHTML; //trigger mXSS
+    inertBodyElement.innerHTML = html;
+  } while (html !== inertBodyElement.innerHTML);
+
+  var node = inertBodyElement.firstChild;
+  while (node) {
+    switch (node.nodeType) {
+      case 1: // ELEMENT_NODE
+        handler.start(node.nodeName.toLowerCase(), attrToMap(node.attributes));
+        break;
+      case 3: // TEXT NODE
+        handler.chars(node.textContent);
+        break;
+    }
+
+    var nextNode;
+    if (!(nextNode = node.firstChild)) {
+      if (node.nodeType == 1) {
+        handler.end(node.nodeName.toLowerCase());
+      }
+      nextNode = node.nextSibling;
+      if (!nextNode) {
+        while (nextNode == null) {
+          node = node.parentNode;
+          if (node === inertBodyElement) break;
+          nextNode = node.nextSibling;
+          if (node.nodeType == 1) {
+            handler.end(node.nodeName.toLowerCase());
+          }
+        }
+      }
+    }
+    node = nextNode;
+  }
+
+  while (node = inertBodyElement.firstChild) {
+    inertBodyElement.removeChild(node);
+  }
+}
+
+function attrToMap(attrs) {
+  var map = {};
+  for (var i = 0, ii = attrs.length; i < ii; i++) {
+    var attr = attrs[i];
+    map[attr.name] = attr.value;
+  }
+  return map;
+}
+
+
+/**
+ * Escapes all potentially dangerous characters, so that the
+ * resulting string can be safely inserted into attribute or
+ * element text.
+ * @param value
+ * @returns {string} escaped text
+ */
+function encodeEntities(value) {
+  return value.
+    replace(/&/g, '&amp;').
+    replace(SURROGATE_PAIR_REGEXP, function(value) {
+      var hi = value.charCodeAt(0);
+      var low = value.charCodeAt(1);
+      return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';';
+    }).
+    replace(NON_ALPHANUMERIC_REGEXP, function(value) {
+      return '&#' + value.charCodeAt(0) + ';';
+    }).
+    replace(/</g, '&lt;').
+    replace(/>/g, '&gt;');
+}
+
+/**
+ * create an HTML/XML writer which writes to buffer
+ * @param {Array} buf use buf.join('') to get out sanitized html string
+ * @returns {object} in the form of {
+ *     start: function(tag, attrs) {},
+ *     end: function(tag) {},
+ *     chars: function(text) {},
+ *     comment: function(text) {}
+ * }
+ */
+function htmlSanitizeWriter(buf, uriValidator) {
+  var ignoreCurrentElement = false;
+  var out = angular.bind(buf, buf.push);
+  return {
+    start: function(tag, attrs) {
+      tag = angular.lowercase(tag);
+      if (!ignoreCurrentElement && blockedElements[tag]) {
+        ignoreCurrentElement = tag;
+      }
+      if (!ignoreCurrentElement && validElements[tag] === true) {
+        out('<');
+        out(tag);
+        angular.forEach(attrs, function(value, key) {
+          var lkey=angular.lowercase(key);
+          var isImage = (tag === 'img' && lkey === 'src') || (lkey === 'background');
+          if (validAttrs[lkey] === true &&
+            (uriAttrs[lkey] !== true || uriValidator(value, isImage))) {
+            out(' ');
+            out(key);
+            out('="');
+            out(encodeEntities(value));
+            out('"');
+          }
+        });
+        out('>');
+      }
+    },
+    end: function(tag) {
+      tag = angular.lowercase(tag);
+      if (!ignoreCurrentElement && validElements[tag] === true && voidElements[tag] !== true) {
+        out('</');
+        out(tag);
+        out('>');
+      }
+      if (tag == ignoreCurrentElement) {
+        ignoreCurrentElement = false;
+      }
+    },
+    chars: function(chars) {
+      if (!ignoreCurrentElement) {
+        out(encodeEntities(chars));
+      }
+    }
+  };
+}
+
+
+/**
+ * When IE9-11 comes across an unknown namespaced attribute e.g. 'xlink:foo' it adds 'xmlns:ns1' attribute to declare
+ * ns1 namespace and prefixes the attribute with 'ns1' (e.g. 'ns1:xlink:foo'). This is undesirable since we don't want
+ * to allow any of these custom attributes. This method strips them all.
+ *
+ * @param node Root element to process
+ */
+function stripCustomNsAttrs(node) {
+  if (node.nodeType === window.Node.ELEMENT_NODE) {
+    var attrs = node.attributes;
+    for (var i = 0, l = attrs.length; i < l; i++) {
+      var attrNode = attrs[i];
+      var attrName = attrNode.name.toLowerCase();
+      if (attrName === 'xmlns:ns1' || attrName.lastIndexOf('ns1:', 0) === 0) {
+        node.removeAttributeNode(attrNode);
+        i--;
+        l--;
+      }
+    }
+  }
+
+  var nextNode = node.firstChild;
+  if (nextNode) {
+    stripCustomNsAttrs(nextNode);
+  }
+
+  nextNode = node.nextSibling;
+  if (nextNode) {
+    stripCustomNsAttrs(nextNode);
+  }
+}
+
+
+
+// define ngSanitize module and register $sanitize service
+angular.module('ngSanitize', []).provider('$sanitize', $SanitizeProvider);
+
+/* global sanitizeText: false */
+
+/**
+ * @ngdoc filter
+ * @name linky
+ * @kind function
+ *
+ * @description
+ * Finds links in text input and turns them into html links. Supports `http/https/ftp/mailto` and
+ * plain email address links.
+ *
+ * Requires the {@link ngSanitize `ngSanitize`} module to be installed.
+ *
+ * @param {string} text Input text.
+ * @param {string} target Window (`_blank|_self|_parent|_top`) or named frame to open links in.
+ * @param {object|function(url)} [attributes] Add custom attributes to the link element.
+ *
+ *    Can be one of:
+ *
+ *    - `object`: A map of attributes
+ *    - `function`: Takes the url as a parameter and returns a map of attributes
+ *
+ *    If the map of attributes contains a value for `target`, it overrides the value of
+ *    the target parameter.
+ *
+ *
+ * @returns {string} Html-linkified and {@link $sanitize sanitized} text.
+ *
+ * @usage
+   <span ng-bind-html="linky_expression | linky"></span>
+ *
+ * @example
+   <example module="linkyExample" deps="angular-sanitize.js">
+     <file name="index.html">
+       <div ng-controller="ExampleController">
+       Snippet: <textarea ng-model="snippet" cols="60" rows="3"></textarea>
+       <table>
+         <tr>
+           <th>Filter</th>
+           <th>Source</th>
+           <th>Rendered</th>
+         </tr>
+         <tr id="linky-filter">
+           <td>linky filter</td>
+           <td>
+             <pre>&lt;div ng-bind-html="snippet | linky"&gt;<br>&lt;/div&gt;</pre>
+           </td>
+           <td>
+             <div ng-bind-html="snippet | linky"></div>
+           </td>
+         </tr>
+         <tr id="linky-target">
+          <td>linky target</td>
+          <td>
+            <pre>&lt;div ng-bind-html="snippetWithSingleURL | linky:'_blank'"&gt;<br>&lt;/div&gt;</pre>
+          </td>
+          <td>
+            <div ng-bind-html="snippetWithSingleURL | linky:'_blank'"></div>
+          </td>
+         </tr>
+         <tr id="linky-custom-attributes">
+          <td>linky custom attributes</td>
+          <td>
+            <pre>&lt;div ng-bind-html="snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}"&gt;<br>&lt;/div&gt;</pre>
+          </td>
+          <td>
+            <div ng-bind-html="snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}"></div>
+          </td>
+         </tr>
+         <tr id="escaped-html">
+           <td>no filter</td>
+           <td><pre>&lt;div ng-bind="snippet"&gt;<br>&lt;/div&gt;</pre></td>
+           <td><div ng-bind="snippet"></div></td>
+         </tr>
+       </table>
+     </file>
+     <file name="script.js">
+       angular.module('linkyExample', ['ngSanitize'])
+         .controller('ExampleController', ['$scope', function($scope) {
+           $scope.snippet =
+             'Pretty text with some links:\n'+
+             'http://angularjs.org/,\n'+
+             'mailto:us@somewhere.org,\n'+
+             'another@somewhere.org,\n'+
+             'and one more: ftp://127.0.0.1/.';
+           $scope.snippetWithSingleURL = 'http://angularjs.org/';
+         }]);
+     </file>
+     <file name="protractor.js" type="protractor">
+       it('should linkify the snippet with urls', function() {
+         expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()).
+             toBe('Pretty text with some links: http://angularjs.org/, us@somewhere.org, ' +
+                  'another@somewhere.org, and one more: ftp://127.0.0.1/.');
+         expect(element.all(by.css('#linky-filter a')).count()).toEqual(4);
+       });
+
+       it('should not linkify snippet without the linky filter', function() {
+         expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText()).
+             toBe('Pretty text with some links: http://angularjs.org/, mailto:us@somewhere.org, ' +
+                  'another@somewhere.org, and one more: ftp://127.0.0.1/.');
+         expect(element.all(by.css('#escaped-html a')).count()).toEqual(0);
+       });
+
+       it('should update', function() {
+         element(by.model('snippet')).clear();
+         element(by.model('snippet')).sendKeys('new http://link.');
+         expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()).
+             toBe('new http://link.');
+         expect(element.all(by.css('#linky-filter a')).count()).toEqual(1);
+         expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText())
+             .toBe('new http://link.');
+       });
+
+       it('should work with the target property', function() {
+        expect(element(by.id('linky-target')).
+            element(by.binding("snippetWithSingleURL | linky:'_blank'")).getText()).
+            toBe('http://angularjs.org/');
+        expect(element(by.css('#linky-target a')).getAttribute('target')).toEqual('_blank');
+       });
+
+       it('should optionally add custom attributes', function() {
+        expect(element(by.id('linky-custom-attributes')).
+            element(by.binding("snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}")).getText()).
+            toBe('http://angularjs.org/');
+        expect(element(by.css('#linky-custom-attributes a')).getAttribute('rel')).toEqual('nofollow');
+       });
+     </file>
+   </example>
+ */
+angular.module('ngSanitize').filter('linky', ['$sanitize', function($sanitize) {
+  var LINKY_URL_REGEXP =
+        /((ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"\u201d\u2019]/i,
+      MAILTO_REGEXP = /^mailto:/i;
+
+  var linkyMinErr = angular.$$minErr('linky');
+  var isString = angular.isString;
+
+  return function(text, target, attributes) {
+    if (text == null || text === '') return text;
+    if (!isString(text)) throw linkyMinErr('notstring', 'Expected string but received: {0}', text);
+
+    var match;
+    var raw = text;
+    var html = [];
+    var url;
+    var i;
+    while ((match = raw.match(LINKY_URL_REGEXP))) {
+      // We can not end in these as they are sometimes found at the end of the sentence
+      url = match[0];
+      // if we did not match ftp/http/www/mailto then assume mailto
+      if (!match[2] && !match[4]) {
+        url = (match[3] ? 'http://' : 'mailto:') + url;
+      }
+      i = match.index;
+      addText(raw.substr(0, i));
+      addLink(url, match[0].replace(MAILTO_REGEXP, ''));
+      raw = raw.substring(i + match[0].length);
+    }
+    addText(raw);
+    return $sanitize(html.join(''));
+
+    function addText(text) {
+      if (!text) {
+        return;
+      }
+      html.push(sanitizeText(text));
+    }
+
+    function addLink(url, text) {
+      var key;
+      html.push('<a ');
+      if (angular.isFunction(attributes)) {
+        attributes = attributes(url);
+      }
+      if (angular.isObject(attributes)) {
+        for (key in attributes) {
+          html.push(key + '="' + attributes[key] + '" ');
+        }
+      } else {
+        attributes = {};
+      }
+      if (angular.isDefined(target) && !('target' in attributes)) {
+        html.push('target="',
+                  target,
+                  '" ');
+      }
+      html.push('href="',
+                url.replace(/"/g, '&quot;'),
+                '">');
+      addText(text);
+      html.push('</a>');
+    }
+  };
+}]);
+
+
+})(window, window.angular);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-sanitize.min.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-sanitize.min.js b/rocketmq-console/src/main/resources/static/vendor/angular/angular-sanitize.min.js
new file mode 100644
index 0000000..637f535
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-sanitize.min.js
@@ -0,0 +1,15 @@
+/*
+ AngularJS v1.5.6
+ (c) 2010-2016 Google, Inc. http://angularjs.org
+ License: MIT
+*/
+(function(n,e){'use strict';function B(a){var c=[];w(c,e.noop).chars(a);return c.join("")}function h(a,c){var b={},d=a.split(","),l;for(l=0;l<d.length;l++)b[c?e.lowercase(d[l]):d[l]]=!0;return b}function C(a,c){null===a||void 0===a?a="":"string"!==typeof a&&(a=""+a);g.innerHTML=a;var b=5;do{if(0===b)throw x("uinput");b--;n.document.documentMode&&t(g);a=g.innerHTML;g.innerHTML=a}while(a!==g.innerHTML);for(b=g.firstChild;b;){switch(b.nodeType){case 1:c.start(b.nodeName.toLowerCase(),D(b.attributes));
+break;case 3:c.chars(b.textContent)}var d;if(!(d=b.firstChild)&&(1==b.nodeType&&c.end(b.nodeName.toLowerCase()),d=b.nextSibling,!d))for(;null==d;){b=b.parentNode;if(b===g)break;d=b.nextSibling;1==b.nodeType&&c.end(b.nodeName.toLowerCase())}b=d}for(;b=g.firstChild;)g.removeChild(b)}function D(a){for(var c={},b=0,d=a.length;b<d;b++){var l=a[b];c[l.name]=l.value}return c}function y(a){return a.replace(/&/g,"&amp;").replace(E,function(a){var b=a.charCodeAt(0);a=a.charCodeAt(1);return"&#"+(1024*(b-55296)+
+(a-56320)+65536)+";"}).replace(F,function(a){return"&#"+a.charCodeAt(0)+";"}).replace(/</g,"&lt;").replace(/>/g,"&gt;")}function w(a,c){var b=!1,d=e.bind(a,a.push);return{start:function(a,f){a=e.lowercase(a);!b&&G[a]&&(b=a);b||!0!==u[a]||(d("<"),d(a),e.forEach(f,function(b,f){var g=e.lowercase(f),h="img"===a&&"src"===g||"background"===g;!0!==H[g]||!0===z[g]&&!c(b,h)||(d(" "),d(f),d('="'),d(y(b)),d('"'))}),d(">"))},end:function(a){a=e.lowercase(a);b||!0!==u[a]||!0===A[a]||(d("</"),d(a),d(">"));a==
+b&&(b=!1)},chars:function(a){b||d(y(a))}}}function t(a){if(a.nodeType===n.Node.ELEMENT_NODE)for(var c=a.attributes,b=0,d=c.length;b<d;b++){var e=c[b],f=e.name.toLowerCase();if("xmlns:ns1"===f||0===f.lastIndexOf("ns1:",0))a.removeAttributeNode(e),b--,d--}(c=a.firstChild)&&t(c);(c=a.nextSibling)&&t(c)}var x=e.$$minErr("$sanitize"),E=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,F=/([^\#-~ |!])/g,A=h("area,br,col,hr,img,wbr"),q=h("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),k=h("rp,rt"),v=e.extend({},k,q),
+q=e.extend({},q,h("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,section,table,ul")),k=e.extend({},k,h("a,abbr,acronym,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var")),I=h("circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph,hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline,radialGradient,rect,stop,svg,switch,text,title,tspan"),
+G=h("script,style"),u=e.extend({},A,q,k,v),z=h("background,cite,href,longdesc,src,xlink:href"),v=h("abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,scope,scrolling,shape,size,span,start,summary,tabindex,target,title,type,valign,value,vspace,width"),k=h("accent-height,accumulate,additive,alphabetic,arabic-form,ascent,baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,path,pathLengt
 h,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan",
+!0),H=e.extend({},z,k,v),g;(function(a){if(a.document&&a.document.implementation)a=a.document.implementation.createHTMLDocument("inert");else throw x("noinert");var c=(a.documentElement||a.getDocumentElement()).getElementsByTagName("body");1===c.length?g=c[0]:(c=a.createElement("html"),g=a.createElement("body"),c.appendChild(g),a.appendChild(c))})(n);e.module("ngSanitize",[]).provider("$sanitize",function(){var a=!1;this.$get=["$$sanitizeUri",function(c){a&&e.extend(u,I);return function(a){var d=
+[];C(a,w(d,function(a,b){return!/^unsafe:/.test(c(a,b))}));return d.join("")}}];this.enableSvg=function(c){return e.isDefined(c)?(a=c,this):a}});e.module("ngSanitize").filter("linky",["$sanitize",function(a){var c=/((ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"\u201d\u2019]/i,b=/^mailto:/i,d=e.$$minErr("linky"),g=e.isString;return function(f,h,m){function k(a){a&&p.push(B(a))}function q(a,b){var c;p.push("<a ");e.isFunction(m)&&(m=m(a));if(e.isObject(m))for(c in m)p.push(c+
+'="'+m[c]+'" ');else m={};!e.isDefined(h)||"target"in m||p.push('target="',h,'" ');p.push('href="',a.replace(/"/g,"&quot;"),'">');k(b);p.push("</a>")}if(null==f||""===f)return f;if(!g(f))throw d("notstring",f);for(var r=f,p=[],s,n;f=r.match(c);)s=f[0],f[2]||f[4]||(s=(f[3]?"http://":"mailto:")+s),n=f.index,k(r.substr(0,n)),q(s,f[0].replace(b,"")),r=r.substring(n+f[0].length);k(r);return a(p.join(""))}}])})(window,window.angular);
+//# sourceMappingURL=angular-sanitize.min.js.map

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular-sanitize.min.js.map
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular-sanitize.min.js.map b/rocketmq-console/src/main/resources/static/vendor/angular/angular-sanitize.min.js.map
new file mode 100644
index 0000000..efc2cff
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular-sanitize.min.js.map
@@ -0,0 +1,8 @@
+{
+"version":3,
+"file":"angular-sanitize.min.js",
+"lineCount":14,
+"mappings":"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",
+"sources":["angular-sanitize.js"],
+"names":["window","angular","sanitizeText","chars","buf","htmlSanitizeWriter","writer","noop","join","toMap","str","lowercaseKeys","obj","items","split","i","length","lowercase","htmlParser","html","handler","undefined","inertBodyElement","innerHTML","mXSSAttempts","$sanitizeMinErr","document","documentMode","stripCustomNsAttrs","node","firstChild","nodeType","start","nodeName","toLowerCase","attrToMap","attributes","textContent","nextNode","end","nextSibling","parentNode","removeChild","attrs","map","ii","attr","name","value","encodeEntities","replace","SURROGATE_PAIR_REGEXP","hi","charCodeAt","low","NON_ALPHANUMERIC_REGEXP","uriValidator","ignoreCurrentElement","out","bind","push","tag","blockedElements","validElements","forEach","key","lkey","isImage","validAttrs","uriAttrs","voidElements","Node","ELEMENT_NODE","l","attrNode","attrName","lastIndexOf","removeAttributeNode","$$minErr","optionalEndTagBlockElements","optionalEndTagInlineElements","optionalEndTagElements","extend","bl
 ockElements","inlineElements","svgElements","htmlAttrs","svgAttrs","implementation","doc","createHTMLDocument","bodyElements","getElementsByTagName","documentElement","getDocumentElement","createElement","appendChild","module","provider","$SanitizeProvider","svgEnabled","$get","$$sanitizeUri","uri","test","enableSvg","this.enableSvg","isDefined","filter","$sanitize","LINKY_URL_REGEXP","MAILTO_REGEXP","linkyMinErr","isString","text","target","addText","addLink","url","isFunction","isObject","raw","match","index","substr","substring"]
+}


[44/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular-material/angular-material.min.css
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular-material/angular-material.min.css b/rocketmq-console/src/main/resources/static/vendor/angular-material/angular-material.min.css
new file mode 100644
index 0000000..9bdf8c1
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular-material/angular-material.min.css
@@ -0,0 +1,16862 @@
+/*!
+ * Angular Material Design
+ * https://github.com/angular/material
+ * @license MIT
+ * v1.1.0-rc2
+ */
+body, html {
+    height: 100%;
+    position: relative
+}
+
+body {
+    margin: 0;
+    padding: 0
+}
+
+[tabindex='-1']:focus {
+    outline: 0
+}
+
+.inset {
+    padding: 10px
+}
+
+a._md-no-style, button._md-no-style {
+    font-weight: 400;
+    background-color: inherit;
+    text-align: left;
+    border: none;
+    padding: 0;
+    margin: 0
+}
+
+button, input, select, textarea {
+    vertical-align: baseline
+}
+
+button, html input[type=button], input[type=reset], input[type=submit] {
+    cursor: pointer;
+    -webkit-appearance: button
+}
+
+button[disabled], html input[type=button][disabled], input[type=reset][disabled], input[type=submit][disabled] {
+    cursor: default
+}
+
+textarea {
+    vertical-align: top;
+    overflow: auto
+}
+
+input[type=search] {
+    -webkit-appearance: textfield;
+    box-sizing: content-box;
+    -webkit-box-sizing: content-box
+}
+
+input[type=search]::-webkit-search-cancel-button, input[type=search]::-webkit-search-decoration {
+    -webkit-appearance: none
+}
+
+input:-webkit-autofill {
+    text-shadow: none
+}
+
+._md-visually-hidden {
+    border: 0;
+    clip: rect(0 0 0 0);
+    height: 1px;
+    margin: -1px;
+    overflow: hidden;
+    padding: 0;
+    position: absolute;
+    text-transform: none;
+    width: 1px
+}
+
+.md-shadow {
+    position: absolute;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: 0;
+    border-radius: inherit;
+    pointer-events: none
+}
+
+.md-shadow-bottom-z-1 {
+    box-shadow: 0 2px 5px 0 rgba(0, 0, 0, .26)
+}
+
+.md-shadow-bottom-z-2 {
+    box-shadow: 0 4px 8px 0 rgba(0, 0, 0, .4)
+}
+
+.md-shadow-animated.md-shadow {
+    transition: box-shadow .28s cubic-bezier(.4, 0, .2, 1)
+}
+
+.md-ripple-container {
+    pointer-events: none;
+    position: absolute;
+    overflow: hidden;
+    left: 0;
+    top: 0;
+    width: 100%;
+    height: 100%;
+    transition: all .55s cubic-bezier(.25, .8, .25, 1)
+}
+
+.md-ripple {
+    position: absolute;
+    -webkit-transform: translate(-50%, -50%) scale(0);
+    transform: translate(-50%, -50%) scale(0);
+    -webkit-transform-origin: 50% 50%;
+    transform-origin: 50% 50%;
+    opacity: 0;
+    border-radius: 50%
+}
+
+.md-ripple.md-ripple-placed {
+    transition: margin .9s cubic-bezier(.25, .8, .25, 1), border .9s cubic-bezier(.25, .8, .25, 1), width .9s cubic-bezier(.25, .8, .25, 1), height .9s cubic-bezier(.25, .8, .25, 1), opacity .9s cubic-bezier(.25, .8, .25, 1), -webkit-transform .9s cubic-bezier(.25, .8, .25, 1);
+    transition: margin .9s cubic-bezier(.25, .8, .25, 1), border .9s cubic-bezier(.25, .8, .25, 1), width .9s cubic-bezier(.25, .8, .25, 1), height .9s cubic-bezier(.25, .8, .25, 1), opacity .9s cubic-bezier(.25, .8, .25, 1), transform .9s cubic-bezier(.25, .8, .25, 1)
+}
+
+.md-ripple.md-ripple-scaled {
+    -webkit-transform: translate(-50%, -50%) scale(1);
+    transform: translate(-50%, -50%) scale(1)
+}
+
+.md-ripple.md-ripple-active, .md-ripple.md-ripple-full, .md-ripple.md-ripple-visible {
+    opacity: .2
+}
+
+.md-padding {
+    padding: 8px
+}
+
+.md-margin {
+    margin: 8px
+}
+
+.md-scroll-mask {
+    position: absolute;
+    background-color: transparent;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0
+}
+
+.md-scroll-mask > .md-scroll-mask-bar {
+    display: block;
+    position: absolute;
+    background-color: #fafafa;
+    right: 0;
+    top: 0;
+    bottom: 0;
+    z-index: 65;
+    box-shadow: inset 0 0 1px rgba(0, 0, 0, .3)
+}
+
+@media (min-width: 960px) {
+    .md-padding {
+        padding: 16px
+    }
+}
+
+body[dir=ltr], body[dir=rtl], html[dir=ltr], html[dir=rtl] {
+    unicode-bidi: embed
+}
+
+bdo[dir=rtl] {
+    direction: rtl;
+    unicode-bidi: bidi-override
+}
+
+bdo[dir=ltr] {
+    direction: ltr;
+    unicode-bidi: bidi-override
+}
+
+body, html {
+    -webkit-tap-highlight-color: transparent;
+    -webkit-touch-callout: none;
+    min-height: 100%;
+    -webkit-text-size-adjust: 100%;
+    -ms-text-size-adjust: 100%;
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale
+}
+
+.md-display-4 {
+    font-size: 112px;
+    font-weight: 300;
+    letter-spacing: -.010em;
+    line-height: 112px
+}
+
+.md-display-3 {
+    font-size: 56px;
+    font-weight: 400;
+    letter-spacing: -.005em;
+    line-height: 56px
+}
+
+.md-display-2 {
+    font-size: 45px;
+    font-weight: 400;
+    line-height: 64px
+}
+
+.md-display-1 {
+    font-size: 34px;
+    font-weight: 400;
+    line-height: 40px
+}
+
+.md-headline {
+    font-size: 24px;
+    font-weight: 400;
+    line-height: 32px
+}
+
+.md-title {
+    font-size: 20px;
+    font-weight: 500;
+    letter-spacing: .005em
+}
+
+.md-subhead {
+    font-size: 16px;
+    font-weight: 400;
+    letter-spacing: .010em;
+    line-height: 24px
+}
+
+.md-body-1 {
+    font-size: 14px;
+    font-weight: 400;
+    letter-spacing: .010em;
+    line-height: 20px
+}
+
+.md-body-2 {
+    font-size: 14px;
+    font-weight: 500;
+    letter-spacing: .010em;
+    line-height: 24px
+}
+
+.md-caption {
+    font-size: 12px;
+    letter-spacing: .020em
+}
+
+.md-button {
+    letter-spacing: .010em
+}
+
+button, html, input, select, textarea {
+    font-family: Roboto, "Helvetica Neue", sans-serif
+}
+
+button, input, select, textarea {
+    font-size: 100%
+}
+
+@-webkit-keyframes md-autocomplete-list-out {
+    0% {
+        -webkit-animation-timing-function: linear;
+        animation-timing-function: linear
+    }
+    50% {
+        opacity: 0;
+        height: 40px;
+        -webkit-animation-timing-function: ease-in;
+        animation-timing-function: ease-in
+    }
+    100% {
+        height: 0;
+        opacity: 0
+    }
+}
+
+@keyframes md-autocomplete-list-out {
+    0% {
+        -webkit-animation-timing-function: linear;
+        animation-timing-function: linear
+    }
+    50% {
+        opacity: 0;
+        height: 40px;
+        -webkit-animation-timing-function: ease-in;
+        animation-timing-function: ease-in
+    }
+    100% {
+        height: 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes md-autocomplete-list-in {
+    0% {
+        opacity: 0;
+        height: 0;
+        -webkit-animation-timing-function: ease-out;
+        animation-timing-function: ease-out
+    }
+    50% {
+        opacity: 0;
+        height: 40px
+    }
+    100% {
+        opacity: 1;
+        height: 40px
+    }
+}
+
+@keyframes md-autocomplete-list-in {
+    0% {
+        opacity: 0;
+        height: 0;
+        -webkit-animation-timing-function: ease-out;
+        animation-timing-function: ease-out
+    }
+    50% {
+        opacity: 0;
+        height: 40px
+    }
+    100% {
+        opacity: 1;
+        height: 40px
+    }
+}
+
+md-autocomplete {
+    border-radius: 2px;
+    display: block;
+    height: 40px;
+    position: relative;
+    overflow: visible;
+    min-width: 190px
+}
+
+md-autocomplete[disabled] input {
+    cursor: default
+}
+
+md-autocomplete[md-floating-label] {
+    border-radius: 0;
+    background: 0 0;
+    height: auto
+}
+
+md-autocomplete[md-floating-label] md-input-container {
+    padding-bottom: 0
+}
+
+md-autocomplete[md-floating-label] md-autocomplete-wrap {
+    height: auto
+}
+
+md-autocomplete[md-floating-label] button {
+    position: absolute;
+    top: auto;
+    bottom: 0;
+    right: 0;
+    width: 30px;
+    height: 30px
+}
+
+md-autocomplete md-autocomplete-wrap {
+    display: block;
+    position: relative;
+    overflow: visible;
+    height: 40px
+}
+
+md-autocomplete md-autocomplete-wrap.md-menu-showing {
+    z-index: 51
+}
+
+md-autocomplete md-autocomplete-wrap md-progress-linear {
+    position: absolute;
+    bottom: -2px;
+    left: 0
+}
+
+md-autocomplete md-autocomplete-wrap md-progress-linear.md-inline {
+    bottom: 40px;
+    right: 2px;
+    left: 2px;
+    width: auto
+}
+
+md-autocomplete md-autocomplete-wrap md-progress-linear ._md-mode-indeterminate {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 3px;
+    transition: none
+}
+
+md-autocomplete md-autocomplete-wrap md-progress-linear ._md-mode-indeterminate .md-container {
+    transition: none;
+    height: 3px
+}
+
+md-autocomplete md-autocomplete-wrap md-progress-linear ._md-mode-indeterminate.ng-enter {
+    transition: opacity .15s linear
+}
+
+md-autocomplete md-autocomplete-wrap md-progress-linear ._md-mode-indeterminate.ng-enter.ng-enter-active {
+    opacity: 1
+}
+
+md-autocomplete md-autocomplete-wrap md-progress-linear ._md-mode-indeterminate.ng-leave {
+    transition: opacity .15s linear
+}
+
+md-autocomplete md-autocomplete-wrap md-progress-linear ._md-mode-indeterminate.ng-leave.ng-leave-active {
+    opacity: 0
+}
+
+md-autocomplete input:not(.md-input) {
+    font-size: 14px;
+    box-sizing: border-box;
+    border: none;
+    box-shadow: none;
+    outline: 0;
+    background: 0 0;
+    width: 100%;
+    padding: 0 15px;
+    line-height: 40px;
+    height: 40px
+}
+
+md-autocomplete input:not(.md-input)::-ms-clear {
+    display: none
+}
+
+md-autocomplete button {
+    position: relative;
+    line-height: 20px;
+    text-align: center;
+    width: 30px;
+    height: 30px;
+    cursor: pointer;
+    border: none;
+    border-radius: 50%;
+    padding: 0;
+    font-size: 12px;
+    background: 0 0;
+    margin: auto 5px
+}
+
+md-autocomplete button:after {
+    content: '';
+    position: absolute;
+    top: -6px;
+    right: -6px;
+    bottom: -6px;
+    left: -6px;
+    border-radius: 50%;
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    transition: all .4s cubic-bezier(.25, .8, .25, 1)
+}
+
+md-autocomplete button:focus {
+    outline: 0
+}
+
+md-autocomplete button:focus:after {
+    -webkit-transform: scale(1);
+    transform: scale(1);
+    opacity: 1
+}
+
+md-autocomplete button md-icon {
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    -webkit-transform: translate3d(-50%, -50%, 0) scale(.9);
+    transform: translate3d(-50%, -50%, 0) scale(.9)
+}
+
+md-autocomplete button md-icon path {
+    stroke-width: 0
+}
+
+md-autocomplete button.ng-enter {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    transition: -webkit-transform .15s ease-out;
+    transition: transform .15s ease-out
+}
+
+md-autocomplete button.ng-enter.ng-enter-active {
+    -webkit-transform: scale(1);
+    transform: scale(1)
+}
+
+md-autocomplete button.ng-leave {
+    transition: -webkit-transform .15s ease-out;
+    transition: transform .15s ease-out
+}
+
+md-autocomplete button.ng-leave.ng-leave-active {
+    -webkit-transform: scale(0);
+    transform: scale(0)
+}
+
+@media screen and (-ms-high-contrast: active) {
+    md-autocomplete input {
+        border: 1px solid #fff
+    }
+
+    md-autocomplete li:focus {
+        color: #fff
+    }
+}
+
+.md-virtual-repeat-container.md-autocomplete-suggestions-container {
+    position: absolute;
+    box-shadow: 0 2px 5px rgba(0, 0, 0, .25);
+    height: 225.5px;
+    max-height: 225.5px;
+    z-index: 100
+}
+
+.md-virtual-repeat-container.md-not-found {
+    height: 48px
+}
+
+.md-autocomplete-suggestions {
+    margin: 0;
+    list-style: none;
+    padding: 0
+}
+
+.md-autocomplete-suggestions li {
+    font-size: 14px;
+    overflow: hidden;
+    padding: 0 15px;
+    line-height: 48px;
+    height: 48px;
+    transition: background .15s linear;
+    margin: 0;
+    white-space: nowrap;
+    text-overflow: ellipsis
+}
+
+.md-autocomplete-suggestions li:focus {
+    outline: 0
+}
+
+.md-autocomplete-suggestions li:not(.md-not-found-wrapper) {
+    cursor: pointer
+}
+
+@media screen and (-ms-high-contrast: active) {
+    .md-autocomplete-suggestions, md-autocomplete {
+        border: 1px solid #fff
+    }
+}
+
+md-bottom-sheet {
+    position: absolute;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    padding: 8px 16px 88px;
+    z-index: 70;
+    border-top-width: 1px;
+    border-top-style: solid;
+    -webkit-transform: translate3d(0, 80px, 0);
+    transform: translate3d(0, 80px, 0);
+    transition: all .4s cubic-bezier(.25, .8, .25, 1);
+    transition-property: -webkit-transform;
+    transition-property: transform
+}
+
+md-bottom-sheet.md-has-header {
+    padding-top: 0
+}
+
+md-bottom-sheet.ng-enter {
+    opacity: 0;
+    -webkit-transform: translate3d(0, 100%, 0);
+    transform: translate3d(0, 100%, 0)
+}
+
+md-bottom-sheet.ng-enter-active {
+    opacity: 1;
+    display: block;
+    -webkit-transform: translate3d(0, 80px, 0) !important;
+    transform: translate3d(0, 80px, 0) !important
+}
+
+md-bottom-sheet.ng-leave-active {
+    -webkit-transform: translate3d(0, 100%, 0) !important;
+    transform: translate3d(0, 100%, 0) !important;
+    transition: all .3s cubic-bezier(.55, 0, .55, .2)
+}
+
+md-bottom-sheet .md-subheader {
+    background-color: transparent;
+    font-family: Roboto, "Helvetica Neue", sans-serif;
+    line-height: 56px;
+    padding: 0;
+    white-space: nowrap
+}
+
+md-bottom-sheet md-inline-icon {
+    display: inline-block;
+    height: 24px;
+    width: 24px;
+    fill: #444
+}
+
+md-bottom-sheet md-list-item {
+    display: -webkit-flex;
+    display: -ms-flexbox;
+    display: flex;
+    outline: 0
+}
+
+md-bottom-sheet md-list-item:hover {
+    cursor: pointer
+}
+
+md-bottom-sheet.md-list md-list-item {
+    padding: 0;
+    -webkit-align-items: center;
+    -ms-flex-align: center;
+    align-items: center;
+    height: 48px
+}
+
+md-bottom-sheet.md-grid {
+    padding-left: 24px;
+    padding-right: 24px;
+    padding-top: 0
+}
+
+md-bottom-sheet.md-grid md-list {
+    display: -webkit-flex;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-flex-direction: row;
+    -ms-flex-direction: row;
+    flex-direction: row;
+    -webkit-flex-wrap: wrap;
+    -ms-flex-wrap: wrap;
+    flex-wrap: wrap;
+    transition: all .5s;
+    -webkit-align-items: center;
+    -ms-flex-align: center;
+    align-items: center
+}
+
+md-bottom-sheet.md-grid md-list-item {
+    -webkit-flex-direction: column;
+    -ms-flex-direction: column;
+    flex-direction: column;
+    -webkit-align-items: center;
+    -ms-flex-align: center;
+    align-items: center;
+    transition: all .5s;
+    height: 96px;
+    margin-top: 8px;
+    margin-bottom: 8px
+}
+
+@media (max-width: 960px) {
+    md-bottom-sheet.md-grid md-list-item {
+        -webkit-flex: 1 1 33.33333%;
+        -ms-flex: 1 1 33.33333%;
+        flex: 1 1 33.33333%;
+        max-width: 33.33333%
+    }
+
+    md-bottom-sheet.md-grid md-list-item:nth-of-type(3n+1) {
+        -webkit-align-items: flex-start;
+        -ms-flex-align: start;
+        align-items: flex-start
+    }
+
+    md-bottom-sheet.md-grid md-list-item:nth-of-type(3n) {
+        -webkit-align-items: flex-end;
+        -ms-flex-align: end;
+        align-items: flex-end
+    }
+}
+
+@media (min-width: 960px) and (max-width: 1279px) {
+    md-bottom-sheet.md-grid md-list-item {
+        -webkit-flex: 1 1 25%;
+        -ms-flex: 1 1 25%;
+        flex: 1 1 25%;
+        max-width: 25%
+    }
+}
+
+@media (min-width: 1280px) and (max-width: 1919px) {
+    md-bottom-sheet.md-grid md-list-item {
+        -webkit-flex: 1 1 16.66667%;
+        -ms-flex: 1 1 16.66667%;
+        flex: 1 1 16.66667%;
+        max-width: 16.66667%
+    }
+}
+
+@media (min-width: 1920px) {
+    md-bottom-sheet.md-grid md-list-item {
+        -webkit-flex: 1 1 14.28571%;
+        -ms-flex: 1 1 14.28571%;
+        flex: 1 1 14.28571%;
+        max-width: 14.28571%
+    }
+}
+
+md-bottom-sheet.md-grid md-list-item .md-list-item-content {
+    display: -webkit-flex;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-flex-direction: column;
+    -ms-flex-direction: column;
+    flex-direction: column;
+    -webkit-align-items: center;
+    -ms-flex-align: center;
+    align-items: center;
+    width: 48px;
+    padding-bottom: 16px
+}
+
+md-bottom-sheet.md-grid md-list-item .md-grid-item-content {
+    border: 1px solid transparent;
+    display: -webkit-flex;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-flex-direction: column;
+    -ms-flex-direction: column;
+    flex-direction: column;
+    -webkit-align-items: center;
+    -ms-flex-align: center;
+    align-items: center;
+    width: 80px
+}
+
+md-bottom-sheet.md-grid md-list-item .md-grid-text {
+    font-weight: 400;
+    line-height: 16px;
+    font-size: 13px;
+    margin: 0;
+    white-space: nowrap;
+    width: 64px;
+    text-align: center;
+    text-transform: none;
+    padding-top: 8px
+}
+
+@media screen and (-ms-high-contrast: active) {
+    md-bottom-sheet {
+        border: 1px solid #fff
+    }
+}
+
+md-backdrop {
+    transition: opacity 450ms;
+    position: absolute;
+    top: 0;
+    bottom: 0;
+    left: 0;
+    right: 0;
+    z-index: 50
+}
+
+md-backdrop._md-menu-backdrop {
+    position: fixed !important;
+    z-index: 99
+}
+
+md-backdrop._md-select-backdrop {
+    z-index: 81;
+    transition-duration: 0
+}
+
+md-backdrop._md-dialog-backdrop {
+    z-index: 79
+}
+
+md-backdrop._md-bottom-sheet-backdrop {
+    z-index: 69
+}
+
+md-backdrop._md-sidenav-backdrop {
+    z-index: 59
+}
+
+md-backdrop._md-click-catcher {
+    position: absolute
+}
+
+md-backdrop.md-opaque {
+    opacity: .48
+}
+
+md-backdrop.md-opaque.ng-enter {
+    opacity: 0
+}
+
+md-backdrop.md-opaque.ng-enter.md-opaque.ng-enter-active {
+    opacity: .48
+}
+
+md-backdrop.md-opaque.ng-leave {
+    opacity: .48;
+    transition: opacity 400ms
+}
+
+md-backdrop.md-opaque.ng-leave.md-opaque.ng-leave-active {
+    opacity: 0
+}
+
+button.md-button::-moz-focus-inner {
+    border: 0
+}
+
+.md-button {
+    border-radius: 3px;
+    box-sizing: border-box;
+    color: currentColor;
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none;
+    position: relative;
+    outline: 0;
+    border: 0;
+    display: inline-block;
+    -webkit-align-items: center;
+    -ms-flex-align: center;
+    align-items: center;
+    padding: 0 6px;
+    margin: 6px 8px;
+    line-height: 36px;
+    min-height: 36px;
+    background: 0 0;
+    white-space: nowrap;
+    min-width: 88px;
+    text-align: center;
+    text-transform: uppercase;
+    font-weight: 500;
+    font-size: 14px;
+    font-style: inherit;
+    font-variant: inherit;
+    font-family: inherit;
+    text-decoration: none;
+    cursor: pointer;
+    overflow: hidden;
+    transition: box-shadow .4s cubic-bezier(.25, .8, .25, 1), background-color .4s cubic-bezier(.25, .8, .25, 1)
+}
+
+.md-button:focus {
+    outline: 0
+}
+
+.md-button:focus, .md-button:hover {
+    text-decoration: none
+}
+
+.md-button.ng-hide, .md-button.ng-leave {
+    transition: none
+}
+
+.md-button.md-cornered {
+    border-radius: 0
+}
+
+.md-button.md-icon {
+    padding: 0;
+    background: 0 0
+}
+
+.md-button.md-raised:not([disabled]) {
+    box-shadow: 0 2px 5px 0 rgba(0, 0, 0, .26)
+}
+
+.md-button.md-icon-button {
+    margin: 0 6px;
+    height: 40px;
+    min-width: 0;
+    line-height: 24px;
+    padding: 8px;
+    width: 40px;
+    border-radius: 50%
+}
+
+.md-button.md-icon-button .md-ripple-container {
+    border-radius: 50%;
+    background-clip: padding-box;
+    overflow: hidden;
+    -webkit-mask-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)
+}
+
+.md-button.md-fab {
+    z-index: 20;
+    line-height: 56px;
+    min-width: 0;
+    width: 56px;
+    height: 56px;
+    vertical-align: middle;
+    box-shadow: 0 2px 5px 0 rgba(0, 0, 0, .26);
+    border-radius: 50%;
+    background-clip: padding-box;
+    overflow: hidden;
+    transition: all .3s cubic-bezier(.55, 0, .55, .2);
+    transition-property: background-color, box-shadow, -webkit-transform;
+    transition-property: background-color, box-shadow, transform
+}
+
+.md-button.md-fab.md-fab-bottom-right {
+    top: auto;
+    right: 20px;
+    bottom: 20px;
+    left: auto;
+    position: absolute
+}
+
+.md-button.md-fab.md-fab-bottom-left {
+    top: auto;
+    right: auto;
+    bottom: 20px;
+    left: 20px;
+    position: absolute
+}
+
+.md-button.md-fab.md-fab-top-right {
+    top: 20px;
+    right: 20px;
+    bottom: auto;
+    left: auto;
+    position: absolute
+}
+
+.md-button.md-fab.md-fab-top-left {
+    top: 20px;
+    right: auto;
+    bottom: auto;
+    left: 20px;
+    position: absolute
+}
+
+.md-button.md-fab .md-ripple-container {
+    border-radius: 50%;
+    background-clip: padding-box;
+    overflow: hidden;
+    -webkit-mask-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)
+}
+
+.md-button.md-fab.md-mini {
+    line-height: 40px;
+    width: 40px;
+    height: 40px
+}
+
+.md-button.md-fab.ng-hide, .md-button.md-fab.ng-leave {
+    transition: none
+}
+
+.md-button:not([disabled]).md-fab.md-focused, .md-button:not([disabled]).md-raised.md-focused {
+    box-shadow: 0 2px 5px 0 rgba(0, 0, 0, .26)
+}
+
+.md-button:not([disabled]).md-fab:active, .md-button:not([disabled]).md-raised:active {
+    box-shadow: 0 4px 8px 0 rgba(0, 0, 0, .4)
+}
+
+.md-button .md-ripple-container {
+    border-radius: 3px;
+    background-clip: padding-box;
+    overflow: hidden;
+    -webkit-mask-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)
+}
+
+._md-toast-open-top .md-button.md-fab-top-left, ._md-toast-open-top .md-button.md-fab-top-right {
+    transition: all .4s cubic-bezier(.25, .8, .25, 1);
+    -webkit-transform: translate3d(0, 42px, 0);
+    transform: translate3d(0, 42px, 0)
+}
+
+._md-toast-open-top .md-button.md-fab-top-left:not([disabled]).md-focused, ._md-toast-open-top .md-button.md-fab-top-left:not([disabled]):hover, ._md-toast-open-top .md-button.md-fab-top-right:not([disabled]).md-focused, ._md-toast-open-top .md-button.md-fab-top-right:not([disabled]):hover {
+    -webkit-transform: translate3d(0, 41px, 0);
+    transform: translate3d(0, 41px, 0)
+}
+
+._md-toast-open-bottom .md-button.md-fab-bottom-left, ._md-toast-open-bottom .md-button.md-fab-bottom-right {
+    transition: all .4s cubic-bezier(.25, .8, .25, 1);
+    -webkit-transform: translate3d(0, -42px, 0);
+    transform: translate3d(0, -42px, 0)
+}
+
+._md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]).md-focused, ._md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]):hover, ._md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]).md-focused, ._md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]):hover {
+    -webkit-transform: translate3d(0, -43px, 0);
+    transform: translate3d(0, -43px, 0)
+}
+
+.md-button-group {
+    display: -webkit-flex;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-flex: 1;
+    -ms-flex: 1;
+    flex: 1;
+    width: 100%
+}
+
+.md-button-group > .md-button {
+    -webkit-flex: 1;
+    -ms-flex: 1;
+    flex: 1;
+    display: block;
+    overflow: hidden;
+    width: 0;
+    border-width: 1px 0 1px 1px;
+    border-radius: 0;
+    text-align: center;
+    text-overflow: ellipsis;
+    white-space: nowrap
+}
+
+.md-button-group > .md-button:first-child {
+    border-radius: 2px 0 0 2px
+}
+
+.md-button-group > .md-button:last-child {
+    border-right-width: 1px;
+    border-radius: 0 2px 2px 0
+}
+
+@media screen and (-ms-high-contrast: active) {
+    .md-button.md-fab, .md-button.md-raised {
+        border: 1px solid #fff
+    }
+}
+
+md-card {
+    box-sizing: border-box;
+    display: -webkit-flex;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-flex-direction: column;
+    -ms-flex-direction: column;
+    flex-direction: column;
+    margin: 8px;
+    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 2px 1px -1px rgba(0, 0, 0, .12)
+}
+
+md-card md-card-header {
+    padding: 16px;
+    display: -webkit-flex;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-flex-direction: row;
+    -ms-flex-direction: row;
+    flex-direction: row
+}
+
+md-card md-card-header:first-child md-card-avatar {
+    margin-right: 12px
+}
+
+[dir=rtl] md-card md-card-header:first-child md-card-avatar {
+    margin-right: auto;
+    margin-left: 12px
+}
+
+md-card md-card-header:last-child md-card-avatar {
+    margin-left: 12px
+}
+
+[dir=rtl] md-card md-card-header:last-child md-card-avatar {
+    margin-left: auto;
+    margin-right: 12px
+}
+
+md-card md-card-header md-card-avatar {
+    width: 40px;
+    height: 40px
+}
+
+md-card md-card-header md-card-avatar .md-user-avatar, md-card md-card-header md-card-avatar md-icon {
+    border-radius: 50%
+}
+
+md-card md-card-header md-card-avatar md-icon {
+    padding: 8px
+}
+
+md-card md-card-header md-card-avatar + md-card-header-text {
+    max-height: 40px
+}
+
+md-card md-card-header md-card-avatar + md-card-header-text .md-title {
+    font-size: 14px
+}
+
+md-card md-card-header md-card-header-text {
+    display: -webkit-flex;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-flex: 1;
+    -ms-flex: 1;
+    flex: 1;
+    -webkit-flex-direction: column;
+    -ms-flex-direction: column;
+    flex-direction: column
+}
+
+md-card md-card-header md-card-header-text .md-subhead {
+    font-size: 14px
+}
+
+md-card > :not(md-card-content) img, md-card > img {
+    box-sizing: border-box;
+    display: -webkit-flex;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-flex: 0 0 auto;
+    -ms-flex: 0 0 auto;
+    flex: 0 0 auto;
+    width: 100%;
+    height: 100% !important
+}
+
+md-card md-card-title {
+    padding: 24px 16px 16px;
+    display: -webkit-flex;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-flex: 1 1 auto;
+    -ms-flex: 1 1 auto;
+    flex: 1 1 auto;
+    -webkit-flex-direction: row;
+    -ms-flex-direction: row;
+    flex-direction: row
+}
+
+md-card md-card-title + md-card-content {
+    padding-top: 0
+}
+
+md-card md-card-title md-card-title-text {
+    -webkit-flex: 1;
+    -ms-flex: 1;
+    flex: 1;
+    -webkit-flex-direction: column;
+    -ms-flex-direction: column;
+    flex-direction: column;
+    display: -webkit-flex;
+    display: -ms-flexbox;
+    display: flex
+}
+
+md-card md-card-title md-card-title-text .md-subhead {
+    padding-top: 0;
+    font-size: 14px
+}
+
+md-card md-card-title md-card-title-text:only-child .md-subhead {
+    padding-top: 12px
+}
+
+md-card md-card-title md-card-title-media {
+    margin-top: -8px
+}
+
+md-card md-card-title md-card-title-media .md-media-sm {
+    height: 80px;
+    width: 80px
+}
+
+md-card md-card-title md-card-title-media .md-media-md {
+    height: 112px;
+    width: 112px
+}
+
+md-card md-card-title md-card-title-media .md-media-lg {
+    height: 152px;
+    width: 152px
+}
+
+md-card md-card-content {
+    display: block;
+    padding: 16px
+}
+
+md-card md-card-content > p:first-child {
+    margin-top: 0
+}
+
+md-card md-card-content > p:last-child {
+    margin-bottom: 0
+}
+
+md-card md-card-content .md-media-xl {
+    height: 240px;
+    width: 240px
+}
+
+md-card .md-actions, md-card md-card-actions {
+    margin: 8px
+}
+
+md-card .md-actions.layout-column .md-button:not(.md-icon-button), md-card md-card-actions.layout-column .md-button:not(.md-icon-button) {
+    margin: 2px 0
+}
+
+md-card .md-actions.layout-column .md-button:not(.md-icon-button):first-of-type, md-card md-card-actions.layout-column .md-button:not(.md-icon-button):first-of-type {
+    margin-top: 0
+}
+
+md-card .md-actions.layout-column .md-button:not(.md-icon-button):last-of-type, md-card md-card-actions.layout-column .md-button:not(.md-icon-button):last-of-type {
+    margin-bottom: 0
+}
+
+md-card .md-actions.layout-column .md-button.md-icon-button, md-card md-card-actions.layout-column .md-button.md-icon-button {
+    margin-top: 6px;
+    margin-bottom: 6px
+}
+
+md-card .md-actions md-card-icon-actions, md-card md-card-actions md-card-icon-actions {
+    -webkit-flex: 1;
+    -ms-flex: 1;
+    flex: 1;
+    -webkit-justify-content: flex-start;
+    -ms-flex-pack: start;
+    justify-content: flex-start;
+    display: -webkit-flex;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-flex-direction: row;
+    -ms-flex-direction: row;
+    flex-direction: row
+}
+
+md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button), md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button) {
+    margin: 0 4px
+}
+
+md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type, md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type {
+    margin-left: 0
+}
+
+[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type, [dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type {
+    margin-left: auto;
+    margin-right: 0
+}
+
+md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type, md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type {
+    margin-right: 0
+}
+
+[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type, [dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type {
+    margin-right: auto;
+    margin-left: 0
+}
+
+md-card .md-actions:not(.layout-column) .md-button.md-icon-button, md-card md-card-actions:not(.layout-column) .md-button.md-icon-button {
+    margin-left: 6px;
+    margin-right: 6px
+}
+
+md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type, md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type {
+    margin-left: 12px
+}
+
+[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type, [dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type {
+    margin-left: auto;
+    margin-right: 12px
+}
+
+md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type, md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type {
+    margin-right: 12px
+}
+
+[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type, [dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type {
+    margin-right: auto;
+    margin-left: 12px
+}
+
+md-card .md-actions:not(.layout-column) .md-button + md-card-icon-actions, md-card md-card-actions:not(.layout-column) .md-button + md-card-icon-actions {
+    -webkit-flex: 1;
+    -ms-flex: 1;
+    flex: 1;
+    -webkit-justify-content: flex-end;
+    -ms-flex-pack: end;
+    justify-content: flex-end;
+    display: -webkit-flex;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-flex-direction: row;
+    -ms-flex-direction: row;
+    flex-direction: row
+}
+
+md-card md-card-footer {
+    margin-top: auto;
+    padding: 16px
+}
+
+@media screen and (-ms-high-contrast: active) {
+    md-card {
+        border: 1px solid #fff
+    }
+}
+
+.md-inline-form md-checkbox {
+    margin: 19px 0 18px
+}
+
+md-checkbox {
+    box-sizing: border-box;
+    display: inline-block;
+    margin-bottom: 16px;
+    white-space: nowrap;
+    cursor: pointer;
+    outline: 0;
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none;
+    position: relative;
+    min-width: 20px;
+    min-height: 20px;
+    margin-left: 0;
+    margin-right: 16px
+}
+
+[dir=rtl] md-checkbox {
+    margin-left: 16px;
+    margin-right: 0
+}
+
+md-checkbox:last-of-type {
+    margin-left: 0;
+    margin-right: 0
+}
+
+md-checkbox.md-focused:not([disabled]) ._md-container:before {
+    left: -8px;
+    top: -8px;
+    right: -8px;
+    bottom: -8px
+}
+
+md-checkbox.md-focused:not([disabled]):not(.md-checked) ._md-container:before {
+    background-color: rgba(0, 0, 0, .12)
+}
+
+md-checkbox.md-align-top-left > div._md-container {
+    top: 12px
+}
+
+md-checkbox ._md-container {
+    position: absolute;
+    top: 50%;
+    -webkit-transform: translateY(-50%);
+    transform: translateY(-50%);
+    box-sizing: border-box;
+    display: inline-block;
+    width: 20px;
+    height: 20px;
+    left: 0;
+    right: auto
+}
+
+[dir=rtl] md-checkbox ._md-container {
+    left: auto;
+    right: 0
+}
+
+md-checkbox ._md-container:before {
+    box-sizing: border-box;
+    background-color: transparent;
+    border-radius: 50%;
+    content: '';
+    position: absolute;
+    display: block;
+    height: auto;
+    left: 0;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    transition: all .5s;
+    width: auto
+}
+
+md-checkbox ._md-container:after {
+    box-sizing: border-box;
+    content: '';
+    position: absolute;
+    top: -10px;
+    right: -10px;
+    bottom: -10px;
+    left: -10px
+}
+
+md-checkbox ._md-container .md-ripple-container {
+    position: absolute;
+    display: block;
+    width: auto;
+    height: auto;
+    left: -15px;
+    top: -15px;
+    right: -15px;
+    bottom: -15px
+}
+
+md-checkbox ._md-icon {
+    box-sizing: border-box;
+    transition: 240ms;
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 20px;
+    height: 20px;
+    border-width: 2px;
+    border-style: solid;
+    border-radius: 2px
+}
+
+md-checkbox.md-checked ._md-icon {
+    border: none
+}
+
+md-checkbox.md-checked ._md-icon:after {
+    box-sizing: border-box;
+    -webkit-transform: rotate(45deg);
+    transform: rotate(45deg);
+    position: absolute;
+    left: 6.67px;
+    top: 2.22px;
+    display: table;
+    width: 6.67px;
+    height: 13.33px;
+    border-width: 2px;
+    border-style: solid;
+    border-top: 0;
+    border-left: 0;
+    content: ''
+}
+
+md-checkbox[disabled] {
+    cursor: default
+}
+
+md-checkbox.md-indeterminate ._md-icon:after {
+    box-sizing: border-box;
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    -webkit-transform: translate(-50%, -50%);
+    transform: translate(-50%, -50%);
+    display: table;
+    width: 12px;
+    height: 2px;
+    border-width: 2px;
+    border-style: solid;
+    border-top: 0;
+    border-left: 0;
+    content: ''
+}
+
+md-checkbox ._md-label {
+    box-sizing: border-box;
+    position: relative;
+    display: inline-block;
+    vertical-align: middle;
+    white-space: normal;
+    -webkit-user-select: text;
+    -moz-user-select: text;
+    -ms-user-select: text;
+    user-select: text;
+    margin-left: 30px;
+    margin-right: 0
+}
+
+[dir=rtl] md-checkbox ._md-label {
+    margin-left: 0;
+    margin-right: 30px
+}
+
+.md-contact-chips .md-chips md-chip {
+    padding: 0 25px 0 0
+}
+
+[dir=rtl] .md-contact-chips .md-chips md-chip {
+    padding: 0 0 0 25px
+}
+
+.md-contact-chips .md-chips md-chip .md-contact-avatar {
+    float: left
+}
+
+[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-avatar {
+    float: right
+}
+
+.md-contact-chips .md-chips md-chip .md-contact-avatar img {
+    height: 32px;
+    border-radius: 16px
+}
+
+.md-contact-chips .md-chips md-chip .md-contact-name {
+    display: inline-block;
+    height: 32px;
+    margin-left: 8px
+}
+
+[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-name {
+    margin-left: auto;
+    margin-right: 8px
+}
+
+.md-contact-suggestion {
+    height: 56px
+}
+
+.md-contact-suggestion img {
+    height: 40px;
+    border-radius: 20px;
+    margin-top: 8px
+}
+
+.md-contact-suggestion .md-contact-name {
+    margin-left: 8px;
+    width: 120px
+}
+
+[dir=rtl] .md-contact-suggestion .md-contact-name {
+    margin-left: auto;
+    margin-right: 8px
+}
+
+.md-contact-suggestion .md-contact-email, .md-contact-suggestion .md-contact-name {
+    display: inline-block;
+    overflow: hidden;
+    text-overflow: ellipsis
+}
+
+.md-contact-chips-suggestions li {
+    height: 100%
+}
+
+.md-chips {
+    display: block;
+    font-family: Roboto, "Helvetica Neue", sans-serif;
+    font-size: 16px;
+    padding: 0 0 8px 3px;
+    vertical-align: middle
+}
+
+.md-chips:after {
+    content: '';
+    display: table;
+    clear: both
+}
+
+[dir=rtl] .md-chips {
+    padding: 0 3px 8px 0
+}
+
+.md-chips.md-readonly ._md-chip-input-container {
+    min-height: 32px
+}
+
+.md-chips:not(.md-readonly) {
+    cursor: text
+}
+
+.md-chips:not(.md-readonly) md-chip:not(.md-readonly) {
+    padding-right: 22px
+}
+
+[dir=rtl] .md-chips:not(.md-readonly) md-chip:not(.md-readonly) {
+    padding-right: auto;
+    padding-left: 22px
+}
+
+.md-chips:not(.md-readonly) md-chip:not(.md-readonly) ._md-chip-content {
+    padding-right: 4px
+}
+
+[dir=rtl] .md-chips:not(.md-readonly) md-chip:not(.md-readonly) ._md-chip-content {
+    padding-right: auto;
+    padding-left: 4px
+}
+
+.md-chips md-chip {
+    cursor: default;
+    border-radius: 16px;
+    display: block;
+    height: 32px;
+    line-height: 32px;
+    margin: 8px 8px 0 0;
+    padding: 0 12px;
+    float: left;
+    box-sizing: border-box;
+    max-width: 100%;
+    position: relative
+}
+
+[dir=rtl] .md-chips md-chip {
+    margin: 8px 0 0 8px;
+    float: right
+}
+
+.md-chips md-chip ._md-chip-content {
+    display: block;
+    float: left;
+    white-space: nowrap;
+    max-width: 100%;
+    overflow: hidden;
+    text-overflow: ellipsis
+}
+
+[dir=rtl] .md-chips md-chip ._md-chip-content {
+    float: right
+}
+
+.md-chips md-chip ._md-chip-content:focus {
+    outline: 0
+}
+
+.md-chips md-chip._md-chip-content-edit-is-enabled {
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -khtml-user-select: none;
+    -ms-user-select: none
+}
+
+.md-chips md-chip ._md-chip-remove-container {
+    position: absolute;
+    right: 0;
+    line-height: 22px
+}
+
+[dir=rtl] .md-chips md-chip ._md-chip-remove-container {
+    right: auto;
+    left: 0
+}
+
+.md-chips md-chip ._md-chip-remove {
+    text-align: center;
+    width: 32px;
+    height: 32px;
+    min-width: 0;
+    padding: 0;
+    background: 0 0;
+    border: none;
+    box-shadow: none;
+    margin: 0;
+    position: relative
+}
+
+.md-chips md-chip ._md-chip-remove md-icon {
+    height: 18px;
+    width: 18px;
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    -webkit-transform: translate3d(-50%, -50%, 0);
+    transform: translate3d(-50%, -50%, 0)
+}
+
+.md-chips ._md-chip-input-container {
+    display: block;
+    line-height: 32px;
+    margin: 8px 8px 0 0;
+    padding: 0;
+    float: left
+}
+
+[dir=rtl] .md-chips ._md-chip-input-container {
+    margin: 8px 0 0 8px;
+    float: right
+}
+
+.md-chips ._md-chip-input-container input:not([type]), .md-chips ._md-chip-input-container input[type=url], .md-chips ._md-chip-input-container input[type=text], .md-chips ._md-chip-input-container input[type=email], .md-chips ._md-chip-input-container input[type=number], .md-chips ._md-chip-input-container input[type=tel] {
+    border: 0;
+    height: 32px;
+    line-height: 32px;
+    padding: 0
+}
+
+.md-chips ._md-chip-input-container input:not([type]):focus, .md-chips ._md-chip-input-container input[type=url]:focus, .md-chips ._md-chip-input-container input[type=text]:focus, .md-chips ._md-chip-input-container input[type=email]:focus, .md-chips ._md-chip-input-container input[type=number]:focus, .md-chips ._md-chip-input-container input[type=tel]:focus {
+    outline: 0
+}
+
+.md-chips ._md-chip-input-container md-autocomplete, .md-chips ._md-chip-input-container md-autocomplete-wrap {
+    background: 0 0
+}
+
+.md-chips ._md-chip-input-container md-autocomplete md-autocomplete-wrap {
+    box-shadow: none
+}
+
+.md-chips ._md-chip-input-container input {
+    border: 0;
+    height: 32px;
+    line-height: 32px;
+    padding: 0
+}
+
+.md-chips ._md-chip-input-container input:focus {
+    outline: 0
+}
+
+.md-chips ._md-chip-input-container md-autocomplete, .md-chips ._md-chip-input-container md-autocomplete-wrap {
+    height: 32px
+}
+
+.md-chips ._md-chip-input-container md-autocomplete {
+    box-shadow: none
+}
+
+.md-chips ._md-chip-input-container md-autocomplete input {
+    position: relative
+}
+
+.md-chips ._md-chip-input-container:not(:first-child) {
+    margin: 8px 8px 0 0
+}
+
+[dir=rtl] .md-chips ._md-chip-input-container:not(:first-child) {
+    margin: 8px 0 0 8px
+}
+
+.md-chips ._md-chip-input-container input {
+    background: 0 0;
+    border-width: 0
+}
+
+.md-chips md-autocomplete button {
+    display: none
+}
+
+@media screen and (-ms-high-contrast: active) {
+    ._md-chip-input-container, md-chip {
+        border: 1px solid #fff
+    }
+
+    ._md-chip-input-container md-autocomplete {
+        border: none
+    }
+}
+
+md-content {
+    display: block;
+    position: relative;
+    overflow: auto;
+    -webkit-overflow-scrolling: touch
+}
+
+md-content[md-scroll-y] {
+    overflow-y: auto;
+    overflow-x: hidden
+}
+
+md-content[md-scroll-x] {
+    overflow-x: auto;
+    overflow-y: hidden
+}
+
+md-content.md-no-momentum {
+    -webkit-overflow-scrolling: auto
+}
+
+@media print {
+    md-content {
+        overflow: visible !important
+    }
+}
+
+md-calendar {
+    font-size: 13px;
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none
+}
+
+.md-calendar-scroll-mask {
+    display: inline-block;
+    overflow: hidden;
+    height: 308px
+}
+
+.md-calendar-scroll-mask .md-virtual-repeat-scroller {
+    overflow-y: scroll;
+    -webkit-overflow-scrolling: touch
+}
+
+.md-calendar-scroll-mask .md-virtual-repeat-scroller::-webkit-scrollbar {
+    display: none
+}
+
+.md-calendar-scroll-mask .md-virtual-repeat-offsetter {
+    width: 100%
+}
+
+.md-calendar-scroll-container {
+    box-shadow: inset -3px 3px 6px rgba(0, 0, 0, .2);
+    display: inline-block;
+    height: 308px;
+    width: 346px
+}
+
+.md-calendar-date {
+    height: 44px;
+    width: 44px;
+    text-align: center;
+    padding: 0;
+    border: none
+}
+
+.md-calendar-date:first-child {
+    padding-left: 16px
+}
+
+[dir=rtl] .md-calendar-date:first-child {
+    padding-left: auto;
+    padding-right: 16px
+}
+
+.md-calendar-date:last-child {
+    padding-right: 16px
+}
+
+[dir=rtl] .md-calendar-date:last-child {
+    padding-right: auto;
+    padding-left: 16px
+}
+
+.md-calendar-date.md-calendar-date-disabled {
+    cursor: default
+}
+
+.md-calendar-date-selection-indicator {
+    transition: background-color, color .4s cubic-bezier(.25, .8, .25, 1);
+    border-radius: 50%;
+    display: inline-block;
+    width: 40px;
+    height: 40px;
+    line-height: 40px
+}
+
+.md-calendar-date:not(.md-disabled) .md-calendar-date-selection-indicator {
+    cursor: pointer
+}
+
+.md-calendar-month-label {
+    height: 44px;
+    font-size: 14px;
+    font-weight: 500;
+    padding: 0 0 0 24px
+}
+
+[dir=rtl] .md-calendar-month-label {
+    padding: 0 24px 0 0
+}
+
+.md-calendar-day-header {
+    table-layout: fixed;
+    border-spacing: 0;
+    border-collapse: collapse
+}
+
+.md-calendar-day-header th {
+    width: 44px;
+    text-align: center;
+    padding: 0;
+    border: none;
+    font-weight: 400;
+    height: 40px
+}
+
+.md-calendar-day-header th:first-child {
+    padding-left: 16px
+}
+
+[dir=rtl] .md-calendar-day-header th:first-child {
+    padding-left: auto;
+    padding-right: 16px
+}
+
+.md-calendar-day-header th:last-child {
+    padding-right: 16px
+}
+
+[dir=rtl] .md-calendar-day-header th:last-child {
+    padding-right: auto;
+    padding-left: 16px
+}
+
+.md-calendar {
+    table-layout: fixed;
+    border-spacing: 0;
+    border-collapse: collapse
+}
+
+.md-calendar tr:last-child td {
+    border-bottom-width: 1px;
+    border-bottom-style: solid
+}
+
+.md-calendar:first-child {
+    border-top: 1px solid transparent
+}
+
+.md-calendar tbody, .md-calendar td, .md-calendar tr {
+    vertical-align: middle
+}
+
+md-datepicker {
+    white-space: nowrap;
+    overflow: hidden;
+    padding-right: 18px;
+    margin-right: -18px;
+    vertical-align: middle
+}
+
+[dir=rtl] md-datepicker {
+    padding-right: auto;
+    padding-left: 18px;
+    margin-right: auto;
+    margin-left: -18px
+}
+
+.md-inline-form md-datepicker {
+    margin-top: 12px
+}
+
+.md-datepicker-button {
+    display: inline-block;
+    box-sizing: border-box;
+    background: 0 0
+}
+
+.md-datepicker-input {
+    font-size: 14px;
+    box-sizing: border-box;
+    border: none;
+    box-shadow: none;
+    outline: 0;
+    background: 0 0;
+    min-width: 120px;
+    max-width: 328px
+}
+
+.md-datepicker-input::-ms-clear {
+    display: none
+}
+
+.md-datepicker-input-container {
+    position: relative;
+    padding-bottom: 5px;
+    border-bottom-width: 1px;
+    border-bottom-style: solid;
+    display: inline-block;
+    width: auto;
+    margin-left: 12px
+}
+
+[dir=rtl] .md-datepicker-input-container {
+    margin-left: auto;
+    margin-right: 12px
+}
+
+.md-datepicker-input-container.md-datepicker-focused {
+    border-bottom-width: 2px
+}
+
+.md-datepicker-calendar-pane {
+    position: absolute;
+    top: 0;
+    left: 0;
+    z-index: 100;
+    border-width: 1px;
+    border-style: solid;
+    background: 0 0;
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    -webkit-transform-origin: 0 0;
+    transform-origin: 0 0;
+    transition: -webkit-transform .2s cubic-bezier(.25, .8, .25, 1);
+    transition: transform .2s cubic-bezier(.25, .8, .25, 1)
+}
+
+.md-datepicker-calendar-pane.md-pane-open {
+    -webkit-transform: scale(1);
+    transform: scale(1)
+}
+
+.md-datepicker-input-mask {
+    height: 40px;
+    width: 340px;
+    position: relative;
+    background: 0 0;
+    pointer-events: none;
+    cursor: text
+}
+
+.md-datepicker-input-mask-opaque {
+    position: absolute;
+    right: 0;
+    left: 120px;
+    height: 100%;
+    margin-left: -1px
+}
+
+.md-datepicker-calendar {
+    opacity: 0;
+    transition: opacity .2s cubic-bezier(.5, 0, .25, 1)
+}
+
+.md-pane-open .md-datepicker-calendar {
+    opacity: 1
+}
+
+.md-datepicker-calendar md-calendar:focus {
+    outline: 0
+}
+
+.md-datepicker-expand-triangle {
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    -webkit-transform: translate(-50%, -50%);
+    transform: translate(-50%, -50%);
+    width: 0;
+    height: 0;
+    border-left: 5px solid transparent;
+    border-right: 5px solid transparent;
+    border-top: 5px solid
+}
+
+.md-datepicker-triangle-button {
+    position: absolute;
+    right: 0;
+    top: 0;
+    -webkit-transform: translateY(-25%) translateX(45%);
+    transform: translateY(-25%) translateX(45%)
+}
+
+[dir=rtl] .md-datepicker-triangle-button {
+    right: auto;
+    left: 0;
+    -webkit-transform: translateY(-25%) translateX(-45%);
+    transform: translateY(-25%) translateX(-45%)
+}
+
+.md-datepicker-triangle-button.md-button.md-icon-button {
+    height: 100%;
+    width: 36px;
+    position: absolute
+}
+
+md-datepicker[disabled] .md-datepicker-input-container {
+    border-bottom-color: transparent
+}
+
+md-datepicker[disabled] .md-datepicker-triangle-button {
+    display: none
+}
+
+.md-datepicker-open .md-datepicker-input-container {
+    margin-left: -12px;
+    margin-bottom: -5px;
+    border: none
+}
+
+[dir=rtl] .md-datepicker-open .md-datepicker-input-container {
+    margin-left: auto;
+    margin-right: -12px
+}
+
+.md-datepicker-open .md-datepicker-input {
+    margin-left: 24px;
+    height: 40px
+}
+
+[dir=rtl] .md-datepicker-open .md-datepicker-input {
+    margin-left: auto;
+    margin-right: 24px
+}
+
+.md-datepicker-open .md-datepicker-triangle-button, .md-datepicker-pos-adjusted .md-datepicker-input-mask {
+    display: none
+}
+
+.md-datepicker-calendar-pane .md-calendar {
+    -webkit-transform: translateY(-85px);
+    transform: translateY(-85px);
+    transition: -webkit-transform .65s cubic-bezier(.25, .8, .25, 1);
+    transition: transform .65s cubic-bezier(.25, .8, .25, 1);
+    transition-delay: .125s
+}
+
+.md-datepicker-calendar-pane.md-pane-open .md-calendar {
+    -webkit-transform: translateY(0);
+    transform: translateY(0)
+}
+
+.md-dialog-is-showing {
+    max-height: 100%
+}
+
+.md-dialog-container {
+    display: -webkit-flex;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-justify-content: center;
+    -ms-flex-pack: center;
+    justify-content: center;
+    -webkit-align-items: center;
+    -ms-flex-align: center;
+    align-items: center;
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    z-index: 80;
+    overflow: hidden
+}
+
+md-dialog {
+    opacity: 0;
+    min-width: 240px;
+    max-width: 80%;
+    max-height: 80%;
+    position: relative;
+    overflow: auto;
+    box-shadow: 0 7px 8px -4px rgba(0, 0, 0, .2), 0 13px 19px 2px rgba(0, 0, 0, .14), 0 5px 24px 4px rgba(0, 0, 0, .12);
+    display: -webkit-flex;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-flex-direction: column;
+    -ms-flex-direction: column;
+    flex-direction: column
+}
+
+md-dialog._md-transition-in {
+    opacity: 1;
+    transition: all .4s cubic-bezier(.25, .8, .25, 1);
+    -webkit-transform: translate(0, 0) scale(1);
+    transform: translate(0, 0) scale(1)
+}
+
+md-dialog._md-transition-out {
+    opacity: 0;
+    transition: all .4s cubic-bezier(.25, .8, .25, 1);
+    -webkit-transform: translate(0, 100%) scale(.2);
+    transform: translate(0, 100%) scale(.2)
+}
+
+md-dialog > form {
+    display: -webkit-flex;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-flex-direction: column;
+    -ms-flex-direction: column;
+    flex-direction: column;
+    overflow: auto
+}
+
+md-dialog .md-dialog-content {
+    padding: 24px
+}
+
+md-dialog md-dialog-content {
+    -webkit-order: 1;
+    -ms-flex-order: 1;
+    order: 1;
+    -webkit-flex-direction: column;
+    -ms-flex-direction: column;
+    flex-direction: column;
+    overflow: auto;
+    -webkit-overflow-scrolling: touch
+}
+
+md-dialog md-dialog-content:not([layout=row]) > :first-child:not(.md-subheader) {
+    margin-top: 0
+}
+
+md-dialog md-dialog-content:focus {
+    outline: 0
+}
+
+md-dialog md-dialog-content .md-subheader {
+    margin: 0
+}
+
+md-dialog md-dialog-content ._md-dialog-content-body {
+    width: 100%
+}
+
+md-dialog md-dialog-content .md-prompt-input-container {
+    width: 100%;
+    box-sizing: border-box
+}
+
+md-dialog .md-actions, md-dialog md-dialog-actions {
+    display: -webkit-flex;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-order: 2;
+    -ms-flex-order: 2;
+    order: 2;
+    box-sizing: border-box;
+    -webkit-align-items: center;
+    -ms-flex-align: center;
+    align-items: center;
+    -webkit-justify-content: flex-end;
+    -ms-flex-pack: end;
+    justify-content: flex-end;
+    margin-bottom: 0;
+    padding-right: 8px;
+    padding-left: 16px;
+    min-height: 52px;
+    overflow: hidden
+}
+
+[dir=rtl] md-dialog .md-actions, [dir=rtl] md-dialog md-dialog-actions {
+    padding-right: 16px;
+    padding-left: 8px
+}
+
+md-dialog .md-actions .md-button, md-dialog md-dialog-actions .md-button {
+    margin: 8px 0 8px 8px
+}
+
+[dir=rtl] md-dialog .md-actions .md-button, [dir=rtl] md-dialog md-dialog-actions .md-button {
+    margin-left: 0;
+    margin-right: 8px
+}
+
+md-dialog.md-content-overflow .md-actions, md-dialog.md-content-overflow md-dialog-actions {
+    border-top-width: 1px;
+    border-top-style: solid
+}
+
+@media screen and (-ms-high-contrast: active) {
+    md-dialog {
+        border: 1px solid #fff
+    }
+}
+
+@media (max-width: 959px) {
+    md-dialog.md-dialog-fullscreen {
+        min-height: 100%;
+        min-width: 100%;
+        border-radius: 0
+    }
+}
+
+md-divider {
+    display: block;
+    border-top-width: 1px;
+    border-top-style: solid;
+    margin: 0
+}
+
+md-divider[md-inset] {
+    margin-left: 80px
+}
+
+[dir=rtl] md-divider[md-inset] {
+    margin-left: auto;
+    margin-right: 80px
+}
+
+.layout-gt-lg-row > md-divider, .layout-gt-md-row > md-divider, .layout-gt-sm-row > md-divider, .layout-gt-xs-row > md-divider, .layout-lg-row > md-divider, .layout-md-row > md-divider, .layout-row > md-divider, .layout-sm-row > md-divider, .layout-xl-row > md-divider, .layout-xs-row > md-divider {
+    border-top-width: 0;
+    border-right-width: 1px;
+    border-right-style: solid
+}
+
+md-fab-speed-dial {
+    position: relative;
+    display: -webkit-flex;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-align-items: center;
+    -ms-flex-align: center;
+    align-items: center;
+    z-index: 20
+}
+
+md-fab-speed-dial.md-fab-bottom-right {
+    top: auto;
+    right: 20px;
+    bottom: 20px;
+    left: auto;
+    position: absolute
+}
+
+md-fab-speed-dial.md-fab-bottom-left {
+    top: auto;
+    right: auto;
+    bottom: 20px;
+    left: 20px;
+    position: absolute
+}
+
+md-fab-speed-dial.md-fab-top-right {
+    top: 20px;
+    right: 20px;
+    bottom: auto;
+    left: auto;
+    position: absolute
+}
+
+md-fab-speed-dial.md-fab-top-left {
+    top: 20px;
+    right: auto;
+    bottom: auto;
+    left: 20px;
+    position: absolute
+}
+
+md-fab-speed-dial:not(.md-hover-full) {
+    pointer-events: none
+}
+
+md-fab-speed-dial:not(.md-hover-full) .md-fab-action-item, md-fab-speed-dial:not(.md-hover-full) md-fab-trigger, md-fab-speed-dial:not(.md-hover-full).md-is-open {
+    pointer-events: auto
+}
+
+md-fab-speed-dial ._md-css-variables {
+    z-index: 20
+}
+
+md-fab-speed-dial.md-is-open .md-fab-action-item {
+    -webkit-align-items: center;
+    -ms-flex-align: center;
+    align-items: center
+}
+
+md-fab-speed-dial md-fab-actions {
+    display: -webkit-flex;
+    display: -ms-flexbox;
+    display: flex;
+    height: auto
+}
+
+md-fab-speed-dial md-fab-actions .md-fab-action-item {
+    transition: all .3s cubic-bezier(.55, 0, .55, .2)
+}
+
+md-fab-speed-dial.md-down {
+    -webkit-flex-direction: column;
+    -ms-flex-direction: column;
+    flex-direction: column
+}
+
+md-fab-speed-dial.md-down md-fab-trigger {
+    -webkit-order: 1;
+    -ms-flex-order: 1;
+    order: 1
+}
+
+md-fab-speed-dial.md-down md-fab-actions {
+    -webkit-flex-direction: column;
+    -ms-flex-direction: column;
+    flex-direction: column;
+    -webkit-order: 2;
+    -ms-flex-order: 2;
+    order: 2
+}
+
+md-fab-speed-dial.md-up {
+    -webkit-flex-direction: column;
+    -ms-flex-direction: column;
+    flex-direction: column
+}
+
+md-fab-speed-dial.md-up md-fab-trigger {
+    -webkit-order: 2;
+    -ms-flex-order: 2;
+    order: 2
+}
+
+md-fab-speed-dial.md-up md-fab-actions {
+    -webkit-flex-direction: column-reverse;
+    -ms-flex-direction: column-reverse;
+    flex-direction: column-reverse;
+    -webkit-order: 1;
+    -ms-flex-order: 1;
+    order: 1
+}
+
+md-fab-speed-dial.md-left {
+    -webkit-flex-direction: row;
+    -ms-flex-direction: row;
+    flex-direction: row
+}
+
+md-fab-speed-dial.md-left md-fab-trigger {
+    -webkit-order: 2;
+    -ms-flex-order: 2;
+    order: 2
+}
+
+md-fab-speed-dial.md-left md-fab-actions {
+    -webkit-flex-direction: row-reverse;
+    -ms-flex-direction: row-reverse;
+    flex-direction: row-reverse;
+    -webkit-order: 1;
+    -ms-flex-order: 1;
+    order: 1
+}
+
+md-fab-speed-dial.md-left md-fab-actions .md-fab-action-item {
+    transition: all .3s cubic-bezier(.55, 0, .55, .2)
+}
+
+md-fab-speed-dial.md-right {
+    -webkit-flex-direction: row;
+    -ms-flex-direction: row;
+    flex-direction: row
+}
+
+md-fab-speed-dial.md-right md-fab-trigger {
+    -webkit-order: 1;
+    -ms-flex-order: 1;
+    order: 1
+}
+
+md-fab-speed-dial.md-right md-fab-actions {
+    -webkit-flex-direction: row;
+    -ms-flex-direction: row;
+    flex-direction: row;
+    -webkit-order: 2;
+    -ms-flex-order: 2;
+    order: 2
+}
+
+md-fab-speed-dial.md-right md-fab-actions .md-fab-action-item {
+    transition: all .3s cubic-bezier(.55, 0, .55, .2)
+}
+
+md-fab-speed-dial.md-fling-remove .md-fab-action-item > *, md-fab-speed-dial.md-scale-remove .md-fab-action-item > * {
+    visibility: hidden
+}
+
+md-fab-speed-dial.md-fling .md-fab-action-item {
+    opacity: 1
+}
+
+md-fab-speed-dial.md-fling._md-animations-waiting .md-fab-action-item {
+    opacity: 0;
+    transition-duration: 0s
+}
+
+md-fab-speed-dial.md-scale .md-fab-action-item {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    transition: all .3s cubic-bezier(.55, 0, .55, .2);
+    transition-duration: .14286s
+}
+
+md-fab-toolbar {
+    display: block
+}
+
+md-fab-toolbar.md-fab-bottom-right {
+    top: auto;
+    right: 20px;
+    bottom: 20px;
+    left: auto;
+    position: absolute
+}
+
+md-fab-toolbar.md-fab-bottom-left {
+    top: auto;
+    right: auto;
+    bottom: 20px;
+    left: 20px;
+    position: absolute
+}
+
+md-fab-toolbar.md-fab-top-right {
+    top: 20px;
+    right: 20px;
+    bottom: auto;
+    left: auto;
+    position: absolute
+}
+
+md-fab-toolbar.md-fab-top-left {
+    top: 20px;
+    right: auto;
+    bottom: auto;
+    left: 20px;
+    position: absolute
+}
+
+md-fab-toolbar ._md-fab-toolbar-wrapper {
+    display: block;
+    position: relative;
+    overflow: hidden;
+    height: 68px
+}
+
+md-fab-toolbar md-fab-trigger {
+    position: absolute;
+    z-index: 20
+}
+
+md-fab-toolbar md-fab-trigger button {
+    overflow: visible !important
+}
+
+md-fab-toolbar md-fab-trigger ._md-fab-toolbar-background {
+    display: block;
+    position: absolute;
+    z-index: 21;
+    opacity: 1;
+    transition: all .3s cubic-bezier(.55, 0, .55, .2)
+}
+
+md-fab-toolbar md-fab-trigger md-icon {
+    position: relative;
+    z-index: 22;
+    opacity: 1;
+    transition: all 200ms ease-in
+}
+
+md-fab-toolbar.md-left md-fab-trigger {
+    right: 0
+}
+
+[dir=rtl] md-fab-toolbar.md-left md-fab-trigger {
+    right: auto;
+    left: 0
+}
+
+md-fab-toolbar.md-left .md-toolbar-tools {
+    -webkit-flex-direction: row-reverse;
+    -ms-flex-direction: row-reverse;
+    flex-direction: row-reverse
+}
+
+md-fab-toolbar.md-left .md-toolbar-tools > .md-button:first-child {
+    margin-right: .6rem
+}
+
+md-fab-toolbar.md-left .md-toolbar-tools > .md-button:first-child {
+    margin-left: -.8rem
+}
+
+[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools > .md-button:first-child {
+    margin-left: auto;
+    margin-right: -.8rem
+}
+
+md-fab-toolbar.md-left .md-toolbar-tools > .md-button:last-child {
+    margin-right: 8px
+}
+
+[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools > .md-button:last-child {
+    margin-right: auto;
+    margin-left: 8px
+}
+
+md-fab-toolbar.md-right md-fab-trigger {
+    left: 0
+}
+
+[dir=rtl] md-fab-toolbar.md-right md-fab-trigger {
+    left: auto;
+    right: 0
+}
+
+md-fab-toolbar.md-right .md-toolbar-tools {
+    -webkit-flex-direction: row;
+    -ms-flex-direction: row;
+    flex-direction: row
+}
+
+md-fab-toolbar md-toolbar {
+    background-color: transparent !important;
+    pointer-events: none;
+    z-index: 23
+}
+
+md-fab-toolbar md-toolbar .md-toolbar-tools {
+    padding: 0 20px;
+    margin-top: 3px
+}
+
+md-fab-toolbar md-toolbar .md-fab-action-item {
+    opacity: 0;
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    transition: all .3s cubic-bezier(.55, 0, .55, .2);
+    transition-duration: .15s
+}
+
+md-fab-toolbar.md-is-open md-fab-trigger > button {
+    box-shadow: none
+}
+
+md-fab-toolbar.md-is-open md-fab-trigger > button md-icon {
+    opacity: 0
+}
+
+md-fab-toolbar.md-is-open .md-fab-action-item {
+    opacity: 1;
+    -webkit-transform: scale(1);
+    transform: scale(1)
+}
+
+md-grid-list {
+    box-sizing: border-box;
+    display: block;
+    position: relative
+}
+
+md-grid-list md-grid-tile, md-grid-list md-grid-tile-footer, md-grid-list md-grid-tile-header, md-grid-list md-grid-tile > figure {
+    box-sizing: border-box
+}
+
+md-grid-list md-grid-tile {
+    display: block;
+    position: absolute
+}
+
+md-grid-list md-grid-tile figure {
+    display: -webkit-flex;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-align-items: center;
+    -ms-flex-align: center;
+    align-items: center;
+    -webkit-justify-content: center;
+    -ms-flex-pack: center;
+    justify-content: center;
+    height: 100%;
+    position: absolute;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    padding: 0;
+    margin: 0
+}
+
+md-grid-list md-grid-tile md-grid-tile-footer, md-grid-list md-grid-tile md-grid-tile-header {
+    display: -webkit-flex;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-flex-direction: row;
+    -ms-flex-direction: row;
+    flex-direction: row;
+    -webkit-align-items: center;
+    -ms-flex-align: center;
+    align-items: center;
+    height: 48px;
+    color: #fff;
+    background: rgba(0, 0, 0, .18);
+    overflow: hidden;
+    position: absolute;
+    left: 0;
+    right: 0
+}
+
+md-grid-list md-grid-tile md-grid-tile-footer h3, md-grid-list md-grid-tile md-grid-tile-footer h4, md-grid-list md-grid-tile md-grid-tile-header h3, md-grid-list md-grid-tile md-grid-tile-header h4 {
+    font-weight: 400;
+    margin: 0 0 0 16px
+}
+
+md-grid-list md-grid-tile md-grid-tile-footer h3, md-grid-list md-grid-tile md-grid-tile-header h3 {
+    font-size: 14px
+}
+
+md-grid-list md-grid-tile md-grid-tile-footer h4, md-grid-list md-grid-tile md-grid-tile-header h4 {
+    font-size: 12px
+}
+
+md-grid-list md-grid-tile md-grid-tile-header {
+    top: 0
+}
+
+md-grid-list md-grid-tile md-grid-tile-footer {
+    bottom: 0
+}
+
+@media screen and (-ms-high-contrast: active) {
+    md-grid-tile {
+        border: 1px solid #fff
+    }
+
+    md-grid-tile-footer {
+        border-top: 1px solid #fff
+    }
+}
+
+md-icon {
+    margin: auto;
+    background-repeat: no-repeat no-repeat;
+    display: inline-block;
+    vertical-align: middle;
+    fill: currentColor;
+    height: 24px;
+    width: 24px
+}
+
+md-icon svg {
+    pointer-events: none;
+    display: block
+}
+
+md-icon[md-font-icon] {
+    line-height: 24px;
+    width: auto
+}
+
+md-input-container {
+    display: inline-block;
+    position: relative;
+    padding: 2px;
+    margin: 18px 0;
+    vertical-align: middle
+}
+
+md-input-container:after {
+    content: '';
+    display: table;
+    clear: both
+}
+
+md-input-container.md-block {
+    display: block
+}
+
+md-input-container .md-errors-spacer {
+    float: right;
+    min-height: 24px;
+    min-width: 1px
+}
+
+[dir=rtl] md-input-container .md-errors-spacer {
+    float: left
+}
+
+md-input-container > md-icon {
+    position: absolute;
+    top: 8px;
+    left: 2px;
+    right: auto
+}
+
+[dir=rtl] md-input-container > md-icon {
+    left: auto;
+    right: 2px
+}
+
+md-input-container input[type=url], md-input-container input[type=text], md-input-container input[type=password], md-input-container input[type=datetime], md-input-container input[type=datetime-local], md-input-container input[type=date], md-input-container input[type=month], md-input-container input[type=time], md-input-container input[type=week], md-input-container input[type=color], md-input-container input[type=search], md-input-container input[type=email], md-input-container input[type=number], md-input-container input[type=tel], md-input-container textarea {
+    -moz-appearance: none;
+    -webkit-appearance: none
+}
+
+md-input-container input[type=datetime-local], md-input-container input[type=date], md-input-container input[type=month], md-input-container input[type=time], md-input-container input[type=week] {
+    min-height: 26px
+}
+
+md-input-container textarea {
+    resize: none;
+    overflow: hidden
+}
+
+md-input-container textarea.md-input {
+    min-height: 26px;
+    -ms-flex-preferred-size: auto
+}
+
+md-input-container textarea._md-textarea-scrollable, md-input-container textarea[md-no-autogrow] {
+    overflow: auto
+}
+
+md-input-container textarea[md-no-autogrow] {
+    height: auto
+}
+
+md-input-container label:not(._md-container-ignore) {
+    position: absolute;
+    bottom: 100%;
+    left: 0;
+    right: auto
+}
+
+[dir=rtl] md-input-container label:not(._md-container-ignore) {
+    left: auto;
+    right: 0
+}
+
+md-input-container label:not(._md-container-ignore).md-required:after {
+    content: ' *';
+    font-size: 13px;
+    vertical-align: top
+}
+
+md-input-container ._md-placeholder, md-input-container label:not(.md-no-float):not(._md-container-ignore) {
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    width: 100%;
+    -webkit-order: 1;
+    -ms-flex-order: 1;
+    order: 1;
+    pointer-events: none;
+    -webkit-font-smoothing: antialiased;
+    padding-left: 3px;
+    padding-right: 0;
+    z-index: 1;
+    -webkit-transform: translate3d(0, 28px, 0) scale(1);
+    transform: translate3d(0, 28px, 0) scale(1);
+    transition: -webkit-transform .4s cubic-bezier(.25, .8, .25, 1);
+    transition: transform .4s cubic-bezier(.25, .8, .25, 1);
+    max-width: 100%;
+    -webkit-transform-origin: left top;
+    transform-origin: left top
+}
+
+[dir=rtl] md-input-container ._md-placeholder, [dir=rtl] md-input-container label:not(.md-no-float):not(._md-container-ignore) {
+    padding-left: 0;
+    padding-right: 3px;
+    -webkit-transform-origin: right top;
+    transform-origin: right top
+}
+
+md-input-container ._md-placeholder {
+    position: absolute;
+    top: 0;
+    opacity: 0;
+    transition-property: opacity, -webkit-transform;
+    transition-property: opacity, transform;
+    -webkit-transform: translate3d(0, 30px, 0);
+    transform: translate3d(0, 30px, 0)
+}
+
+md-input-container.md-input-focused ._md-placeholder {
+    opacity: 1;
+    -webkit-transform: translate3d(0, 24px, 0);
+    transform: translate3d(0, 24px, 0)
+}
+
+md-input-container.md-input-has-value ._md-placeholder {
+    transition: none;
+    opacity: 0
+}
+
+md-input-container:not(.md-input-has-value) input:not(:focus), md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-ampm-field, md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-day-field, md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-hour-field, md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-millisecond-field, md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-minute-field, md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-month-field, md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-second-field, md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-text, md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-week-field, md-input-container:not(.md-input-has-value) input:not(:f
 ocus)::-webkit-datetime-edit-year-field {
+    color: transparent
+}
+
+md-input-container .md-input {
+    -webkit-order: 2;
+    -ms-flex-order: 2;
+    order: 2;
+    display: block;
+    margin-top: 0;
+    background: 0 0;
+    padding: 2px 2px 1px;
+    border-width: 0 0 1px;
+    line-height: 26px;
+    height: 30px;
+    -ms-flex-preferred-size: 26px;
+    border-radius: 0;
+    border-style: solid;
+    width: 100%;
+    box-sizing: border-box;
+    float: left
+}
+
+[dir=rtl] md-input-container .md-input {
+    float: right
+}
+
+md-input-container .md-input:focus {
+    outline: 0
+}
+
+md-input-container .md-input:invalid {
+    outline: 0;
+    box-shadow: none
+}
+
+md-input-container .md-input.md-no-flex {
+    -webkit-flex: none !important;
+    -ms-flex: none !important;
+    flex: none !important
+}
+
+md-input-container .md-char-counter {
+    text-align: right;
+    padding-right: 2px;
+    padding-left: 0
+}
+
+[dir=rtl] md-input-container .md-char-counter {
+    text-align: left;
+    padding-right: 0;
+    padding-left: 2px
+}
+
+md-input-container .md-input-messages-animation {
+    position: relative;
+    -webkit-order: 4;
+    -ms-flex-order: 4;
+    order: 4;
+    overflow: hidden;
+    clear: left
+}
+
+[dir=rtl] md-input-container .md-input-messages-animation {
+    clear: right
+}
+
+md-input-container .md-input-messages-animation.ng-enter .md-input-message-animation {
+    opacity: 0;
+    margin-top: -100px
+}
+
+md-input-container .md-char-counter, md-input-container .md-input-message-animation {
+    font-size: 12px;
+    line-height: 14px;
+    overflow: hidden;
+    transition: all .3s cubic-bezier(.55, 0, .55, .2);
+    opacity: 1;
+    margin-top: 0;
+    padding-top: 5px
+}
+
+md-input-container .md-char-counter:not(.md-char-counter), md-input-container .md-input-message-animation:not(.md-char-counter) {
+    padding-right: 5px;
+    padding-left: 0
+}
+
+[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter), [dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter) {
+    padding-right: 0;
+    padding-left: 5px
+}
+
+md-input-container .md-auto-hide .md-input-message-animation:not(.ng-animate), md-input-container .md-input-message-animation.ng-enter, md-input-container:not(.md-input-invalid) .md-auto-hide .md-input-message-animation {
+    opacity: 0;
+    margin-top: -100px
+}
+
+md-input-container.md-input-focused label:not(.md-no-float), md-input-container.md-input-has-placeholder label:not(.md-no-float), md-input-container.md-input-has-value label:not(.md-no-float) {
+    -webkit-transform: translate3d(0, 6px, 0) scale(.75);
+    transform: translate3d(0, 6px, 0) scale(.75);
+    transition: -webkit-transform cubic-bezier(.25, .8, .25, 1) .4s, width cubic-bezier(.25, .8, .25, 1) .4s;
+    transition: transform cubic-bezier(.25, .8, .25, 1) .4s, width cubic-bezier(.25, .8, .25, 1) .4s;
+    width: calc((100% - 18px) / .75)
+}
+
+md-input-container.md-input-has-value label {
+    transition: none
+}
+
+md-input-container .md-input.ng-invalid.ng-dirty, md-input-container.md-input-focused .md-input {
+    padding-bottom: 0;
+    border-width: 0 0 2px
+}
+
+[disabled] md-input-container .md-input, md-input-container .md-input[disabled] {
+    background-position: 0 bottom;
+    background-size: 4px 1px;
+    background-repeat: repeat-x;
+    margin-bottom: -1px
+}
+
+md-input-container.md-icon-float {
+    transition: margin-top .4s cubic-bezier(.25, .8, .25, 1)
+}
+
+md-input-container.md-icon-float > label {
+    pointer-events: none;
+    position: absolute
+}
+
+md-input-container.md-icon-float > md-icon {
+    top: 8px;
+    left: 2px;
+    right: auto
+}
+
+[dir=rtl] md-input-container.md-icon-float > md-icon {
+    left: auto;
+    right: 2px
+}
+
+md-input-container.md-icon-left > label .md-placeholder, md-input-container.md-icon-left > label:not(.md-no-float):not(._md-container-ignore), md-input-container.md-icon-right > label .md-placeholder, md-input-container.md-icon-right > label:not(.md-no-float):not(._md-container-ignore) {
+    width: calc(100% - 36px - 18px)
+}
+
+md-input-container.md-icon-left.md-input-focused > label .md-placeholder, md-input-container.md-icon-left.md-input-focused > label:not(.md-no-float):not(._md-container-ignore), md-input-container.md-icon-left.md-input-has-placeholder > label .md-placeholder, md-input-container.md-icon-left.md-input-has-placeholder > label:not(.md-no-float):not(._md-container-ignore), md-input-container.md-icon-left.md-input-has-value > label .md-placeholder, md-input-container.md-icon-left.md-input-has-value > label:not(.md-no-float):not(._md-container-ignore), md-input-container.md-icon-right.md-input-focused > label .md-placeholder, md-input-container.md-icon-right.md-input-focused > label:not(.md-no-float):not(._md-container-ignore), md-input-container.md-icon-right.md-input-has-placeholder > label .md-placeholder, md-input-container.md-icon-right.md-input-has-placeholder > label:not(.md-no-float):not(._md-container-ignore), md-input-container.md-icon-right.md-input-has-value > label .md-placehol
 der, md-input-container.md-icon-right.md-input-has-value > label:not(.md-no-float):not(._md-container-ignore) {
+    width: calc((100% - 36px - 18px) / .75)
+}
+
+md-input-container.md-icon-left {
+    padding-left: 36px;
+    padding-right: 0
+}
+
+[dir=rtl] md-input-container.md-icon-left {
+    padding-left: 0;
+    padding-right: 36px
+}
+
+md-input-container.md-icon-left > label {
+    left: 36px;
+    right: auto
+}
+
+[dir=rtl] md-input-container.md-icon-left > label {
+    left: auto;
+    right: 36px
+}
+
+md-input-container.md-icon-right {
+    padding-left: 0;
+    padding-right: 36px
+}
+
+[dir=rtl] md-input-container.md-icon-right {
+    padding-left: 36px;
+    padding-right: 0
+}
+
+md-input-container.md-icon-right > md-icon:last-of-type {
+    margin: 0;
+    right: 2px;
+    left: auto
+}
+
+[dir=rtl] md-input-container.md-icon-right > md-icon:last-of-type {
+    right: auto;
+    left: 2px
+}
+
+md-input-container.md-icon-left.md-icon-right {
+    padding-left: 36px;
+    padding-right: 36px
+}
+
+md-input-container.md-icon-left.md-icon-right > label .md-placeholder, md-input-container.md-icon-left.md-icon-right > label:not(.md-no-float):not(._md-container-ignore) {
+    width: calc(100% - (36px * 2))
+}
+
+md-input-container.md-icon-left.md-icon-right.md-input-focused > label .md-placeholder, md-input-container.md-icon-left.md-icon-right.md-input-focused > label:not(.md-no-float):not(._md-container-ignore), md-input-container.md-icon-left.md-icon-right.md-input-has-placeholder > label .md-placeholder, md-input-container.md-icon-left.md-icon-right.md-input-has-placeholder > label:not(.md-no-float):not(._md-container-ignore), md-input-container.md-icon-left.md-icon-right.md-input-has-value > label .md-placeholder, md-input-container.md-icon-left.md-icon-right.md-input-has-value > label:not(.md-no-float):not(._md-container-ignore) {
+    width: calc((100% - (36px * 2)) / .75)
+}
+
+@media screen and (-ms-high-contrast: active) {
+    md-input-container.md-default-theme > md-icon {
+        fill: #fff
+    }
+}
+
+md-list {
+    display: block;
+    padding: 8px 0
+}
+
+md-list .md-subheader {
+    font-size: 14px;
+    font-weight: 500;
+    letter-spacing: .010em;
+    line-height: 1.2em
+}
+
+md-list.md-dense md-list-item, md-list.md-dense md-list-item ._md-list-item-inner {
+    min-height: 48px
+}
+
+md-list.md-dense md-list-item ._md-list-item-inner md-icon:first-child, md-list.md-dense md-list-item md-icon:first-child {
+    width: 20px;
+    height: 20px
+}
+
+md-list.md-dense md-list-item ._md-list-item-inner > md-icon:first-child:not(.md-avatar-icon), md-list.md-dense md-list-item > md-icon:first-child:not(.md-avatar-icon) {
+    margin-right: 36px
+}
+
+[dir=rtl] md-list.md-dense md-list-item ._md-list-item-inner > md-icon:first-child:not(.md-avatar-icon), [dir=rtl] md-list.md-dense md-list-item > md-icon:first-child:not(.md-avatar-icon) {
+    margin-right: auto;
+    margin-left: 36px
+}
+
+md-list.md-dense md-list-item ._md-list-item-inner .md-avatar, md-list.md-dense md-list-item ._md-list-item-inner .md-avatar-icon, md-list.md-dense md-list-item .md-avatar, md-list.md-dense md-list-item .md-avatar-icon {
+    margin-right: 20px
+}
+
+[dir=rtl] md-list.md-dense md-list-item ._md-list-item-inner .md-avatar, [dir=rtl] md-list.md-dense md-list-item ._md-list-item-inner .md-avatar-icon, [dir=rtl] md-list.md-dense md-list-item .md-avatar, [dir=rtl] md-list.md-dense md-list-item .md-avatar-icon {
+    margin-right: auto;
+    margin-left: 20px
+}
+
+md-list.md-dense md-list-item ._md-list-item-inner .md-avatar, md-list.md-dense md-list-item .md-avatar {
+    width: 36px;
+    height: 36px
+}
+
+md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset, md-list.md-dense md-list-item.md-2-line > ._md-no-style .md-list-item-text.md-offset, md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset, md-list.md-dense md-list-item.md-3-line > ._md-no-style .md-list-item-text.md-offset {
+    margin-left: 56px
+}
+
+[dir=rtl] md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset, [dir=rtl] md-list.md-dense md-list-item.md-2-line > ._md-no-style .md-list-item-text.md-offset, [dir=rtl] md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset, [dir=rtl] md-list.md-dense md-list-item.md-3-line > ._md-no-style .md-list-item-text.md-offset {
+    margin-left: auto;
+    margin-right: 56px
+}
+
+md-list.md-dense md-list-item.md-2-line .md-list-item-text h3, md-list.md-dense md-list-item.md-2-line .md-list-item-text h4, md-list.md-dense md-list-item.md-2-line .md-list-item-text p, md-list.md-dense md-list-item.md-2-line > ._md-no-style .md-list-item-text h3, md-list.md-dense md-list-item.md-2-line > ._md-no-style .md-list-item-text h4, md-list.md-dense md-list-item.md-2-line > ._md-no-style .md-list-item-text p, md-list.md-dense md-list-item.md-3-line .md-list-item-text h3, md-list.md-dense md-list-item.md-3-line .md-list-item-text h4, md-list.md-dense md-list-item.md-3-line .md-list-item-text p, md-list.md-dense md-list-item.md-3-line > ._md-no-style .md-list-item-text h3, md-list.md-dense md-list-item.md-3-line > ._md-no-style .md-list-item-text h4, md-list.md-dense md-list-item.md-3-line > ._md-no-style .md-list-item-text p {
+    line-height: 1.05;
+    font-size: 12px
+}
+
+md-list.md-dense md-list-item.md-2-line .md-list-item-text h3, md-list.md-dense md-list-item.md-2-line > ._md-no-style .md-list-item-text h3, md-list.md-dense md-list-item.md-3-line .md-list-item-text h3, md-list.md-dense md-list-item.md-3-line > ._md-no-style .md-list-item-text h3 {
+    font-size: 13px
+}
+
+md-list.md-dense md-list-item.md-2-line, md-list.md-dense md-list-item.md-2-line > ._md-no-style {
+    min-height: 60px
+}
+
+md-list.md-dense md-list-item.md-2-line div.md-button:first-child::before, md-list.md-dense md-list-item.md-2-line > ._md-no-style div.md-button:first-child::before {
+    content: '';
+    min-height: 60px;
+    visibility: hidden
+}
+
+md-list.md-dense md-list-item.md-2-line .md-avatar-icon, md-list.md-dense md-list-item.md-2-line > ._md-no-style .md-avatar-icon, md-list.md-dense md-list-item.md-2-line > ._md-no-style > .md-avatar, md-list.md-dense md-list-item.md-2-line > .md-avatar {
+    margin-top: 12px
+}
+
+md-list.md-dense md-list-item.md-3-line, md-list.md-dense md-list-item.md-3-line > ._md-no-style {
+    min-height: 76px
+}
+
+md-list.md-dense md-list-item.md-3-line div.md-button:first-child::before, md-list.md-dense md-list-item.md-3-line > ._md-no-style div.md-button:first-child::before {
+    content: '';
+    min-height: 76px;
+    visibility: hidden
+}
+
+md-list.md-dense md-list-item.md-3-line > ._md-no-style > .md-avatar, md-list.md-dense md-list-item.md-3-line > ._md-no-style > md-icon:first-child, md-list.md-dense md-list-item.md-3-line > .md-avatar, md-list.md-dense md-list-item.md-3-line > md-icon:first-child {
+    margin-top: 16px
+}
+
+md-list-item {
+    position: relative
+}
+
+md-list-item._md-proxy-focus.md-focused ._md-no-style {
+    transition: background-color .15s linear
+}
+
+md-list-item._md-button-wrap {
+    position: relative
+}
+
+md-list-item._md-button-wrap > div.md-button:first-child {
+    display: -webkit-flex;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-align-items: center;
+    -ms-flex-align: center;
+    align-items: center;
+    -webkit-justify-content: flex-start;
+    -ms-flex-pack: start;
+    justify-content: flex-start;
+    padding: 0 16px;
+    margin: 0;
+    background-color: initial;
+    font-weight: 400;
+    text-align: left;
+    border: none
+}
+
+[dir=rtl] md-list-item._md-button-wrap > div.md-button:first-child {
+    text-align: right
+}
+
+md-list-item._md-button-wrap > div.md-button:first-child > .md-button:first-child {
+    position: absolute;
+    top: 0;
+    left: 0;
+    height: 100%;
+    margin: 0;
+    padding: 0
+}
+
+md-list-item._md-button-wrap > div.md-button:first-child ._md-list-item-inner {
+    width: 100%;
+    height: 100%
+}
+
+md-list-item ._md-no-style, md-list-item._md-no-proxy {
+    position: relative;
+    padding: 0 16px;
+    -webkit-flex: 1 1 auto;
+    -ms-flex: 1 1 auto;
+    flex: 1 1 auto
+}
+
+md-list-item ._md-no-style.md-button, md-list-item._md-no-proxy.md-button {
+    font-size: inherit;
+    height: inherit;
+    text-align: left;
+    text-transform: none;
+    width: 100%;
+    white-space: normal;
+    -webkit-flex-direction: inherit;
+    -ms-flex-direction: inherit;
+    flex-direction: inherit;
+    -webkit-align-items: inherit;
+    -ms-flex-align: inherit;
+    align-items: inherit;
+    border-radius: 0;
+    margin: 0
+}
+
+[dir=rtl] md-list-item ._md-no-style.md-button, [dir=rtl] md-list-item._md-no-proxy.md-button {
+    text-align: right
+}
+
+md-list-item ._md-no-style.md-button > .md-ripple-container, md-list-item._md-no-proxy.md-button > .md-ripple-container {
+    border-radius: 0
+}
+
+md-list-item ._md-no-style:focus, md-list-item._md-no-proxy:focus {
+    outline: 0
+}
+
+md-list-item.md-clickable:hover {
+    cursor: pointer
+}
+
+md-list-item md-divider {
+    position: absolute;
+    bottom: 0;
+    left: 0;
+    width: 100%
+}
+
+[dir=rtl] md-list-item md-divider {
+    left: auto;
+    right: 0
+}
+
+md-list-item md-divider[md-inset] {
+    left: 72px;
+    width: calc(100% - 72px);
+    margin: 0 !important
+}
+
+[dir=rtl] md-list-item md-divider[md-inset] {
+    left: auto;
+    right: 72px
+}
+
+md-list-item, md-list-item ._md-list-item-inner {
+    display: -webkit-flex;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-justify-content: flex-start;
+    -ms-flex-pack: start;
+    justify-content: flex-start;
+    -webkit-align-items: center;
+    -ms-flex-align: center;
+    align-items: center;
+    min-height: 48px;
+    height: auto
+}
+
+md-list-item ._md-list-item-inner > div.md-primary > md-icon:not(.md-avatar-icon), md-list-item ._md-list-item-inner > div.md-secondary > md-icon:not(.md-avatar-icon), md-list-item ._md-list-item-inner > md-icon.md-secondary:not(.md-avatar-icon), md-list-item ._md-list-item-inner > md-icon:first-child:not(.md-avatar-icon), md-list-item > div.md-primary > md-icon:not(.md-avatar-icon), md-list-item > div.md-secondary > md-icon:not(.md-avatar-icon), md-list-item > md-icon.md-secondary:not(.md-avatar-icon), md-list-item > md-icon:first-child:not(.md-avatar-icon) {
+    width: 24px;
+    margin-top: 16px;
+    margin-bottom: 12px;
+    box-sizing: content-box
+}
+
+md-list-item ._md-list-item-inner md-checkbox.md-secondary, md-list-item ._md-list-item-inner > div.md-primary > md-checkbox, md-list-item ._md-list-item-inner > div.md-secondary > md-checkbox, md-list-item ._md-list-item-inner > md-checkbox, md-list-item md-checkbox.md-secondary, md-list-item > div.md-primary > md-checkbox, md-list-item > div.md-secondary > md-checkbox, md-list-item > md-checkbox {
+    -webkit-align-self: center;
+    -ms-flex-item-align: center;
+    align-self: center
+}
+
+md-list-item ._md-list-item-inner md-checkbox.md-secondary .md-label, md-list-item ._md-list-item-inner > div.md-primary > md-checkbox .md-label, md-list-item ._md-list-item-inner > div.md-secondary > md-checkbox .md-label, md-list-item ._md-list-item-inner > md-checkbox .md-label, md-list-item md-checkbox.md-secondary .md-label, md-list-item > div.md-primary > md-checkbox .md-label, md-list-item > div.md-secondary > md-checkbox .md-label, md-list-item > md-checkbox .md-label {
+    display: none
+}
+
+md-list-item ._md-list-item-inner > md-icon:first-child:not(.md-avatar-icon), md-list-item > md-icon:first-child:not(.md-avatar-icon) {
+    margin-right: 32px
+}
+
+[dir=rtl] md-list-item ._md-list-item-inner > md-icon:first-child:not(.md-avatar-icon), [dir=rtl] md-list-item > md-icon:first-child:not(.md-avatar-icon) {
+    margin-right: auto;
+    margin-left: 32px
+}
+
+md-list-item ._md-list-item-inner .md-avatar, md-list-item ._md-list-item-inner .md-avatar-icon, md-list-item .md-avatar, md-list-item .md-avatar-icon {
+    margin-top: 8px;
+    margin-bottom: 8px;
+    margin-right: 16px;
+    border-radius: 50%;
+    box-sizing: content-box
+}
+
+[dir=rtl] md-list-item ._md-list-item-inner .md-avatar, [dir=rtl] md-list-item ._md-list-item-inner .md-avatar-icon, [dir=rtl] md-list-item .md-avatar, [dir=rtl] md-list-item .md-avatar-icon {
+    margin-right: auto;
+    margin-left: 16px
+}
+
+md-list-item ._md-list-item-inner .md-avatar, md-list-item .md-avatar {
+    width: 40px;
+    height: 40px
+}
+
+md-list-item ._md-list-item-inner .md-avatar-icon, md-list-item .md-avatar-icon {
+    padding: 8px
+}
+
+md-list-item ._md-list-item-inner > md-checkbox, md-list-item > md-checkbox {
+    width: 24px;
+    margin-left: 3px;
+    margin-right: 29px;
+    margin-top: 16px
+}
+
+[dir=rtl] md-list-item ._md-list-item-inner > md-checkbox, [dir=rtl] md-list-item > md-checkbox {
+    margin-left: 29px;
+    margin-right: 3px
+}
+
+md-list-item ._md-list-item-inner ._md-secondary-container, md-list-item ._md-secondary-container {
+    display: -webkit-flex;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-align-items: center;
+    -ms-flex-align: center;
+    align-items: center;
+    height: 100%;
+    margin: auto
+}
+
+md-list-item ._md-list-item-inner ._md-secondary-container .md-button:last-of-type, md-list-item ._md-list-item-inner ._md-secondary-container .md-icon-button:last-of-type, md-list-item ._md-secondary-container .md-button:last-of-type, md-list-item ._md-secondary-container .md-icon-button:last-of-type {
+    margin-right: 0
+}
+
+[dir=rtl] md-list-item ._md-list-item-inner ._md-secondary-container .md-button:last-of-type, [dir=rtl] md-list-item ._md-list-item-inner ._md-secondary-container .md-icon-button:last-of-type, [dir=rtl] md-list-item ._md-secondary-container .md-button:last-of-type, [dir=rtl] md-list-item ._md-secondary-container .md-icon-button:last-of-type {
+    margin-right: auto;
+    margin-left: 0
+}
+
+md-list-item ._md-list-item-inner ._md-secondary-container md-checkbox, md-list-item ._md-secondary-container md-checkbox {
+    margin-top: 0;
+    margin-bottom: 0
+}
+
+md-list-item ._md-list-item-inner ._md-secondary-container md-checkbox:last-child, md-list-item ._md-secondary-container md-checkbox:last-child {
+    width: 24px;
+    margin-right: 0
+}
+
+[dir=rtl] md-list-item ._md-list-item-inner ._md-secondary-container md-checkbox:last-child, [dir=rtl] md-list-item ._md-secondary-container md-checkbox:last-child {
+    margin-right: auto;
+    margin-left: 0
+}
+
+md-list-item ._md-list-item-inner ._md-secondary-container md-switch, md-list-item ._md-secondary-container md-switch {
+    margin-top: 0;
+    margin-bottom: 0;
+    margin-right: -6px
+}
+
+[dir=rtl] md-list-item ._md-list-item-inner ._md-secondary-container md-switch, [dir=rtl] md-list-item ._md-secondary-container md-switch {
+    margin-right: auto;
+    margin-left: -6px
+}
+
+md-list-item ._md-list-item-inner > ._md-list-item-inner > p, md-list-item ._md-list-item-inner > p, md-list-item > ._md-list-item-inner > p, md-list-item > p {
+    -webkit-flex: 1 1 auto;
+    -ms-flex: 1 1 auto;
+    flex: 1 1 auto;
+    margin: 0
+}
+
+md-list-item.md-2-line, md-list-item.md-2-line > ._md-no-style, md-list-item.md-3-line, md-list-item.md-3-line > ._md-no-style {
+    -webkit-align-items: flex-start;
+    -ms-flex-align: start;
+    align-items: flex-start;
+    -webkit-justify-content: center;
+    -ms-flex-pack: center;
+    justify-content: center
+}
+
+md-list-item.md-2-line.md-long-text, md-list-item.md-2-line > ._md-no-style.md-long-text, md-list-item.md-3-line.md-long-text, md-list-item.md-3-line > ._md-no-style.md-long-text {
+    margin-top: 8px;
+    margin-bottom: 8px
+}
+
+md-list-item.md-2-line .md-list-item-text, md-list-item.md-2-line > ._md-no-style .md-list-item-text, md-list-item.md-3-line .md-list-item-text, md-list-item.md-3-line > ._md-no-style .md-list-item-text {
+    -webkit-flex: 1 1 auto;
+    -ms-flex: 1 1 auto;
+    flex: 1 1 auto;
+    margin: auto;
+    text-overflow: ellipsis;
+    overflow: hidden
+}
+
+md-list-item.md-2-line .md-list-item-text.md-offset, md-list-item.md-2-line > ._md-no-style .md-list-item-text.md-offset, md-list-item.md-3-line .md-list-item-text.md-offset, md-list-item.md-3-line > ._md-no-style .md-list-item-text.md-offset {
+    margin-left: 56px
+}
+
+[dir=rtl] md-list-item.md-2-line .md-list-item-text.md-offset, [dir=rtl] md-list-item.md-2-line > ._md-no-style .md-list-item-text.

<TRUNCATED>


[24/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/errors.json
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/errors.json b/rocketmq-console/src/main/resources/static/vendor/angular/errors.json
new file mode 100644
index 0000000..26e5682
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/errors.json
@@ -0,0 +1 @@
+{"id":"ng","generated":"Fri May 27 2016 10:14:41 GMT-0700 (PDT)","errors":{"ng":{"areq":"Argument '{0}' is {1}","cpta":"Can't copy! TypedArray destination cannot be mutated.","test":"no injector found for element argument to getTestability","cpws":"Can't copy! Making copies of Window or Scope instances is not supported.","btstrpd":"App already bootstrapped with this element '{0}'","cpi":"Can't copy! Source and destination are identical.","badname":"hasOwnProperty is not a valid {0} name"},"$http":{"legacy":"The method `{0}` on the promise returned from `$http` has been disabled.","badreq":"Http request configuration url must be a string.  Received: {0}"},"ngRepeat":{"badident":"alias '{0}' is invalid --- must be a valid JS identifier which is not a reserved name.","iexp":"Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.","dupes":"Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate 
 key: {1}, Duplicate value: {2}","iidexp":"'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'."},"$sce":{"imatcher":"Matchers may only be \"self\", string patterns or RegExp objects","icontext":"Attempted to trust a value in invalid context. Context: {0}; Value: {1}","iwcard":"Illegal sequence *** in string matcher.  String: {0}","insecurl":"Blocked loading resource from url not allowed by $sceDelegate policy.  URL: {0}","iequirks":"Strict Contextual Escaping does not support Internet Explorer version < 11 in quirks mode.  You can fix this by adding the text <!doctype html> to the top of your HTML document.  See http://docs.angularjs.org/api/ng.$sce for more information.","unsafe":"Attempting to use an unsafe value in a safe context.","itype":"Attempted to trust a non-string value in a content requiring a string: Context: {0}"},"ngPattern":{"noregexp":"Expected {0} to be a RegExp but was {1}. Element: {2}"},"$controller":{"ctr
 lfmt":"Badly formed controller string '{0}'. Must match `__name__ as __id__` or `__name__`.","noscp":"Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`."},"$parse":{"isecfn":"Referencing Function in Angular expressions is disallowed! Expression: {0}","isecwindow":"Referencing the Window in Angular expressions is disallowed! Expression: {0}","ueoe":"Unexpected end of expression: {0}","isecdom":"Referencing DOM nodes in Angular expressions is disallowed! Expression: {0}","lexerr":"Lexer Error: {0} at column{1} in expression [{2}].","esc":"IMPOSSIBLE","isecobj":"Referencing Object in Angular expressions is disallowed! Expression: {0}","lval":"Trying to assign a value to a non l-value","isecff":"Referencing call, apply or bind in Angular expressions is disallowed! Expression: {0}","syntax":"Syntax Error: Token '{0}' {1} at column {2} of the expression [{3}] starting at [{4}].","isecaf":"Assigning to a constructor is disallowed! Expression: {0}","isecfld":"A
 ttempting to access a disallowed field in Angular expressions! Expression: {0}"},"orderBy":{"notarray":"Expected array but received: {0}"},"jqLite":{"offargs":"jqLite#off() does not support the `selector` argument","onargs":"jqLite#on() does not support the `selector` or `eventData` parameters","nosel":"Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element"},"$animate":{"notcsel":"Expecting class selector starting with '.' got '{0}'.","nongcls":"$animateProvider.classNameFilter(regex) prohibits accepting a regex value which matches/contains the \"{0}\" CSS class."},"$q":{"norslvr":"Expected resolverFn, got '{0}'","qcycle":"Expected promise to be resolved with value other than itself '{0}'"},"$injector":{"pget":"Provider '{0}' must define $get factory method.","cdep":"Circular dependency found: {0}","nomod":"Module '{0}' is not available! You either misspelled the module name or forgot to load it. If registering a module ensu
 re that you specify the dependencies as the second argument.","strictdi":"{0} is not using explicit annotation and cannot be invoked in strict mode","modulerr":"Failed to instantiate module {0} due to:\n{1}","undef":"Provider '{0}' must return a value from $get factory method.","unpr":"Unknown provider: {0}","itkn":"Incorrect injection token! Expected service name as string, got {0}"},"$templateRequest":{"tpload":"Failed to load template: {0} (HTTP status: {1} {2})"},"filter":{"notarray":"Expected array but received: {0}"},"ngTransclude":{"orphan":"Illegal use of ngTransclude directive in the template! No parent directive that requires a transclusion found. Element: {0}"},"ngModel":{"nopromise":"Expected asynchronous validator to return a promise but got '{0}' instead.","nonassign":"Expression '{0}' is non-assignable. Element: {1}","datefmt":"Expected `{0}` to be a date","constexpr":"Expected constant expression for `{0}`, but saw `{1}`.","numfmt":"Expected `{0}` to be a number"},"$
 location":{"nostate":"History API state support is available only in HTML5 mode and only in browsers supporting HTML5 History API","ipthprfx":"Invalid url \"{0}\", missing path prefix \"{1}\".","isrcharg":"The first argument of the `$location#search()` call must be a string or an object.","nobase":"$location in HTML5 mode requires a <base> tag to be present!"},"$cacheFactory":{"iid":"CacheId '{0}' is already taken!"},"$interpolate":{"noconcat":"Error while interpolating: {0}\nStrict Contextual Escaping disallows interpolations that concatenate multiple expressions when a trusted value is required.  See http://docs.angularjs.org/api/ng.$sce","interr":"Can't interpolate: {0}\n{1}","nochgmustache":"angular-message-format.js currently does not allow you to use custom start and end symbols for interpolation.","reqcomma":"Expected a comma after the keyword “{0}” at line {1}, column {2} of text “{3}”","untermstr":"The string beginning at line {0}, column {1} is unterminated in text
  “{2}”","badexpr":"Unexpected operator “{0}” at line {1}, column {2} in text. Was expecting “{3}”. Text: “{4}”","dupvalue":"The choice “{0}” is specified more than once. Duplicate key is at line {1}, column {2} in text “{3}”","unsafe":"Use of select/plural MessageFormat syntax is currently disallowed in a secure context ({0}).  At line {1}, column {2} of text “{3}”","reqother":"“other” is a required option.","reqendinterp":"Expecting end of interpolation symbol, “{0}”, at line {1}, column {2} in text “{3}”","reqarg":"Expected one of “plural” or “select” at line {0}, column {1} of text “{2}”","wantstring":"Expected the beginning of a string at line {0}, column {1} in text “{2}”","logicbug":"The messageformat parser has encountered an internal error.  Please file a github issue against the AngularJS project and provide this message text that triggers the bug.  Text: “{0}”","reqopenbrace":"The plural choice “{0}” must be f
 ollowed by a message in braces at line {1}, column {2} in text “{3}”","unknarg":"Unsupported keyword “{0}” at line {0}, column {1}. Only “plural” and “select” are currently supported.  Text: “{3}”","reqendbrace":"The plural/select choice “{0}” message starting at line {1}, column {2} does not have an ending closing brace. Text “{3}”"},"ngOptions":{"iexp":"Expected expression in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '{0}'. Element: {1}"},"$rootScope":{"inprog":"{0} already in progress","infdig":"{0} $digest() iterations reached. Aborting!\nWatchers fired in the last 5 iterations: {1}"},"$compile":{"noident":"Cannot bind to controller without identifier for directive '{0}'.","selmulti":"Binding to the 'multiple' attribute is not supported. Element: {0}","ctreq":"Controller '{0}', required by directive '{1}', can't be found!","tplrt":"Template for directive '{0}' must have exactly one root element. {1}","iscp":"Invalid
  {3} for directive '{0}'. Definition: {... {1}: '{2}' ...}","baddir":"Directive/Component name '{0}' is invalid. The name should not contain leading or trailing whitespaces","noctrl":"Cannot bind to controller without directive '{0}'s controller.","multidir":"Multiple directives [{0}{1}, {2}{3}] asking for {4} on: {5}","uterdir":"Unterminated attribute, found '{0}' but no matching '{1}' found.","infchng":"{0} $onChanges() iterations reached. Aborting!\n","reqslot":"Required transclusion slot `{0}` was not filled.","nodomevents":"Interpolations for HTML DOM event attributes are disallowed.  Please use the ng- versions (such as ng-click instead of onclick) instead.","nonassign":"Expression '{0}' in attribute '{1}' used with directive '{2}' is non-assignable!","noslot":"No parent directive that requires a transclusion with slot name \"{0}\". Element: {1}"},"$resource":{"badargs":"Expected up to 4 arguments [params, data, success, error], got {0} arguments","badmember":"Dotted member pa
 th \"@{0}\" is invalid.","badname":"hasOwnProperty is not a valid parameter name.","badcfg":"Error in resource configuration for action `{0}`. Expected response to contain an {1} but got an {2} (Request: {3} {4})"},"$route":{"norout":"Tried updating route when with no current route"},"linky":{"notstring":"Expected string but received: {0}"},"$sanitize":{"noinert":"Can't create an inert html document","uinput":"Failed to sanitize html because the input is unstable"}}}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_aa-dj.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_aa-dj.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_aa-dj.js
new file mode 100644
index 0000000..2fe0c30
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_aa-dj.js
@@ -0,0 +1,128 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "saaku",
+      "carra"
+    ],
+    "DAY": [
+      "Acaada",
+      "Etleeni",
+      "Talaata",
+      "Arbaqa",
+      "Kamiisi",
+      "Gumqata",
+      "Sabti"
+    ],
+    "ERANAMES": [
+      "Yaasuusuk Duma",
+      "Yaasuusuk Wadir"
+    ],
+    "ERAS": [
+      "Yaasuusuk Duma",
+      "Yaasuusuk Wadir"
+    ],
+    "FIRSTDAYOFWEEK": 5,
+    "MONTH": [
+      "Qunxa Garablu",
+      "Kudo",
+      "Ciggilta Kudo",
+      "Agda Baxis",
+      "Caxah Alsa",
+      "Qasa Dirri",
+      "Qado Dirri",
+      "Leqeeni",
+      "Waysu",
+      "Diteli",
+      "Ximoli",
+      "Kaxxa Garablu"
+    ],
+    "SHORTDAY": [
+      "Aca",
+      "Etl",
+      "Tal",
+      "Arb",
+      "Kam",
+      "Gum",
+      "Sab"
+    ],
+    "SHORTMONTH": [
+      "Qun",
+      "Nah",
+      "Cig",
+      "Agd",
+      "Cax",
+      "Qas",
+      "Qad",
+      "Leq",
+      "Way",
+      "Dit",
+      "Xim",
+      "Kax"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, MMMM dd, y",
+    "longDate": "dd MMMM y",
+    "medium": "dd-MMM-y h:mm:ss a",
+    "mediumDate": "dd-MMM-y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/yy h:mm a",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Fdj",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4-",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "aa-dj",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_aa-er.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_aa-er.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_aa-er.js
new file mode 100644
index 0000000..48c1e7c
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_aa-er.js
@@ -0,0 +1,128 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "saaku",
+      "carra"
+    ],
+    "DAY": [
+      "Acaada",
+      "Etleeni",
+      "Talaata",
+      "Arbaqa",
+      "Kamiisi",
+      "Gumqata",
+      "Sabti"
+    ],
+    "ERANAMES": [
+      "Yaasuusuk Duma",
+      "Yaasuusuk Wadir"
+    ],
+    "ERAS": [
+      "Yaasuusuk Duma",
+      "Yaasuusuk Wadir"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Qunxa Garablu",
+      "Kudo",
+      "Ciggilta Kudo",
+      "Agda Baxis",
+      "Caxah Alsa",
+      "Qasa Dirri",
+      "Qado Dirri",
+      "Liiqen",
+      "Waysu",
+      "Diteli",
+      "Ximoli",
+      "Kaxxa Garablu"
+    ],
+    "SHORTDAY": [
+      "Aca",
+      "Etl",
+      "Tal",
+      "Arb",
+      "Kam",
+      "Gum",
+      "Sab"
+    ],
+    "SHORTMONTH": [
+      "Qun",
+      "Nah",
+      "Cig",
+      "Agd",
+      "Cax",
+      "Qas",
+      "Qad",
+      "Leq",
+      "Way",
+      "Dit",
+      "Xim",
+      "Kax"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, MMMM dd, y",
+    "longDate": "dd MMMM y",
+    "medium": "dd-MMM-y h:mm:ss a",
+    "mediumDate": "dd-MMM-y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/yy h:mm a",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Nfk",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4-",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "aa-er",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_aa-et.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_aa-et.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_aa-et.js
new file mode 100644
index 0000000..03b6255
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_aa-et.js
@@ -0,0 +1,128 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "saaku",
+      "carra"
+    ],
+    "DAY": [
+      "Acaada",
+      "Etleeni",
+      "Talaata",
+      "Arbaqa",
+      "Kamiisi",
+      "Gumqata",
+      "Sabti"
+    ],
+    "ERANAMES": [
+      "Yaasuusuk Duma",
+      "Yaasuusuk Wadir"
+    ],
+    "ERAS": [
+      "Yaasuusuk Duma",
+      "Yaasuusuk Wadir"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Qunxa Garablu",
+      "Kudo",
+      "Ciggilta Kudo",
+      "Agda Baxis",
+      "Caxah Alsa",
+      "Qasa Dirri",
+      "Qado Dirri",
+      "Liiqen",
+      "Waysu",
+      "Diteli",
+      "Ximoli",
+      "Kaxxa Garablu"
+    ],
+    "SHORTDAY": [
+      "Aca",
+      "Etl",
+      "Tal",
+      "Arb",
+      "Kam",
+      "Gum",
+      "Sab"
+    ],
+    "SHORTMONTH": [
+      "Qun",
+      "Nah",
+      "Cig",
+      "Agd",
+      "Cax",
+      "Qas",
+      "Qad",
+      "Leq",
+      "Way",
+      "Dit",
+      "Xim",
+      "Kax"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, MMMM dd, y",
+    "longDate": "dd MMMM y",
+    "medium": "dd-MMM-y h:mm:ss a",
+    "mediumDate": "dd-MMM-y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/yy h:mm a",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Birr",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4-",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "aa-et",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_aa.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_aa.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_aa.js
new file mode 100644
index 0000000..661fa2e
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_aa.js
@@ -0,0 +1,128 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "saaku",
+      "carra"
+    ],
+    "DAY": [
+      "Acaada",
+      "Etleeni",
+      "Talaata",
+      "Arbaqa",
+      "Kamiisi",
+      "Gumqata",
+      "Sabti"
+    ],
+    "ERANAMES": [
+      "Yaasuusuk Duma",
+      "Yaasuusuk Wadir"
+    ],
+    "ERAS": [
+      "Yaasuusuk Duma",
+      "Yaasuusuk Wadir"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Qunxa Garablu",
+      "Kudo",
+      "Ciggilta Kudo",
+      "Agda Baxis",
+      "Caxah Alsa",
+      "Qasa Dirri",
+      "Qado Dirri",
+      "Liiqen",
+      "Waysu",
+      "Diteli",
+      "Ximoli",
+      "Kaxxa Garablu"
+    ],
+    "SHORTDAY": [
+      "Aca",
+      "Etl",
+      "Tal",
+      "Arb",
+      "Kam",
+      "Gum",
+      "Sab"
+    ],
+    "SHORTMONTH": [
+      "Qun",
+      "Nah",
+      "Cig",
+      "Agd",
+      "Cax",
+      "Qas",
+      "Qad",
+      "Leq",
+      "Way",
+      "Dit",
+      "Xim",
+      "Kax"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, MMMM dd, y",
+    "longDate": "dd MMMM y",
+    "medium": "dd-MMM-y h:mm:ss a",
+    "mediumDate": "dd-MMM-y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/yy h:mm a",
+    "shortDate": "dd/MM/yy",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Birr",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "\u00a4-",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "aa",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_af-na.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_af-na.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_af-na.js
new file mode 100644
index 0000000..32b9181
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_af-na.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "vm.",
+      "nm."
+    ],
+    "DAY": [
+      "Sondag",
+      "Maandag",
+      "Dinsdag",
+      "Woensdag",
+      "Donderdag",
+      "Vrydag",
+      "Saterdag"
+    ],
+    "ERANAMES": [
+      "voor Christus",
+      "na Christus"
+    ],
+    "ERAS": [
+      "v.C.",
+      "n.C."
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Januarie",
+      "Februarie",
+      "Maart",
+      "April",
+      "Mei",
+      "Junie",
+      "Julie",
+      "Augustus",
+      "September",
+      "Oktober",
+      "November",
+      "Desember"
+    ],
+    "SHORTDAY": [
+      "So",
+      "Ma",
+      "Di",
+      "Wo",
+      "Do",
+      "Vr",
+      "Sa"
+    ],
+    "SHORTMONTH": [
+      "Jan.",
+      "Feb.",
+      "Mrt.",
+      "Apr",
+      "Mei",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Okt",
+      "Nov",
+      "Des"
+    ],
+    "STANDALONEMONTH": [
+      "Januarie",
+      "Februarie",
+      "Maart",
+      "April",
+      "Mei",
+      "Junie",
+      "Julie",
+      "Augustus",
+      "September",
+      "Oktober",
+      "November",
+      "Desember"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y HH:mm:ss",
+    "mediumDate": "d MMM y",
+    "mediumTime": "HH:mm:ss",
+    "short": "y-MM-dd HH:mm",
+    "shortDate": "y-MM-dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "$",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "af-na",
+  "localeID": "af_NA",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_af-za.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_af-za.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_af-za.js
new file mode 100644
index 0000000..b667ded
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_af-za.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "vm.",
+      "nm."
+    ],
+    "DAY": [
+      "Sondag",
+      "Maandag",
+      "Dinsdag",
+      "Woensdag",
+      "Donderdag",
+      "Vrydag",
+      "Saterdag"
+    ],
+    "ERANAMES": [
+      "voor Christus",
+      "na Christus"
+    ],
+    "ERAS": [
+      "v.C.",
+      "n.C."
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "Januarie",
+      "Februarie",
+      "Maart",
+      "April",
+      "Mei",
+      "Junie",
+      "Julie",
+      "Augustus",
+      "September",
+      "Oktober",
+      "November",
+      "Desember"
+    ],
+    "SHORTDAY": [
+      "So",
+      "Ma",
+      "Di",
+      "Wo",
+      "Do",
+      "Vr",
+      "Sa"
+    ],
+    "SHORTMONTH": [
+      "Jan.",
+      "Feb.",
+      "Mrt.",
+      "Apr",
+      "Mei",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Okt",
+      "Nov",
+      "Des"
+    ],
+    "STANDALONEMONTH": [
+      "Januarie",
+      "Februarie",
+      "Maart",
+      "April",
+      "Mei",
+      "Junie",
+      "Julie",
+      "Augustus",
+      "September",
+      "Oktober",
+      "November",
+      "Desember"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, dd MMMM y",
+    "longDate": "dd MMMM y",
+    "medium": "dd MMM y h:mm:ss a",
+    "mediumDate": "dd MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "y-MM-dd h:mm a",
+    "shortDate": "y-MM-dd",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "R",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "af-za",
+  "localeID": "af_ZA",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_af.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_af.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_af.js
new file mode 100644
index 0000000..5c2e7f7
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_af.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "vm.",
+      "nm."
+    ],
+    "DAY": [
+      "Sondag",
+      "Maandag",
+      "Dinsdag",
+      "Woensdag",
+      "Donderdag",
+      "Vrydag",
+      "Saterdag"
+    ],
+    "ERANAMES": [
+      "voor Christus",
+      "na Christus"
+    ],
+    "ERAS": [
+      "v.C.",
+      "n.C."
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "Januarie",
+      "Februarie",
+      "Maart",
+      "April",
+      "Mei",
+      "Junie",
+      "Julie",
+      "Augustus",
+      "September",
+      "Oktober",
+      "November",
+      "Desember"
+    ],
+    "SHORTDAY": [
+      "So",
+      "Ma",
+      "Di",
+      "Wo",
+      "Do",
+      "Vr",
+      "Sa"
+    ],
+    "SHORTMONTH": [
+      "Jan.",
+      "Feb.",
+      "Mrt.",
+      "Apr",
+      "Mei",
+      "Jun",
+      "Jul",
+      "Aug",
+      "Sep",
+      "Okt",
+      "Nov",
+      "Des"
+    ],
+    "STANDALONEMONTH": [
+      "Januarie",
+      "Februarie",
+      "Maart",
+      "April",
+      "Mei",
+      "Junie",
+      "Julie",
+      "Augustus",
+      "September",
+      "Oktober",
+      "November",
+      "Desember"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, dd MMMM y",
+    "longDate": "dd MMMM y",
+    "medium": "dd MMM y h:mm:ss a",
+    "mediumDate": "dd MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "y-MM-dd h:mm a",
+    "shortDate": "y-MM-dd",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "R",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "af",
+  "localeID": "af",
+  "pluralCat": function(n, opt_precision) {  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_agq-cm.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_agq-cm.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_agq-cm.js
new file mode 100644
index 0000000..102f5b2
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_agq-cm.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a.g",
+      "a.k"
+    ],
+    "DAY": [
+      "tsu\u0294nts\u0268",
+      "tsu\u0294ukp\u00e0",
+      "tsu\u0294ugh\u0254e",
+      "tsu\u0294ut\u0254\u0300ml\u00f2",
+      "tsu\u0294um\u00e8",
+      "tsu\u0294ugh\u0268\u0302m",
+      "tsu\u0294ndz\u0268k\u0254\u0294\u0254"
+    ],
+    "ERANAMES": [
+      "S\u011be K\u0268\u0300lesto",
+      "B\u01cea K\u0268\u0300lesto"
+    ],
+    "ERAS": [
+      "SK",
+      "BK"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "ndz\u0254\u0300\u014b\u0254\u0300n\u00f9m",
+      "ndz\u0254\u0300\u014b\u0254\u0300k\u0197\u0300z\u00f9\u0294",
+      "ndz\u0254\u0300\u014b\u0254\u0300t\u0197\u0300d\u0289\u0300gh\u00e0",
+      "ndz\u0254\u0300\u014b\u0254\u0300t\u01ceaf\u0289\u0304gh\u0101",
+      "ndz\u0254\u0300\u014b\u00e8s\u00e8e",
+      "ndz\u0254\u0300\u014b\u0254\u0300nz\u00f9gh\u00f2",
+      "ndz\u0254\u0300\u014b\u0254\u0300d\u00f9mlo",
+      "ndz\u0254\u0300\u014b\u0254\u0300kw\u00eef\u0254\u0300e",
+      "ndz\u0254\u0300\u014b\u0254\u0300t\u0197\u0300f\u0289\u0300gh\u00e0dzugh\u00f9",
+      "ndz\u0254\u0300\u014b\u0254\u0300gh\u01d4uwel\u0254\u0300m",
+      "ndz\u0254\u0300\u014b\u0254\u0300chwa\u0294\u00e0kaa wo",
+      "ndz\u0254\u0300\u014b\u00e8fw\u00f2o"
+    ],
+    "SHORTDAY": [
+      "nts",
+      "kpa",
+      "gh\u0254",
+      "t\u0254m",
+      "ume",
+      "gh\u0268",
+      "dzk"
+    ],
+    "SHORTMONTH": [
+      "n\u00f9m",
+      "k\u0268z",
+      "t\u0268d",
+      "taa",
+      "see",
+      "nzu",
+      "dum",
+      "f\u0254e",
+      "dzu",
+      "l\u0254m",
+      "kaa",
+      "fwo"
+    ],
+    "STANDALONEMONTH": [
+      "ndz\u0254\u0300\u014b\u0254\u0300n\u00f9m",
+      "ndz\u0254\u0300\u014b\u0254\u0300k\u0197\u0300z\u00f9\u0294",
+      "ndz\u0254\u0300\u014b\u0254\u0300t\u0197\u0300d\u0289\u0300gh\u00e0",
+      "ndz\u0254\u0300\u014b\u0254\u0300t\u01ceaf\u0289\u0304gh\u0101",
+      "ndz\u0254\u0300\u014b\u00e8s\u00e8e",
+      "ndz\u0254\u0300\u014b\u0254\u0300nz\u00f9gh\u00f2",
+      "ndz\u0254\u0300\u014b\u0254\u0300d\u00f9mlo",
+      "ndz\u0254\u0300\u014b\u0254\u0300kw\u00eef\u0254\u0300e",
+      "ndz\u0254\u0300\u014b\u0254\u0300t\u0197\u0300f\u0289\u0300gh\u00e0dzugh\u00f9",
+      "ndz\u0254\u0300\u014b\u0254\u0300gh\u01d4uwel\u0254\u0300m",
+      "ndz\u0254\u0300\u014b\u0254\u0300chwa\u0294\u00e0kaa wo",
+      "ndz\u0254\u0300\u014b\u00e8fw\u00f2o"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a4"
+      }
+    ]
+  },
+  "id": "agq-cm",
+  "localeID": "agq_CM",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_agq.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_agq.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_agq.js
new file mode 100644
index 0000000..cf57315
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_agq.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "a.g",
+      "a.k"
+    ],
+    "DAY": [
+      "tsu\u0294nts\u0268",
+      "tsu\u0294ukp\u00e0",
+      "tsu\u0294ugh\u0254e",
+      "tsu\u0294ut\u0254\u0300ml\u00f2",
+      "tsu\u0294um\u00e8",
+      "tsu\u0294ugh\u0268\u0302m",
+      "tsu\u0294ndz\u0268k\u0254\u0294\u0254"
+    ],
+    "ERANAMES": [
+      "S\u011be K\u0268\u0300lesto",
+      "B\u01cea K\u0268\u0300lesto"
+    ],
+    "ERAS": [
+      "SK",
+      "BK"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "ndz\u0254\u0300\u014b\u0254\u0300n\u00f9m",
+      "ndz\u0254\u0300\u014b\u0254\u0300k\u0197\u0300z\u00f9\u0294",
+      "ndz\u0254\u0300\u014b\u0254\u0300t\u0197\u0300d\u0289\u0300gh\u00e0",
+      "ndz\u0254\u0300\u014b\u0254\u0300t\u01ceaf\u0289\u0304gh\u0101",
+      "ndz\u0254\u0300\u014b\u00e8s\u00e8e",
+      "ndz\u0254\u0300\u014b\u0254\u0300nz\u00f9gh\u00f2",
+      "ndz\u0254\u0300\u014b\u0254\u0300d\u00f9mlo",
+      "ndz\u0254\u0300\u014b\u0254\u0300kw\u00eef\u0254\u0300e",
+      "ndz\u0254\u0300\u014b\u0254\u0300t\u0197\u0300f\u0289\u0300gh\u00e0dzugh\u00f9",
+      "ndz\u0254\u0300\u014b\u0254\u0300gh\u01d4uwel\u0254\u0300m",
+      "ndz\u0254\u0300\u014b\u0254\u0300chwa\u0294\u00e0kaa wo",
+      "ndz\u0254\u0300\u014b\u00e8fw\u00f2o"
+    ],
+    "SHORTDAY": [
+      "nts",
+      "kpa",
+      "gh\u0254",
+      "t\u0254m",
+      "ume",
+      "gh\u0268",
+      "dzk"
+    ],
+    "SHORTMONTH": [
+      "n\u00f9m",
+      "k\u0268z",
+      "t\u0268d",
+      "taa",
+      "see",
+      "nzu",
+      "dum",
+      "f\u0254e",
+      "dzu",
+      "l\u0254m",
+      "kaa",
+      "fwo"
+    ],
+    "STANDALONEMONTH": [
+      "ndz\u0254\u0300\u014b\u0254\u0300n\u00f9m",
+      "ndz\u0254\u0300\u014b\u0254\u0300k\u0197\u0300z\u00f9\u0294",
+      "ndz\u0254\u0300\u014b\u0254\u0300t\u0197\u0300d\u0289\u0300gh\u00e0",
+      "ndz\u0254\u0300\u014b\u0254\u0300t\u01ceaf\u0289\u0304gh\u0101",
+      "ndz\u0254\u0300\u014b\u00e8s\u00e8e",
+      "ndz\u0254\u0300\u014b\u0254\u0300nz\u00f9gh\u00f2",
+      "ndz\u0254\u0300\u014b\u0254\u0300d\u00f9mlo",
+      "ndz\u0254\u0300\u014b\u0254\u0300kw\u00eef\u0254\u0300e",
+      "ndz\u0254\u0300\u014b\u0254\u0300t\u0197\u0300f\u0289\u0300gh\u00e0dzugh\u00f9",
+      "ndz\u0254\u0300\u014b\u0254\u0300gh\u01d4uwel\u0254\u0300m",
+      "ndz\u0254\u0300\u014b\u0254\u0300chwa\u0294\u00e0kaa wo",
+      "ndz\u0254\u0300\u014b\u00e8fw\u00f2o"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM, y HH:mm:ss",
+    "mediumDate": "d MMM, y",
+    "mediumTime": "HH:mm:ss",
+    "short": "d/M/y HH:mm",
+    "shortDate": "d/M/y",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "FCFA",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": "\u00a0",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "\u00a4",
+        "posPre": "",
+        "posSuf": "\u00a4"
+      }
+    ]
+  },
+  "id": "agq",
+  "localeID": "agq",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ak-gh.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ak-gh.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ak-gh.js
new file mode 100644
index 0000000..c58c9a2
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ak-gh.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AN",
+      "EW"
+    ],
+    "DAY": [
+      "Kwesida",
+      "Dwowda",
+      "Benada",
+      "Wukuda",
+      "Yawda",
+      "Fida",
+      "Memeneda"
+    ],
+    "ERANAMES": [
+      "Ansa Kristo",
+      "Kristo Ekyiri"
+    ],
+    "ERAS": [
+      "AK",
+      "KE"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Sanda-\u0186p\u025bp\u0254n",
+      "Kwakwar-\u0186gyefuo",
+      "Eb\u0254w-\u0186benem",
+      "Eb\u0254bira-Oforisuo",
+      "Esusow Aketseaba-K\u0254t\u0254nimba",
+      "Obirade-Ay\u025bwohomumu",
+      "Ay\u025bwoho-Kitawonsa",
+      "Difuu-\u0186sandaa",
+      "Fankwa-\u0190b\u0254",
+      "\u0186b\u025bs\u025b-Ahinime",
+      "\u0186ber\u025bf\u025bw-Obubuo",
+      "Mumu-\u0186p\u025bnimba"
+    ],
+    "SHORTDAY": [
+      "Kwe",
+      "Dwo",
+      "Ben",
+      "Wuk",
+      "Yaw",
+      "Fia",
+      "Mem"
+    ],
+    "SHORTMONTH": [
+      "S-\u0186",
+      "K-\u0186",
+      "E-\u0186",
+      "E-O",
+      "E-K",
+      "O-A",
+      "A-K",
+      "D-\u0186",
+      "F-\u0190",
+      "\u0186-A",
+      "\u0186-O",
+      "M-\u0186"
+    ],
+    "STANDALONEMONTH": [
+      "Sanda-\u0186p\u025bp\u0254n",
+      "Kwakwar-\u0186gyefuo",
+      "Eb\u0254w-\u0186benem",
+      "Eb\u0254bira-Oforisuo",
+      "Esusow Aketseaba-K\u0254t\u0254nimba",
+      "Obirade-Ay\u025bwohomumu",
+      "Ay\u025bwoho-Kitawonsa",
+      "Difuu-\u0186sandaa",
+      "Fankwa-\u0190b\u0254",
+      "\u0186b\u025bs\u025b-Ahinime",
+      "\u0186ber\u025bf\u025bw-Obubuo",
+      "Mumu-\u0186p\u025bnimba"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, y MMMM dd",
+    "longDate": "y MMMM d",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "yy/MM/dd HH:mm",
+    "shortDate": "yy/MM/dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "GHS",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ak-gh",
+  "localeID": "ak_GH",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ak.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ak.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ak.js
new file mode 100644
index 0000000..1f9a7c3
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ak.js
@@ -0,0 +1,143 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+  n = n + '';
+  var i = n.indexOf('.');
+  return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+  var v = opt_precision;
+
+  if (undefined === v) {
+    v = Math.min(getDecimals(n), 3);
+  }
+
+  var base = Math.pow(10, v);
+  var f = ((n * base) | 0) % base;
+  return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "AN",
+      "EW"
+    ],
+    "DAY": [
+      "Kwesida",
+      "Dwowda",
+      "Benada",
+      "Wukuda",
+      "Yawda",
+      "Fida",
+      "Memeneda"
+    ],
+    "ERANAMES": [
+      "Ansa Kristo",
+      "Kristo Ekyiri"
+    ],
+    "ERAS": [
+      "AK",
+      "KE"
+    ],
+    "FIRSTDAYOFWEEK": 0,
+    "MONTH": [
+      "Sanda-\u0186p\u025bp\u0254n",
+      "Kwakwar-\u0186gyefuo",
+      "Eb\u0254w-\u0186benem",
+      "Eb\u0254bira-Oforisuo",
+      "Esusow Aketseaba-K\u0254t\u0254nimba",
+      "Obirade-Ay\u025bwohomumu",
+      "Ay\u025bwoho-Kitawonsa",
+      "Difuu-\u0186sandaa",
+      "Fankwa-\u0190b\u0254",
+      "\u0186b\u025bs\u025b-Ahinime",
+      "\u0186ber\u025bf\u025bw-Obubuo",
+      "Mumu-\u0186p\u025bnimba"
+    ],
+    "SHORTDAY": [
+      "Kwe",
+      "Dwo",
+      "Ben",
+      "Wuk",
+      "Yaw",
+      "Fia",
+      "Mem"
+    ],
+    "SHORTMONTH": [
+      "S-\u0186",
+      "K-\u0186",
+      "E-\u0186",
+      "E-O",
+      "E-K",
+      "O-A",
+      "A-K",
+      "D-\u0186",
+      "F-\u0190",
+      "\u0186-A",
+      "\u0186-O",
+      "M-\u0186"
+    ],
+    "STANDALONEMONTH": [
+      "Sanda-\u0186p\u025bp\u0254n",
+      "Kwakwar-\u0186gyefuo",
+      "Eb\u0254w-\u0186benem",
+      "Eb\u0254bira-Oforisuo",
+      "Esusow Aketseaba-K\u0254t\u0254nimba",
+      "Obirade-Ay\u025bwohomumu",
+      "Ay\u025bwoho-Kitawonsa",
+      "Difuu-\u0186sandaa",
+      "Fankwa-\u0190b\u0254",
+      "\u0186b\u025bs\u025b-Ahinime",
+      "\u0186ber\u025bf\u025bw-Obubuo",
+      "Mumu-\u0186p\u025bnimba"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, y MMMM dd",
+    "longDate": "y MMMM d",
+    "medium": "y MMM d HH:mm:ss",
+    "mediumDate": "y MMM d",
+    "mediumTime": "HH:mm:ss",
+    "short": "yy/MM/dd HH:mm",
+    "shortDate": "yy/MM/dd",
+    "shortTime": "HH:mm"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "GHS",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ak",
+  "localeID": "ak",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  var vf = getVF(n, opt_precision);  if (i == 1 && vf.v == 0) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_am-et.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_am-et.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_am-et.js
new file mode 100644
index 0000000..7384a08
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_am-et.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u1325\u12cb\u1275",
+      "\u12a8\u1230\u12d3\u1275"
+    ],
+    "DAY": [
+      "\u12a5\u1211\u12f5",
+      "\u1230\u129e",
+      "\u121b\u12ad\u1230\u129e",
+      "\u1228\u1261\u12d5",
+      "\u1210\u1219\u1235",
+      "\u12d3\u122d\u1265",
+      "\u1245\u12f3\u121c"
+    ],
+    "ERANAMES": [
+      "\u12d3\u1218\u1270 \u12d3\u1208\u121d",
+      "\u12d3\u1218\u1270 \u121d\u1215\u1228\u1275"
+    ],
+    "ERAS": [
+      "\u12d3/\u12d3",
+      "\u12d3/\u121d"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u1303\u1295\u12e9\u12c8\u122a",
+      "\u134c\u1265\u1229\u12c8\u122a",
+      "\u121b\u122d\u127d",
+      "\u12a4\u1355\u122a\u120d",
+      "\u121c\u12ed",
+      "\u1301\u1295",
+      "\u1301\u120b\u12ed",
+      "\u12a6\u1308\u1235\u1275",
+      "\u1234\u1355\u1274\u121d\u1260\u122d",
+      "\u12a6\u12ad\u1276\u1260\u122d",
+      "\u1296\u126c\u121d\u1260\u122d",
+      "\u12f2\u1234\u121d\u1260\u122d"
+    ],
+    "SHORTDAY": [
+      "\u12a5\u1211\u12f5",
+      "\u1230\u129e",
+      "\u121b\u12ad\u1230",
+      "\u1228\u1261\u12d5",
+      "\u1210\u1219\u1235",
+      "\u12d3\u122d\u1265",
+      "\u1245\u12f3\u121c"
+    ],
+    "SHORTMONTH": [
+      "\u1303\u1295\u12e9",
+      "\u134c\u1265\u1229",
+      "\u121b\u122d\u127d",
+      "\u12a4\u1355\u122a",
+      "\u121c\u12ed",
+      "\u1301\u1295",
+      "\u1301\u120b\u12ed",
+      "\u12a6\u1308\u1235",
+      "\u1234\u1355\u1274",
+      "\u12a6\u12ad\u1276",
+      "\u1296\u126c\u121d",
+      "\u12f2\u1234\u121d"
+    ],
+    "STANDALONEMONTH": [
+      "\u1303\u1295\u12e9\u12c8\u122a",
+      "\u134c\u1265\u1229\u12c8\u122a",
+      "\u121b\u122d\u127d",
+      "\u12a4\u1355\u122a\u120d",
+      "\u121c\u12ed",
+      "\u1301\u1295",
+      "\u1301\u120b\u12ed",
+      "\u12a6\u1308\u1235\u1275",
+      "\u1234\u1355\u1274\u121d\u1260\u122d",
+      "\u12a6\u12ad\u1276\u1260\u122d",
+      "\u1296\u126c\u121d\u1260\u122d",
+      "\u12f2\u1234\u121d\u1260\u122d"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Birr",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "am-et",
+  "localeID": "am_ET",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_am.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_am.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_am.js
new file mode 100644
index 0000000..4f3fca1
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_am.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u1325\u12cb\u1275",
+      "\u12a8\u1230\u12d3\u1275"
+    ],
+    "DAY": [
+      "\u12a5\u1211\u12f5",
+      "\u1230\u129e",
+      "\u121b\u12ad\u1230\u129e",
+      "\u1228\u1261\u12d5",
+      "\u1210\u1219\u1235",
+      "\u12d3\u122d\u1265",
+      "\u1245\u12f3\u121c"
+    ],
+    "ERANAMES": [
+      "\u12d3\u1218\u1270 \u12d3\u1208\u121d",
+      "\u12d3\u1218\u1270 \u121d\u1215\u1228\u1275"
+    ],
+    "ERAS": [
+      "\u12d3/\u12d3",
+      "\u12d3/\u121d"
+    ],
+    "FIRSTDAYOFWEEK": 6,
+    "MONTH": [
+      "\u1303\u1295\u12e9\u12c8\u122a",
+      "\u134c\u1265\u1229\u12c8\u122a",
+      "\u121b\u122d\u127d",
+      "\u12a4\u1355\u122a\u120d",
+      "\u121c\u12ed",
+      "\u1301\u1295",
+      "\u1301\u120b\u12ed",
+      "\u12a6\u1308\u1235\u1275",
+      "\u1234\u1355\u1274\u121d\u1260\u122d",
+      "\u12a6\u12ad\u1276\u1260\u122d",
+      "\u1296\u126c\u121d\u1260\u122d",
+      "\u12f2\u1234\u121d\u1260\u122d"
+    ],
+    "SHORTDAY": [
+      "\u12a5\u1211\u12f5",
+      "\u1230\u129e",
+      "\u121b\u12ad\u1230",
+      "\u1228\u1261\u12d5",
+      "\u1210\u1219\u1235",
+      "\u12d3\u122d\u1265",
+      "\u1245\u12f3\u121c"
+    ],
+    "SHORTMONTH": [
+      "\u1303\u1295\u12e9",
+      "\u134c\u1265\u1229",
+      "\u121b\u122d\u127d",
+      "\u12a4\u1355\u122a",
+      "\u121c\u12ed",
+      "\u1301\u1295",
+      "\u1301\u120b\u12ed",
+      "\u12a6\u1308\u1235",
+      "\u1234\u1355\u1274",
+      "\u12a6\u12ad\u1276",
+      "\u1296\u126c\u121d",
+      "\u12f2\u1234\u121d"
+    ],
+    "STANDALONEMONTH": [
+      "\u1303\u1295\u12e9\u12c8\u122a",
+      "\u134c\u1265\u1229\u12c8\u122a",
+      "\u121b\u122d\u127d",
+      "\u12a4\u1355\u122a\u120d",
+      "\u121c\u12ed",
+      "\u1301\u1295",
+      "\u1301\u120b\u12ed",
+      "\u12a6\u1308\u1235\u1275",
+      "\u1234\u1355\u1274\u121d\u1260\u122d",
+      "\u12a6\u12ad\u1276\u1260\u122d",
+      "\u1296\u126c\u121d\u1260\u122d",
+      "\u12f2\u1234\u121d\u1260\u122d"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE, d MMMM y",
+    "longDate": "d MMMM y",
+    "medium": "d MMM y h:mm:ss a",
+    "mediumDate": "d MMM y",
+    "mediumTime": "h:mm:ss a",
+    "short": "dd/MM/y h:mm a",
+    "shortDate": "dd/MM/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Birr",
+    "DECIMAL_SEP": ".",
+    "GROUP_SEP": ",",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4",
+        "negSuf": "",
+        "posPre": "\u00a4",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "am",
+  "localeID": "am",
+  "pluralCat": function(n, opt_precision) {  var i = n | 0;  if (i == 0 || n == 1) {    return PLURAL_CATEGORY.ONE;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-001.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-001.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-001.js
new file mode 100644
index 0000000..4da6ab6
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-001.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0635",
+      "\u0645"
+    ],
+    "DAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "ERANAMES": [
+      "\u0642\u0628\u0644 \u0627\u0644\u0645\u064a\u0644\u0627\u062f",
+      "\u0645\u064a\u0644\u0627\u062f\u064a"
+    ],
+    "ERAS": [
+      "\u0642.\u0645",
+      "\u0645"
+    ],
+    "FIRSTDAYOFWEEK": 5,
+    "MONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "SHORTDAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "SHORTMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "STANDALONEMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      5
+    ],
+    "fullDate": "EEEE\u060c d MMMM\u060c y",
+    "longDate": "d MMMM\u060c y",
+    "medium": "dd\u200f/MM\u200f/y h:mm:ss a",
+    "mediumDate": "dd\u200f/MM\u200f/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d\u200f/M\u200f/y h:mm a",
+    "shortDate": "d\u200f/M\u200f/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u00a3",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ar-001",
+  "localeID": "ar_001",
+  "pluralCat": function(n, opt_precision) {  if (n == 0) {    return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  if (n == 2) {    return PLURAL_CATEGORY.TWO;  }  if (n % 100 >= 3 && n % 100 <= 10) {    return PLURAL_CATEGORY.FEW;  }  if (n % 100 >= 11 && n % 100 <= 99) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-ae.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-ae.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-ae.js
new file mode 100644
index 0000000..a1524dc
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-ae.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0635",
+      "\u0645"
+    ],
+    "DAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "ERANAMES": [
+      "\u0642\u0628\u0644 \u0627\u0644\u0645\u064a\u0644\u0627\u062f",
+      "\u0645\u064a\u0644\u0627\u062f\u064a"
+    ],
+    "ERAS": [
+      "\u0642.\u0645",
+      "\u0645"
+    ],
+    "FIRSTDAYOFWEEK": 5,
+    "MONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "SHORTDAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "SHORTMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "STANDALONEMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      5
+    ],
+    "fullDate": "EEEE\u060c d MMMM\u060c y",
+    "longDate": "d MMMM\u060c y",
+    "medium": "dd\u200f/MM\u200f/y h:mm:ss a",
+    "mediumDate": "dd\u200f/MM\u200f/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d\u200f/M\u200f/y h:mm a",
+    "shortDate": "d\u200f/M\u200f/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "dh",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ar-ae",
+  "localeID": "ar_AE",
+  "pluralCat": function(n, opt_precision) {  if (n == 0) {    return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  if (n == 2) {    return PLURAL_CATEGORY.TWO;  }  if (n % 100 >= 3 && n % 100 <= 10) {    return PLURAL_CATEGORY.FEW;  }  if (n % 100 >= 11 && n % 100 <= 99) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-bh.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-bh.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-bh.js
new file mode 100644
index 0000000..8b24a40
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-bh.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0635",
+      "\u0645"
+    ],
+    "DAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "ERANAMES": [
+      "\u0642\u0628\u0644 \u0627\u0644\u0645\u064a\u0644\u0627\u062f",
+      "\u0645\u064a\u0644\u0627\u062f\u064a"
+    ],
+    "ERAS": [
+      "\u0642.\u0645",
+      "\u0645"
+    ],
+    "FIRSTDAYOFWEEK": 5,
+    "MONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "SHORTDAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "SHORTMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "STANDALONEMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      5
+    ],
+    "fullDate": "EEEE\u060c d MMMM\u060c y",
+    "longDate": "d MMMM\u060c y",
+    "medium": "dd\u200f/MM\u200f/y h:mm:ss a",
+    "mediumDate": "dd\u200f/MM\u200f/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d\u200f/M\u200f/y h:mm a",
+    "shortDate": "d\u200f/M\u200f/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "din",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ar-bh",
+  "localeID": "ar_BH",
+  "pluralCat": function(n, opt_precision) {  if (n == 0) {    return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  if (n == 2) {    return PLURAL_CATEGORY.TWO;  }  if (n % 100 >= 3 && n % 100 <= 10) {    return PLURAL_CATEGORY.FEW;  }  if (n % 100 >= 11 && n % 100 <= 99) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-dj.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-dj.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-dj.js
new file mode 100644
index 0000000..673aa7e
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-dj.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0635",
+      "\u0645"
+    ],
+    "DAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "ERANAMES": [
+      "\u0642\u0628\u0644 \u0627\u0644\u0645\u064a\u0644\u0627\u062f",
+      "\u0645\u064a\u0644\u0627\u062f\u064a"
+    ],
+    "ERAS": [
+      "\u0642.\u0645",
+      "\u0645"
+    ],
+    "FIRSTDAYOFWEEK": 5,
+    "MONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "SHORTDAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "SHORTMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "STANDALONEMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "WEEKENDRANGE": [
+      5,
+      6
+    ],
+    "fullDate": "EEEE\u060c d MMMM\u060c y",
+    "longDate": "d MMMM\u060c y",
+    "medium": "dd\u200f/MM\u200f/y h:mm:ss a",
+    "mediumDate": "dd\u200f/MM\u200f/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d\u200f/M\u200f/y h:mm a",
+    "shortDate": "d\u200f/M\u200f/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "Fdj",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ar-dj",
+  "localeID": "ar_DJ",
+  "pluralCat": function(n, opt_precision) {  if (n == 0) {    return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  if (n == 2) {    return PLURAL_CATEGORY.TWO;  }  if (n % 100 >= 3 && n % 100 <= 10) {    return PLURAL_CATEGORY.FEW;  }  if (n % 100 >= 11 && n % 100 <= 99) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-dz.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-dz.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-dz.js
new file mode 100644
index 0000000..037cc99
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-dz.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0635",
+      "\u0645"
+    ],
+    "DAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "ERANAMES": [
+      "\u0642\u0628\u0644 \u0627\u0644\u0645\u064a\u0644\u0627\u062f",
+      "\u0645\u064a\u0644\u0627\u062f\u064a"
+    ],
+    "ERAS": [
+      "\u0642.\u0645",
+      "\u0645"
+    ],
+    "FIRSTDAYOFWEEK": 5,
+    "MONTH": [
+      "\u062c\u0627\u0646\u0641\u064a",
+      "\u0641\u064a\u0641\u0631\u064a",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0641\u0631\u064a\u0644",
+      "\u0645\u0627\u064a",
+      "\u062c\u0648\u0627\u0646",
+      "\u062c\u0648\u064a\u0644\u064a\u0629",
+      "\u0623\u0648\u062a",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "SHORTDAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "SHORTMONTH": [
+      "\u062c\u0627\u0646\u0641\u064a",
+      "\u0641\u064a\u0641\u0631\u064a",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0641\u0631\u064a\u0644",
+      "\u0645\u0627\u064a",
+      "\u062c\u0648\u0627\u0646",
+      "\u062c\u0648\u064a\u0644\u064a\u0629",
+      "\u0623\u0648\u062a",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "STANDALONEMONTH": [
+      "\u062c\u0627\u0646\u0641\u064a",
+      "\u0641\u064a\u0641\u0631\u064a",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0641\u0631\u064a\u0644",
+      "\u0645\u0627\u064a",
+      "\u062c\u0648\u0627\u0646",
+      "\u062c\u0648\u064a\u0644\u064a\u0629",
+      "\u0623\u0648\u062a",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      5
+    ],
+    "fullDate": "EEEE\u060c d MMMM\u060c y",
+    "longDate": "d MMMM\u060c y",
+    "medium": "dd\u200f/MM\u200f/y h:mm:ss a",
+    "mediumDate": "dd\u200f/MM\u200f/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d\u200f/M\u200f/y h:mm a",
+    "shortDate": "d\u200f/M\u200f/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "din",
+    "DECIMAL_SEP": ",",
+    "GROUP_SEP": ".",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ar-dz",
+  "localeID": "ar_DZ",
+  "pluralCat": function(n, opt_precision) {  if (n == 0) {    return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  if (n == 2) {    return PLURAL_CATEGORY.TWO;  }  if (n % 100 >= 3 && n % 100 <= 10) {    return PLURAL_CATEGORY.FEW;  }  if (n % 100 >= 11 && n % 100 <= 99) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-eg.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-eg.js b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-eg.js
new file mode 100644
index 0000000..07e7007
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/i18n/angular-locale_ar-eg.js
@@ -0,0 +1,125 @@
+'use strict';
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+  "DATETIME_FORMATS": {
+    "AMPMS": [
+      "\u0635",
+      "\u0645"
+    ],
+    "DAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "ERANAMES": [
+      "\u0642\u0628\u0644 \u0627\u0644\u0645\u064a\u0644\u0627\u062f",
+      "\u0645\u064a\u0644\u0627\u062f\u064a"
+    ],
+    "ERAS": [
+      "\u0642.\u0645",
+      "\u0645"
+    ],
+    "FIRSTDAYOFWEEK": 5,
+    "MONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "SHORTDAY": [
+      "\u0627\u0644\u0623\u062d\u062f",
+      "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
+      "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
+      "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
+      "\u0627\u0644\u062e\u0645\u064a\u0633",
+      "\u0627\u0644\u062c\u0645\u0639\u0629",
+      "\u0627\u0644\u0633\u0628\u062a"
+    ],
+    "SHORTMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "STANDALONEMONTH": [
+      "\u064a\u0646\u0627\u064a\u0631",
+      "\u0641\u0628\u0631\u0627\u064a\u0631",
+      "\u0645\u0627\u0631\u0633",
+      "\u0623\u0628\u0631\u064a\u0644",
+      "\u0645\u0627\u064a\u0648",
+      "\u064a\u0648\u0646\u064a\u0648",
+      "\u064a\u0648\u0644\u064a\u0648",
+      "\u0623\u063a\u0633\u0637\u0633",
+      "\u0633\u0628\u062a\u0645\u0628\u0631",
+      "\u0623\u0643\u062a\u0648\u0628\u0631",
+      "\u0646\u0648\u0641\u0645\u0628\u0631",
+      "\u062f\u064a\u0633\u0645\u0628\u0631"
+    ],
+    "WEEKENDRANGE": [
+      4,
+      5
+    ],
+    "fullDate": "EEEE\u060c d MMMM\u060c y",
+    "longDate": "d MMMM\u060c y",
+    "medium": "dd\u200f/MM\u200f/y h:mm:ss a",
+    "mediumDate": "dd\u200f/MM\u200f/y",
+    "mediumTime": "h:mm:ss a",
+    "short": "d\u200f/M\u200f/y h:mm a",
+    "shortDate": "d\u200f/M\u200f/y",
+    "shortTime": "h:mm a"
+  },
+  "NUMBER_FORMATS": {
+    "CURRENCY_SYM": "\u00a3",
+    "DECIMAL_SEP": "\u066b",
+    "GROUP_SEP": "\u066c",
+    "PATTERNS": [
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 3,
+        "minFrac": 0,
+        "minInt": 1,
+        "negPre": "-",
+        "negSuf": "",
+        "posPre": "",
+        "posSuf": ""
+      },
+      {
+        "gSize": 3,
+        "lgSize": 3,
+        "maxFrac": 2,
+        "minFrac": 2,
+        "minInt": 1,
+        "negPre": "-\u00a4\u00a0",
+        "negSuf": "",
+        "posPre": "\u00a4\u00a0",
+        "posSuf": ""
+      }
+    ]
+  },
+  "id": "ar-eg",
+  "localeID": "ar_EG",
+  "pluralCat": function(n, opt_precision) {  if (n == 0) {    return PLURAL_CATEGORY.ZERO;  }  if (n == 1) {    return PLURAL_CATEGORY.ONE;  }  if (n == 2) {    return PLURAL_CATEGORY.TWO;  }  if (n % 100 >= 3 && n % 100 <= 10) {    return PLURAL_CATEGORY.FEW;  }  if (n % 100 >= 11 && n % 100 <= 99) {    return PLURAL_CATEGORY.MANY;  }  return PLURAL_CATEGORY.OTHER;}
+});
+}]);


[43/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular-material/angular-material.min.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular-material/angular-material.min.js b/rocketmq-console/src/main/resources/static/vendor/angular-material/angular-material.min.js
new file mode 100644
index 0000000..87f1bca
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular-material/angular-material.min.js
@@ -0,0 +1,15 @@
+/*!
+ * Angular Material Design
+ * https://github.com/angular/material
+ * @license MIT
+ * v1.1.0-rc2
+ */
+!function(e,t,n){"use strict";!function(){t.module("ngMaterial",["ng","ngAnimate","ngAria","material.core","material.core.gestures","material.core.layout","material.core.theming.palette","material.core.theming","material.core.animate","material.components.autocomplete","material.components.bottomSheet","material.components.backdrop","material.components.button","material.components.card","material.components.checkbox","material.components.chips","material.components.content","material.components.datepicker","material.components.dialog","material.components.divider","material.components.fabActions","material.components.fabShared","material.components.fabSpeedDial","material.components.fabToolbar","material.components.gridList","material.components.fabTrigger","material.components.icon","material.components.input","material.components.list","material.components.menuBar","material.components.menu","material.components.progressCircular","material.components.progressLinear","material.com
 ponents.radioButton","material.components.select","material.components.showHide","material.components.sidenav","material.components.sticky","material.components.slider","material.components.subheader","material.components.swipe","material.components.switch","material.components.tabs","material.components.toast","material.components.toolbar","material.components.virtualRepeat","material.components.tooltip","material.components.whiteframe"])}(),function(){function e(e,t){if(t.has("$swipe")){var n="You are using the ngTouch module. \nAngular Material already has mobile click, tap, and swipe support... \nngTouch is not supported with Angular Material!";e.warn(n)}}function n(e,t){e.decorator("$$rAF",["$delegate",o]),t.theme("default").primaryPalette("indigo").accentPalette("pink").warnPalette("deep-orange").backgroundPalette("grey")}function o(e){return e.throttle=function(t){var n,o,r,i;return function(){n=arguments,i=this,r=t,o||(o=!0,e(function(){r.apply(i,Array.prototype.slice.call(n
 )),o=!1}))}},e}t.module("material.core",["ngAnimate","material.core.animate","material.core.layout","material.core.gestures","material.core.theming"]).config(n).run(e),e.$inject=["$log","$injector"],n.$inject=["$provide","$mdThemingProvider"],o.$inject=["$delegate"]}(),function(){function e(){return{restrict:"A",link:n}}function n(e,t,n){var o=n.mdAutoFocus||n.mdAutofocus||n.mdSidenavFocus;e.$watch(o,function(e){t.toggleClass("_md-autofocus",e)})}t.module("material.core").directive("mdAutofocus",e).directive("mdAutoFocus",e).directive("mdSidenavFocus",e)}(),function(){function e(e){function t(e){return n?"webkit"+e.charAt(0).toUpperCase()+e.substring(1):e}var n=/webkit/i.test(e.vendorPrefix);return{KEY_CODE:{COMMA:188,SEMICOLON:186,ENTER:13,ESCAPE:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT_ARROW:37,UP_ARROW:38,RIGHT_ARROW:39,DOWN_ARROW:40,TAB:9,BACKSPACE:8,DELETE:46},CSS:{TRANSITIONEND:"transitionend"+(n?" webkitTransitionEnd":""),ANIMATIONEND:"animationend"+(n?" webkit
 AnimationEnd":""),TRANSFORM:t("transform"),TRANSFORM_ORIGIN:t("transformOrigin"),TRANSITION:t("transition"),TRANSITION_DURATION:t("transitionDuration"),ANIMATION_PLAY_STATE:t("animationPlayState"),ANIMATION_DURATION:t("animationDuration"),ANIMATION_NAME:t("animationName"),ANIMATION_TIMING:t("animationTimingFunction"),ANIMATION_DIRECTION:t("animationDirection")},MEDIA:{xs:"(max-width: 599px)","gt-xs":"(min-width: 600px)",sm:"(min-width: 600px) and (max-width: 959px)","gt-sm":"(min-width: 960px)",md:"(min-width: 960px) and (max-width: 1279px)","gt-md":"(min-width: 1280px)",lg:"(min-width: 1280px) and (max-width: 1919px)","gt-lg":"(min-width: 1920px)",xl:"(min-width: 1920px)",print:"print"},MEDIA_PRIORITY:["xl","gt-lg","lg","gt-md","md","gt-sm","sm","gt-xs","xs","print"]}}t.module("material.core").factory("$mdConstant",e),e.$inject=["$sniffer"]}(),function(){function e(e,n){function o(){return[].concat(v)}function r(){return v.length}function i(e){return v.length&&e>-1&&e<v.length}func
 tion a(e){return e?i(u(e)+1):!1}function d(e){return e?i(u(e)-1):!1}function c(e){return i(e)?v[e]:null}function s(e,t){return v.filter(function(n){return n[e]===t})}function l(e,n){return e?(t.isNumber(n)||(n=v.length),v.splice(n,0,e),u(e)):-1}function m(e){p(e)&&v.splice(u(e),1)}function u(e){return v.indexOf(e)}function p(e){return e&&u(e)>-1}function h(){return v.length?v[0]:null}function f(){return v.length?v[v.length-1]:null}function g(e,o,r,a){r=r||b;for(var d=u(o);;){if(!i(d))return null;var c=d+(e?-1:1),s=null;if(i(c)?s=v[c]:n&&(s=e?f():h(),c=u(s)),null===s||c===a)return null;if(r(s))return s;t.isUndefined(a)&&(a=c),d=c}}var b=function(){return!0};e&&!t.isArray(e)&&(e=Array.prototype.slice.call(e)),n=!!n;var v=e||[];return{items:o,count:r,inRange:i,contains:p,indexOf:u,itemAt:c,findBy:s,add:l,remove:m,first:h,last:f,next:t.bind(null,g,!1),previous:t.bind(null,g,!0),hasPrevious:d,hasNext:a}}t.module("material.core").config(["$provide",function(t){t.decorator("$mdUtil",["$del
 egate",function(t){return t.iterator=e,t}])}])}(),function(){function e(e,n,o){function r(e){var n=u[e];t.isUndefined(n)&&(n=u[e]=i(e));var o=h[n];return t.isUndefined(o)&&(o=a(n)),o}function i(t){return e.MEDIA[t]||("("!==t.charAt(0)?"("+t+")":t)}function a(e){var t=p[e];return t||(t=p[e]=o.matchMedia(e)),t.addListener(d),h[t.media]=!!t.matches}function d(e){n.$evalAsync(function(){h[e.media]=!!e.matches})}function c(e){return p[e]}function s(t,n){for(var o=0;o<e.MEDIA_PRIORITY.length;o++){var r=e.MEDIA_PRIORITY[o];if(p[u[r]].matches){var i=m(t,n+"-"+r);if(t[i])return t[i]}}return t[m(t,n)]}function l(n,o,r){var i=[];return n.forEach(function(n){var a=m(o,n);t.isDefined(o[a])&&i.push(o.$observe(a,t.bind(void 0,r,null)));for(var d in e.MEDIA)a=m(o,n+"-"+d),t.isDefined(o[a])&&i.push(o.$observe(a,t.bind(void 0,r,d)))}),function(){i.forEach(function(e){e()})}}function m(e,t){return f[t]||(f[t]=e.$normalize(t))}var u={},p={},h={},f={};return r.getResponsiveAttribute=s,r.getQuery=c,r.wat
 chResponsiveAttributes=l,r}t.module("material.core").factory("$mdMedia",e),e.$inject=["$mdConstant","$rootScope","$window"]}(),function(){function o(o,i,a,d,c,s,l,m,u){function p(e){return e[0]||e}var h=s.startSymbol(),f=s.endSymbol(),g="{{"===h&&"}}"===f,b=function(e,n,o){var r=!1;if(e&&e.length){var i=u.getComputedStyle(e[0]);r=t.isDefined(i[n])&&(o?i[n]==o:!0)}return r},v={dom:{},now:e.performance?t.bind(e.performance,e.performance.now):Date.now||function(){return(new Date).getTime()},bidi:function(e,n,r,i){function a(e){return e?d(e)?e:e+"px":"0"}function d(e){return String(e).indexOf("px")>-1}var c=!("rtl"==o[0].dir||"rtl"==o[0].body.dir);return 0==arguments.length?c?"ltr":"rtl":void(c&&t.isDefined(r)?t.element(e).css(n,a(r)):!c&&t.isDefined(i)&&t.element(e).css(n,a(i)))},clientRect:function(e,t,n){var o=p(e);t=p(t||o.offsetParent||document.body);var r=o.getBoundingClientRect(),i=n?t.getBoundingClientRect():{left:0,top:0,width:0,height:0};return{left:r.left-i.left,top:r.top-i.t
 op,width:r.width,height:r.height}},offsetRect:function(e,t){return v.clientRect(e,t,!0)},nodesToArray:function(e){e=e||[];for(var t=[],n=0;n<e.length;++n)t.push(e.item(n));return t},scrollTop:function(e){e=t.element(e||o[0].body);var r=e[0]==o[0].body?o[0].body:n,i=r?r.scrollTop+r.parentElement.scrollTop:0;return i||Math.abs(e[0].getBoundingClientRect().top)},findFocusTarget:function(e,n){function o(e,n){var o,r=e[0].querySelectorAll(n);return r&&r.length&&r.length&&t.forEach(r,function(e){e=t.element(e);var n=e.hasClass("_md-autofocus");n&&(o=e)}),o}var r,i="[md-autofocus]";return r=o(e,n||i),r||n==i||(r=o(e,"[md-auto-focus]"),r||(r=o(e,i))),r},disableScrollAround:function(e,n){function r(e){function n(e){e.preventDefault()}e=t.element(e||d)[0];var o=50,r=t.element('<div class="md-scroll-mask">  <div class="md-scroll-mask-bar"></div></div>').css("z-index",o);return e.appendChild(r[0]),r.on("wheel",n),r.on("touchmove",n),function(){r.off("wheel"),r.off("touchmove"),r[0].parentNode.r
 emoveChild(r[0]),delete v.disableScrollAround._enableScrolling}}function i(){var e=d.parentNode,t=e.style.cssText||"",n=d.style.cssText||"",o=v.scrollTop(d),r=d.clientWidth;return d.scrollHeight>d.clientHeight+1&&(a(d,{position:"fixed",width:"100%",top:-o+"px"}),a(e,{overflowY:"scroll"})),d.clientWidth<r&&a(d,{overflow:"hidden"}),function(){d.style.cssText=n,e.style.cssText=t,d.scrollTop=o,e.scrollTop=o}}function a(e,t){for(var n in t)e.style[n]=t[n]}if(v.disableScrollAround._count=v.disableScrollAround._count||0,++v.disableScrollAround._count,v.disableScrollAround._enableScrolling)return v.disableScrollAround._enableScrolling;e=t.element(e);var d=o[0].body,c=i(),s=r(n);return v.disableScrollAround._enableScrolling=function(){--v.disableScrollAround._count||(c(),s(),delete v.disableScrollAround._enableScrolling)}},enableScrolling:function(){var e=this.disableScrollAround._enableScrolling;e&&e()},floatingScrollbars:function(){if(this.floatingScrollbars.cached===n){var e=t.element("<d
 iv><div></div></div>").css({width:"100%","z-index":-1,position:"absolute",height:"35px","overflow-y":"scroll"});e.children().css("height","60px"),o[0].body.appendChild(e[0]),this.floatingScrollbars.cached=e[0].offsetWidth==e[0].childNodes[0].offsetWidth,e.remove()}return this.floatingScrollbars.cached},forceFocus:function(t){var n=t[0]||t;document.addEventListener("click",function r(e){e.target===n&&e.$focus&&(n.focus(),e.stopImmediatePropagation(),e.preventDefault(),n.removeEventListener("click",r))},!0);var o=document.createEvent("MouseEvents");o.initMouseEvent("click",!1,!0,e,{},0,0,0,0,!1,!1,!1,!1,0,null),o.$material=!0,o.$focus=!0,n.dispatchEvent(o)},createBackdrop:function(e,t){return a(v.supplant('<md-backdrop class="{0}">',[t]))(e)},supplant:function(e,t,n){return n=n||/\{([^\{\}]*)\}/g,e.replace(n,function(e,n){var o=n.split("."),r=t;try{for(var i in o)o.hasOwnProperty(i)&&(r=r[o[i]])}catch(a){r=e}return"string"==typeof r||"number"==typeof r?r:e})},fakeNgModel:function(){re
 turn{$fake:!0,$setTouched:t.noop,$setViewValue:function(e){this.$viewValue=e,this.$render(e),this.$viewChangeListeners.forEach(function(e){e()})},$isEmpty:function(e){return 0===(""+e).length},$parsers:[],$formatters:[],$viewChangeListeners:[],$render:t.noop}},debounce:function(e,t,o,r){var a;return function(){var d=o,c=Array.prototype.slice.call(arguments);i.cancel(a),a=i(function(){a=n,e.apply(d,c)},t||10,r)}},throttle:function(e,t){var n;return function(){var o=this,r=arguments,i=v.now();(!n||i-n>t)&&(e.apply(o,r),n=i)}},time:function(e){var t=v.now();return e(),v.now()-t},valueOnUse:function(e,t,n){var o=null,r=Array.prototype.slice.call(arguments),i=r.length>3?r.slice(3):[];Object.defineProperty(e,t,{get:function(){return null===o&&(o=n.apply(e,i)),o}})},nextUid:function(){return""+r++},disconnectScope:function(e){if(e&&e.$root!==e&&!e.$$destroyed){var t=e.$parent;e.$$disconnected=!0,t.$$childHead===e&&(t.$$childHead=e.$$nextSibling),t.$$childTail===e&&(t.$$childTail=e.$$prevSi
 bling),e.$$prevSibling&&(e.$$prevSibling.$$nextSibling=e.$$nextSibling),e.$$nextSibling&&(e.$$nextSibling.$$prevSibling=e.$$prevSibling),e.$$nextSibling=e.$$prevSibling=null}},reconnectScope:function(e){if(e&&e.$root!==e&&e.$$disconnected){var t=e,n=t.$parent;t.$$disconnected=!1,t.$$prevSibling=n.$$childTail,n.$$childHead?(n.$$childTail.$$nextSibling=t,n.$$childTail=t):n.$$childHead=n.$$childTail=t}},getClosest:function(e,n,o){if(e instanceof t.element&&(e=e[0]),n=n.toUpperCase(),o&&(e=e.parentNode),!e)return null;do if(e.nodeName===n)return e;while(e=e.parentNode);return null},elementContains:function(n,o){var r=e.Node&&e.Node.prototype&&Node.prototype.contains,i=r?t.bind(n,n.contains):t.bind(n,function(e){return n===o||!!(16&this.compareDocumentPosition(e))});return i(o)},extractElementByName:function(e,n,o,r){function i(e){return a(e)||(o?d(e):null)}function a(e){if(e)for(var t=0,o=e.length;o>t;t++)if(e[t].nodeName.toLowerCase()===n)return e[t];return null}function d(e){var t;if(
 e)for(var n=0,o=e.length;o>n;n++){var r=e[n];if(!t)for(var a=0,d=r.childNodes.length;d>a;a++)t=t||i([r.childNodes[a]])}return t}var c=i(e);return!c&&r&&l.warn(v.supplant("Unable to find node '{0}' in element '{1}'.",[n,e[0].outerHTML])),t.element(c||e)},initOptionalProperties:function(e,n,o){o=o||{},t.forEach(e.$$isolateBindings,function(r,i){if(r.optional&&t.isUndefined(e[i])){var a=t.isDefined(n[r.attrName]);e[i]=t.isDefined(o[i])?o[i]:a}})},nextTick:function(e,t,n){function o(){var e=n&&n.$$destroyed,t=e?[]:r.queue,o=e?null:r.digest;r.queue=[],r.timeout=null,r.digest=!1,t.forEach(function(e){e()}),o&&d.$digest()}var r=v.nextTick,a=r.timeout,c=r.queue||[];return c.push(e),null==t&&(t=!0),r.digest=r.digest||t,r.queue=c,a||(r.timeout=i(o,0,!1))},processTemplate:function(e){return g?e:e&&t.isString(e)?e.replace(/\{\{/g,h).replace(/}}/g,f):e},getParentWithPointerEvents:function(e){for(var t=e.parent();b(t,"pointer-events","none");)t=t.parent();return t},getNearestContentElement:functi
 on(e){for(var t=e.parent()[0];t&&t!==m[0]&&t!==document.body&&"MD-CONTENT"!==t.nodeName.toUpperCase();)t=t.parentNode;return t},parseAttributeBoolean:function(e,t){return""===e||!!e&&(t===!1||"false"!==e&&"0"!==e)},hasComputedStyle:b};return v.dom.animator=c(v),v}var r=0;t.module("material.core").factory("$mdUtil",o),o.$inject=["$document","$timeout","$compile","$rootScope","$$mdAnimate","$interpolate","$log","$rootElement","$window"],t.element.prototype.focus=t.element.prototype.focus||function(){return this.length&&this[0].focus(),this},t.element.prototype.blur=t.element.prototype.blur||function(){return this.length&&this[0].blur(),this}}(),function(){function e(e,n,o,r){function i(e,o,r){var i=t.element(e)[0]||e;!i||i.hasAttribute(o)&&0!==i.getAttribute(o).length||s(i,o)||(r=t.isString(r)?r.trim():"",r.length?e.attr(o,r):n.warn('ARIA: Attribute "',o,'", required for accessibility, is missing on node:',i))}function a(t,n,o){e(function(){i(t,n,o())})}function d(e,t){var n=c(e)||"",
 o=n.indexOf(r.startSymbol())>-1;o?a(e,t,function(){return c(e)}):i(e,t,n)}function c(e){return(e.text()||"").trim()}function s(e,t){function n(e){var t=e.currentStyle?e.currentStyle:o.getComputedStyle(e);return"none"===t.display}var r=e.hasChildNodes(),i=!1;if(r)for(var a=e.childNodes,d=0;d<a.length;d++){var c=a[d];1===c.nodeType&&c.hasAttribute(t)&&(n(c)||(i=!0))}return i}return{expect:i,expectAsync:a,expectWithText:d}}t.module("material.core").service("$mdAria",e),e.$inject=["$$rAF","$log","$window","$interpolate"]}(),function(){function e(e,n,o,r,i,a){this.compile=function(d){var c=d.templateUrl,s=d.template||"",l=d.controller,m=d.controllerAs,u=t.extend({},d.resolve||{}),p=t.extend({},d.locals||{}),h=d.transformTemplate||t.identity,f=d.bindToController;return t.forEach(u,function(e,n){t.isString(e)?u[n]=o.get(e):u[n]=o.invoke(e)}),t.extend(u,p),c?u.$template=n.get(c,{cache:a}).then(function(e){return e.data}):u.$template=e.when(s),e.all(u).then(function(e){var n,o=h(e.$template,
 d),a=d.element||t.element("<div>").html(o.trim()).contents(),c=r(a);return n={locals:e,element:a,link:function(o){if(e.$scope=o,l){var r=i(l,e,!0);f&&t.extend(r.instance,e);var d=r();a.data("$ngControllerController",d),a.children().data("$ngControllerController",d),m&&(o[m]=d),n.controller=d}return c(o)}}})}}t.module("material.core").service("$mdCompiler",e),e.$inject=["$q","$http","$injector","$compile","$controller","$templateCache"]}(),function(){function n(){}function o(n,o,r){function i(e){return function(t,n){n.distance<this.state.options.maxDistance&&this.dispatchEvent(t,e,n)}}function a(e,t,n){var o=h[t.replace(/^\$md./,"")];if(!o)throw new Error("Failed to register element with handler "+t+". Available handlers: "+Object.keys(h).join(", "));return o.registerElement(e,n)}function c(e,o){var r=new n(e);return t.extend(r,o),h[e]=r,g}var s=navigator.userAgent||navigator.vendor||e.opera,m=s.match(/ipad|iphone|ipod/i),u=s.match(/android/i),p="undefined"!=typeof e.jQuery&&t.elemen
 t===e.jQuery,g={handler:c,register:a,isHijackingClicks:(m||u)&&!p&&!f};if(g.isHijackingClicks){var b=6;g.handler("click",{options:{maxDistance:b},onEnd:i("click")}),g.handler("focus",{options:{maxDistance:b},onEnd:function(e,t){function n(e){var t=["INPUT","SELECT","BUTTON","TEXTAREA","VIDEO","AUDIO"];return"-1"!=e.getAttribute("tabindex")&&!e.hasAttribute("DISABLED")&&(e.hasAttribute("tabindex")||e.hasAttribute("href")||-1!=t.indexOf(e.nodeName))}t.distance<this.state.options.maxDistance&&n(e.target)&&(this.dispatchEvent(e,"focus",t),e.target.focus())}}),g.handler("mouseup",{options:{maxDistance:b},onEnd:i("mouseup")}),g.handler("mousedown",{onStart:function(e){this.dispatchEvent(e,"mousedown")}})}return g.handler("press",{onStart:function(e,t){this.dispatchEvent(e,"$md.pressdown")},onEnd:function(e,t){this.dispatchEvent(e,"$md.pressup")}}).handler("hold",{options:{maxDistance:6,delay:500},onCancel:function(){r.cancel(this.state.timeout)},onStart:function(e,n){return this.state.reg
 isteredParent?(this.state.pos={x:n.x,y:n.y},void(this.state.timeout=r(t.bind(this,function(){this.dispatchEvent(e,"$md.hold"),this.cancel()}),this.state.options.delay,!1))):this.cancel()},onMove:function(e,t){e.preventDefault();var n=this.state.pos.x-t.x,o=this.state.pos.y-t.y;Math.sqrt(n*n+o*o)>this.options.maxDistance&&this.cancel()},onEnd:function(){this.onCancel()}}).handler("drag",{options:{minDistance:6,horizontal:!0,cancelMultiplier:1.5},onStart:function(e){this.state.registeredParent||this.cancel()},onMove:function(e,t){var n,o;e.preventDefault(),this.state.dragPointer?this.dispatchDragMove(e):(this.state.options.horizontal?(n=Math.abs(t.distanceX)>this.state.options.minDistance,o=Math.abs(t.distanceY)>this.state.options.minDistance*this.state.options.cancelMultiplier):(n=Math.abs(t.distanceY)>this.state.options.minDistance,o=Math.abs(t.distanceX)>this.state.options.minDistance*this.state.options.cancelMultiplier),n?(this.state.dragPointer=d(e),l(e,this.state.dragPointer),th
 is.dispatchEvent(e,"$md.dragstart",this.state.dragPointer)):o&&this.cancel())},dispatchDragMove:o.throttle(function(e){this.state.isRunning&&(l(e,this.state.dragPointer),this.dispatchEvent(e,"$md.drag",this.state.dragPointer))}),onEnd:function(e,t){this.state.dragPointer&&(l(e,this.state.dragPointer),this.dispatchEvent(e,"$md.dragend",this.state.dragPointer))}}).handler("swipe",{options:{minVelocity:.65,minDistance:10},onEnd:function(e,t){var n;Math.abs(t.velocityX)>this.state.options.minVelocity&&Math.abs(t.distanceX)>this.state.options.minDistance?(n="left"==t.directionX?"$md.swipeleft":"$md.swiperight",this.dispatchEvent(e,n)):Math.abs(t.velocityY)>this.state.options.minVelocity&&Math.abs(t.distanceY)>this.state.options.minDistance&&(n="up"==t.directionY?"$md.swipeup":"$md.swipedown",this.dispatchEvent(e,n))}})}function r(e){this.name=e,this.state={}}function i(){function n(e,n,o){o=o||u;var r=new t.element.Event(n);r.$material=!0,r.pointer=o,r.srcEvent=e,t.extend(r,{clientX:o.x,
 clientY:o.y,screenX:o.x,screenY:o.y,pageX:o.x,pageY:o.y,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey,metaKey:e.metaKey}),t.element(o.target).trigger(r)}function o(t,n,o){o=o||u;var r;"click"===n||"mouseup"==n||"mousedown"==n?(r=document.createEvent("MouseEvents"),r.initMouseEvent(n,!0,!0,e,t.detail,o.x,o.y,o.x,o.y,t.ctrlKey,t.altKey,t.shiftKey,t.metaKey,t.button,t.relatedTarget||null)):(r=document.createEvent("CustomEvent"),r.initCustomEvent(n,!0,!0,{})),r.$material=!0,r.pointer=o,r.srcEvent=t,o.target.dispatchEvent(r)}var i="undefined"!=typeof e.jQuery&&t.element===e.jQuery;return r.prototype={options:{},dispatchEvent:i?n:o,onStart:t.noop,onMove:t.noop,onEnd:t.noop,onCancel:t.noop,start:function(e,n){if(!this.state.isRunning){var o=this.getNearestParent(e.target),r=o&&o.$mdGesture[this.name]||{};this.state={isRunning:!0,options:t.extend({},this.options,r),registeredParent:o},this.onStart(e,n)}},move:function(e,t){this.state.isRunning&&this.onMove(e,t)},end:function(e,t){th
 is.state.isRunning&&(this.onEnd(e,t),this.state.isRunning=!1)},cancel:function(e,t){this.onCancel(e,t),this.state={}},getNearestParent:function(e){for(var t=e;t;){if((t.$mdGesture||{})[this.name])return t;t=t.parentNode}return null},registerElement:function(e,t){function n(){delete e[0].$mdGesture[o.name],e.off("$destroy",n)}var o=this;return e[0].$mdGesture=e[0].$mdGesture||{},e[0].$mdGesture[this.name]=t||{},e.on("$destroy",n),n}},r}function a(e,n){function o(e){var t=!e.clientX&&!e.clientY;t||e.$material||e.isIonicTap||s(e)||(e.preventDefault(),e.stopPropagation())}function r(e){var t=0===e.clientX&&0===e.clientY;t||e.$material||e.isIonicTap||s(e)?(g=null,"label"==e.target.tagName.toLowerCase()&&(g={x:e.x,y:e.y})):(e.preventDefault(),e.stopPropagation(),g=null)}function i(e,t){var o;for(var r in h)o=h[r],o instanceof n&&("start"===e&&o.cancel(),o[e](t,u))}function a(e){if(!u){var t=+Date.now();p&&!c(e,p)&&t-p.endTime<1500||(u=d(e),i("start",e))}}function m(e){u&&c(e,u)&&(l(e,u),i
 ("move",e))}function f(e){u&&c(e,u)&&(l(e,u),u.endTime=+Date.now(),i("end",e),p=u,u=null)}document.contains||(document.contains=function(e){return document.body.contains(e)}),!b&&e.isHijackingClicks&&(document.addEventListener("click",r,!0),document.addEventListener("mouseup",o,!0),document.addEventListener("mousedown",o,!0),document.addEventListener("focus",o,!0),b=!0);var v="mousedown touchstart pointerdown",E="mousemove touchmove pointermove",$="mouseup mouseleave touchend touchcancel pointerup pointercancel";t.element(document).on(v,a).on(E,m).on($,f).on("$$mdGestureReset",function(){p=u=null})}function d(e){var t=m(e),n={startTime:+Date.now(),target:e.target,type:e.type.charAt(0)};return n.startX=n.x=t.pageX,n.startY=n.y=t.pageY,n}function c(e,t){return e&&t&&e.type.charAt(0)===t.type}function s(e){return g&&g.x==e.x&&g.y==e.y}function l(e,t){var n=m(e),o=t.x=n.pageX,r=t.y=n.pageY;t.distanceX=o-t.startX,t.distanceY=r-t.startY,t.distance=Math.sqrt(t.distanceX*t.distanceX+t.dista
 nceY*t.distanceY),t.directionX=t.distanceX>0?"right":t.distanceX<0?"left":"",t.directionY=t.distanceY>0?"down":t.distanceY<0?"up":"",t.duration=+Date.now()-t.startTime,t.velocityX=t.distanceX/t.duration,t.velocityY=t.distanceY/t.duration}function m(e){return e=e.originalEvent||e,e.touches&&e.touches[0]||e.changedTouches&&e.changedTouches[0]||e}var u,p,h={},f=!1,g=null,b=!1;t.module("material.core.gestures",[]).provider("$mdGesture",n).factory("$$MdGestureHandler",i).run(a),n.prototype={skipClickHijack:function(){return f=!0},$get:["$$MdGestureHandler","$$rAF","$timeout",function(e,t,n){return new o(e,t,n)}]},o.$inject=["$$MdGestureHandler","$$rAF","$timeout"],a.$inject=["$mdGesture","$$MdGestureHandler"]}(),function(){function e(){function e(e){function n(e){return c.optionsFactory=e.options,c.methods=(e.methods||[]).concat(a),s}function o(e,t){return d[e]=t,s}function r(t,n){if(n=n||{},n.methods=n.methods||[],n.options=n.options||function(){return{}},/^cancel|hide|show$/.test(t))th
 row new Error("Preset '"+t+"' in "+e+" is reserved!");if(n.methods.indexOf("_options")>-1)throw new Error("Method '_options' in "+e+" is reserved!");return c.presets[t]={methods:n.methods.concat(a),optionsFactory:n.options,argOption:n.argOption},s}function i(n,o){function r(e){return e=e||{},e._options&&(e=e._options),m.show(t.extend({},l,e))}function i(e){return m.destroy(e)}function a(t,n){var r={};return r[e]=u,o.invoke(t||function(){return n},{},r)}var s,l,m=n(),u={hide:m.hide,cancel:m.cancel,show:r,destroy:i};return s=c.methods||[],l=a(c.optionsFactory,{}),t.forEach(d,function(e,t){u[t]=e}),t.forEach(c.presets,function(e,n){function o(e){this._options=t.extend({},r,e)}var r=a(e.optionsFactory,{}),i=(e.methods||[]).concat(s);if(t.extend(r,{$type:n}),t.forEach(i,function(e){o.prototype[e]=function(t){return this._options[e]=t,this}}),e.argOption){var d="show"+n.charAt(0).toUpperCase()+n.slice(1);u[d]=function(e){var t=u[n](e);return u.show(t)}}u[n]=function(n){return arguments.le
 ngth&&e.argOption&&!t.isObject(n)&&!t.isArray(n)?(new o)[e.argOption](n):new o(n)}}),u}var a=["onHide","onShow","onRemove"],d={},c={presets:{}},s={setDefaults:n,addPreset:r,addMethod:o,$get:i};return s.addPreset("build",{methods:["controller","controllerAs","resolve","template","templateUrl","themable","transformTemplate","parent"]}),i.$inject=["$$interimElement","$injector"],s}function o(e,o,r,i,a,d,c,s,l,m,u){return function(){function p(e){e=e||{};var t=new b(e||{}),n=!e.skipHide&&$.length?v.hide():o.when(!0);return n["finally"](function(){$.push(t),t.show()["catch"](function(e){return e})}),t.deferred.promise}function h(e,t){function r(n){return n.remove(e,!1,t||{})["catch"](function(e){return e}),n.deferred.promise}if(!$.length)return o.when(e);if(t=t||{},t.closeAll){var i=o.all($.reverse().map(r));return $=[],i}if(t.closeTo!==n)return o.all($.splice(t.closeTo).map(r));var a=$.pop();return r(a)}function f(e,t){var n=$.pop();return n?(n.remove(e,!0,t||{})["catch"](function(e){re
 turn e}),n.deferred.promise):o.when(e)}function g(e){var n=e?null:$.shift(),r=t.element(e).length?t.element(e)[0].parentNode:null;if(r){var i=$.filter(function(e){var t=e.options.element[0];return t===r});i.length>0&&(n=i[0],$.splice($.indexOf(n),1))}return n?n.remove(E,!1,{$destroy:!0}):o.when(E)}function b(u){function p(){return o(function(e,t){function n(e){C.deferred.reject(e),t(e)}g(u).then(function(t){A=b(t,u),k=M(A,u,t.controller).then(e,n)},n)})}function h(e,n,r){function i(e){C.deferred.resolve(e)}function a(e){C.deferred.reject(e)}return A?(u=t.extend(u||{},r||{}),u.cancelAutoHide&&u.cancelAutoHide(),u.element.triggerHandler("$mdInterimElementRemove"),u.$destroy===!0?y(u.element,u).then(function(){n&&a(e)||i(e)}):(o.when(k)["finally"](function(){y(u.element,u).then(function(){n&&a(e)||i(e)},a)}),C.deferred.promise)):o.when(!1)}function f(e){return e=e||{},e.template&&(e.template=s.processTemplate(e.template)),t.extend({preserveScope:!1,cancelAutoHide:t.noop,scope:e.scope||
 i.$new(e.isolateScope),onShow:function(e,t,n){return c.enter(t,n.parent)},onRemove:function(e,t){return t&&c.leave(t)||o.when()}},e)}function g(e){var t=e.skipCompile?null:l.compile(e);return t||o(function(t){t({locals:{},link:function(){return e.element}})})}function b(e,n){t.extend(e.locals,n);var o=e.link(n.scope);return n.element=o,n.parent=E(o,n),n.themable&&m(o),o}function E(n,o){var r=o.parent;if(r=t.isFunction(r)?r(o.scope,n,o):t.isString(r)?t.element(e[0].querySelector(r)):t.element(r),!(r||{}).length){var i;return d[0]&&d[0].querySelector&&(i=d[0].querySelector(":not(svg) > body")),i||(i=d[0]),"#comment"==i.nodeName&&(i=e[0].body),t.element(i)}return r}function $(){var e,o=t.noop;u.hideDelay&&(e=a(v.hide,u.hideDelay),o=function(){a.cancel(e)}),u.cancelAutoHide=function(){o(),u.cancelAutoHide=n}}function M(e,n,r){var i=n.onShowing||t.noop,a=n.onComplete||t.noop;return i(n.scope,e,n,r),o(function(t,i){try{o.when(n.onShow(n.scope,e,n,r)).then(function(){a(n.scope,e,n),$(),t(e
 )},i)}catch(d){i(d.message)}})}function y(e,n){var o=n.onRemoving||t.noop;return r(function(t,i){try{var a=r.when(n.onRemove(n.scope,e,n)||!0);o(e,a),1==n.$destroy?t(e):a.then(function(){!n.preserveScope&&n.scope&&n.scope.$destroy(),t(e)},i)}catch(d){i(d.message)}})}var C,A,k=o.when(!0);return u=f(u),C={options:u,deferred:o.defer(),show:p,remove:h}}var v,E=!1,$=[];return v={show:p,hide:h,cancel:f,destroy:g,$injector_:u}}}return e.$get=o,o.$inject=["$document","$q","$$q","$rootScope","$timeout","$rootElement","$animate","$mdUtil","$mdCompiler","$mdTheming","$injector"],e}t.module("material.core").provider("$$interimElement",e)}(),function(){!function(){function e(e){function a(e){return e.replace(c,"").replace(s,function(e,t,n,o){return o?n.toUpperCase():n})}var c=/^((?:x|data)[\:\-_])/i,s=/([\:\-\_]+(.))/g,l=["","xs","gt-xs","sm","gt-sm","md","gt-md","lg","gt-lg","xl","print"],m=["layout","flex","flex-order","flex-offset","layout-align"],u=["show","hide","layout-padding","layout-mar
 gin"];t.forEach(l,function(n){t.forEach(m,function(t){var o=n?t+"-"+n:t;e.directive(a(o),r(o))}),t.forEach(u,function(t){var o=n?t+"-"+n:t;e.directive(a(o),i(o))})}),e.directive("mdLayoutCss",n).directive("ngCloak",o("ng-cloak")).directive("layoutWrap",i("layout-wrap")).directive("layoutNowrap",i("layout-nowrap")).directive("layoutNoWrap",i("layout-no-wrap")).directive("layoutFill",i("layout-fill")).directive("layoutLtMd",d("layout-lt-md",!0)).directive("layoutLtLg",d("layout-lt-lg",!0)).directive("flexLtMd",d("flex-lt-md",!0)).directive("flexLtLg",d("flex-lt-lg",!0)).directive("layoutAlignLtMd",d("layout-align-lt-md")).directive("layoutAlignLtLg",d("layout-align-lt-lg")).directive("flexOrderLtMd",d("flex-order-lt-md")).directive("flexOrderLtLg",d("flex-order-lt-lg")).directive("offsetLtMd",d("flex-offset-lt-md")).directive("offsetLtLg",d("flex-offset-lt-lg")).directive("hideLtMd",d("hide-lt-md")).directive("hideLtLg",d("hide-lt-lg")).directive("showLtMd",d("show-lt-md")).directive(
 "showLtLg",d("show-lt-lg"))}function n(){return{restrict:"A",priority:"900",compile:function(e,n){return A.enabled=!1,t.noop}}}function o(e){return["$timeout",function(n){return{restrict:"A",priority:-10,compile:function(o){return A.enabled?(o.addClass(e),function(t,o){n(function(){o.removeClass(e)},10,!1)}):t.noop}}}]}function r(e){function n(t,n,o){var r=a(n,e,o),i=o.$observe(o.$normalize(e),r);r(u(e,o,"")),t.$on("$destroy",function(){i()})}return["$mdUtil","$interpolate","$log",function(o,r,i){return f=o,g=r,b=i,{restrict:"A",compile:function(o,r){var i;return A.enabled&&(c(e,r,o,b),s(e,u(e,r,""),l(o,e,r)),i=n),i||t.noop}}}]}function i(e){function n(t,n){n.addClass(e)}return["$mdUtil","$interpolate","$log",function(o,r,i){return f=o,g=r,b=i,{restrict:"A",compile:function(o,r){var i;return A.enabled&&(s(e,u(e,r,""),l(o,e,r)),n(null,o),i=n),i||t.noop}}}]}function a(e,n){var o;return function(r){var i=s(n,r||"");t.isDefined(i)&&(o&&e.removeClass(o),o=i?n+"-"+i.replace(E,"-"):n,e.add
 Class(o))}}function d(e){var n=e.split("-");return["$log",function(o){return o.warn(e+"has been deprecated. Please use a `"+n[0]+"-gt-<xxx>` variant."),t.noop}]}function c(e,t,n,o){var r,i,a,d=n[0].nodeName.toLowerCase();switch(e.replace(v,"")){case"flex":"md-button"!=d&&"fieldset"!=d||(i="<"+d+" "+e+"></"+d+">",a="https://github.com/philipwalton/flexbugs#9-some-html-elements-cant-be-flex-containers",r="Markup '{0}' may not work as expected in IE Browsers. Consult '{1}' for details.",o.warn(f.supplant(r,[i,a])))}}function s(e,n,o){var r=n;if(!m(n)){switch(e.replace(v,"")){case"layout":p(n,M)||(n=M[0]);break;case"flex":p(n,$)||isNaN(n)&&(n="");break;case"flex-offset":case"flex-order":n&&!isNaN(+n)||(n="0");break;case"layout-align":var i=h(n);n=f.supplant("{main}-{cross}",i);break;case"layout-padding":case"layout-margin":case"layout-fill":case"layout-wrap":case"layout-nowrap":case"layout-nowrap":n=""}n!=r&&(o||t.noop)(n)}return n}function l(e,t,n){return function(e){m(e)||(n[n.$normal
 ize(t)]=e)}}function m(e){return(e||"").indexOf(g.startSymbol())>-1}function u(e,t,n){var o=t.$normalize(e);return t[o]?t[o].replace(E,"-"):n||null}function p(e,t,n){e=n&&e?e.replace(E,n):e;var o=!1;return e&&t.forEach(function(t){t=n?t.replace(E,n):t,o=o||t===e}),o}function h(e){var t,n={main:"start",cross:"stretch"};return e=e||"",0!=e.indexOf("-")&&0!=e.indexOf(" ")||(e="none"+e),t=e.toLowerCase().trim().replace(E,"-").split("-"),t.length&&"space"===t[0]&&(t=[t[0]+"-"+t[1],t[2]]),t.length>0&&(n.main=t[0]||n.main),t.length>1&&(n.cross=t[1]||n.cross),y.indexOf(n.main)<0&&(n.main="start"),C.indexOf(n.cross)<0&&(n.cross="stretch"),n}var f,g,b,v=/(-gt)?-(sm|md|lg|print)/g,E=/\s+/g,$=["grow","initial","auto","none","noshrink","nogrow"],M=["row","column"],y=["","start","center","end","stretch","space-around","space-between"],C=["","start","center","end","stretch"],A={enabled:!0,breakpoints:[]};e(t.module("material.core.layout",["ng"]))}()}(),function(){function e(e,n){function o(e){retu
 rn e&&""!==e}var r,i=[],a={};return r={notFoundError:function(t){e.error("No instance found for handle",t);
+},getInstances:function(){return i},get:function(e){if(!o(e))return null;var t,n,r;for(t=0,n=i.length;n>t;t++)if(r=i[t],r.$$mdHandle===e)return r;return null},register:function(e,n){function o(){var t=i.indexOf(e);-1!==t&&i.splice(t,1)}function r(){var t=a[n];t&&(t.resolve(e),delete a[n])}return n?(e.$$mdHandle=n,i.push(e),r(),o):t.noop},when:function(e){if(o(e)){var t=n.defer(),i=r.get(e);return i?t.resolve(i):a[e]=t,t.promise}return n.reject("Invalid `md-component-id` value.")}}}t.module("material.core").factory("$mdComponentRegistry",e),e.$inject=["$log","$q"]}(),function(){!function(){function e(e){function n(e){return e.hasClass("md-icon-button")?{isMenuItem:e.hasClass("md-menu-item"),fitRipple:!0,center:!0}:{isMenuItem:e.hasClass("md-menu-item"),dimBackground:!0}}return{attach:function(o,r,i){return i=t.extend(n(r),i),e.attach(o,r,i)}}}t.module("material.core").factory("$mdButtonInkRipple",e),e.$inject=["$mdInkRipple"]}()}(),function(){!function(){function e(e){function n(n,o,
 r){return e.attach(n,o,t.extend({center:!0,dimBackground:!1,fitRipple:!0},r))}return{attach:n}}t.module("material.core").factory("$mdCheckboxInkRipple",e),e.$inject=["$mdInkRipple"]}()}(),function(){!function(){function e(e){function n(n,o,r){return e.attach(n,o,t.extend({center:!1,dimBackground:!0,outline:!1,rippleSize:"full"},r))}return{attach:n}}t.module("material.core").factory("$mdListInkRipple",e),e.$inject=["$mdInkRipple"]}()}(),function(){function e(e,n){return{controller:t.noop,link:function(t,o,r){r.hasOwnProperty("mdInkRippleCheckbox")?n.attach(t,o):e.attach(t,o)}}}function n(e){function n(n,r,i){return r.controller("mdNoInk")?t.noop:e.instantiate(o,{$scope:n,$element:r,rippleOptions:i})}return{attach:n}}function o(e,n,o,r,i,a){this.$window=r,this.$timeout=i,this.$mdUtil=a,this.$scope=e,this.$element=n,this.options=o,this.mousedown=!1,this.ripples=[],this.timeout=null,this.lastRipple=null,a.valueOnUse(this,"container",this.createContainer),this.$element.addClass("md-ink-r
 ipple"),(n.controller("mdInkRipple")||{}).createRipple=t.bind(this,this.createRipple),(n.controller("mdInkRipple")||{}).setColor=t.bind(this,this.color),this.bindEvents()}function r(e,n){(e.mousedown||e.lastRipple)&&(e.mousedown=!1,e.$mdUtil.nextTick(t.bind(e,n),!1))}function i(){return{controller:t.noop}}t.module("material.core").factory("$mdInkRipple",n).directive("mdInkRipple",e).directive("mdNoInk",i).directive("mdNoBar",i).directive("mdNoStretch",i);var a=450;e.$inject=["$mdButtonInkRipple","$mdCheckboxInkRipple"],n.$inject=["$injector"],o.$inject=["$scope","$element","rippleOptions","$window","$timeout","$mdUtil"],o.prototype.color=function(e){function n(){var e=o.options&&o.options.colorElement?o.options.colorElement:[],t=e.length?e[0]:o.$element[0];return t?o.$window.getComputedStyle(t).color:"rgb(0,0,0)"}var o=this;return t.isDefined(e)&&(o._color=o._parseColor(e)),o._color||o._parseColor(o.inkRipple())||o._parseColor(n())},o.prototype.calculateColor=function(){return this.
 color()},o.prototype._parseColor=function(e,t){function n(e){var t="#"===e[0]?e.substr(1):e,n=t.length/3,o=t.substr(0,n),r=t.substr(n,n),i=t.substr(2*n);return 1===n&&(o+=o,r+=r,i+=i),"rgba("+parseInt(o,16)+","+parseInt(r,16)+","+parseInt(i,16)+",0.1)"}function o(e){return e.replace(")",", 0.1)").replace("(","a(")}return t=t||1,e?0===e.indexOf("rgba")?e.replace(/\d?\.?\d*\s*\)\s*$/,(.1*t).toString()+")"):0===e.indexOf("rgb")?o(e):0===e.indexOf("#")?n(e):void 0:void 0},o.prototype.bindEvents=function(){this.$element.on("mousedown",t.bind(this,this.handleMousedown)),this.$element.on("mouseup touchend",t.bind(this,this.handleMouseup)),this.$element.on("mouseleave",t.bind(this,this.handleMouseup)),this.$element.on("touchmove",t.bind(this,this.handleTouchmove))},o.prototype.handleMousedown=function(e){if(!this.mousedown)if(e.hasOwnProperty("originalEvent")&&(e=e.originalEvent),this.mousedown=!0,this.options.center)this.createRipple(this.container.prop("clientWidth")/2,this.container.prop
 ("clientWidth")/2);else if(e.srcElement!==this.$element[0]){var t=this.$element[0].getBoundingClientRect(),n=e.clientX-t.left,o=e.clientY-t.top;this.createRipple(n,o)}else this.createRipple(e.offsetX,e.offsetY)},o.prototype.handleMouseup=function(){r(this,this.clearRipples)},o.prototype.handleTouchmove=function(){r(this,this.deleteRipples)},o.prototype.deleteRipples=function(){for(var e=0;e<this.ripples.length;e++)this.ripples[e].remove()},o.prototype.clearRipples=function(){for(var e=0;e<this.ripples.length;e++)this.fadeInComplete(this.ripples[e])},o.prototype.createContainer=function(){var e=t.element('<div class="md-ripple-container"></div>');return this.$element.append(e),e},o.prototype.clearTimeout=function(){this.timeout&&(this.$timeout.cancel(this.timeout),this.timeout=null)},o.prototype.isRippleAllowed=function(){var e=this.$element[0];do{if(!e.tagName||"BODY"===e.tagName)break;if(e&&t.isFunction(e.hasAttribute)){if(e.hasAttribute("disabled"))return!1;if("false"===this.inkRi
 pple()||"0"===this.inkRipple())return!1}}while(e=e.parentNode);return!0},o.prototype.inkRipple=function(){return this.$element.attr("md-ink-ripple")},o.prototype.createRipple=function(e,n){function o(e){return e?e.replace("rgba","rgb").replace(/,[^\),]+\)/,")"):"rgb(0,0,0)"}function r(e,t,n){return e?Math.max(t,n):Math.sqrt(Math.pow(t,2)+Math.pow(n,2))}if(this.isRippleAllowed()){var i=this,d=t.element('<div class="md-ripple"></div>'),c=this.$element.prop("clientWidth"),s=this.$element.prop("clientHeight"),l=2*Math.max(Math.abs(c-e),e),m=2*Math.max(Math.abs(s-n),n),u=r(this.options.fitRipple,l,m),p=this.calculateColor();d.css({left:e+"px",top:n+"px",background:"black",width:u+"px",height:u+"px",backgroundColor:o(p),borderColor:o(p)}),this.lastRipple=d,this.clearTimeout(),this.timeout=this.$timeout(function(){i.clearTimeout(),i.mousedown||i.fadeInComplete(d)},.35*a,!1),this.options.dimBackground&&this.container.css({backgroundColor:p}),this.container.append(d),this.ripples.push(d),d.a
 ddClass("md-ripple-placed"),this.$mdUtil.nextTick(function(){d.addClass("md-ripple-scaled md-ripple-active"),i.$timeout(function(){i.clearRipples()},a,!1)},!1)}},o.prototype.fadeInComplete=function(e){this.lastRipple===e?this.timeout||this.mousedown||this.removeRipple(e):this.removeRipple(e)},o.prototype.removeRipple=function(e){var t=this,n=this.ripples.indexOf(e);0>n||(this.ripples.splice(this.ripples.indexOf(e),1),e.removeClass("md-ripple-active"),0===this.ripples.length&&this.container.css({backgroundColor:""}),this.$timeout(function(){t.fadeOutComplete(e)},a,!1))},o.prototype.fadeOutComplete=function(e){e.remove(),this.lastRipple=null}}(),function(){!function(){function e(e){function n(n,o,r){return e.attach(n,o,t.extend({center:!1,dimBackground:!0,outline:!1,rippleSize:"full"},r))}return{attach:n}}t.module("material.core").factory("$mdTabInkRipple",e),e.$inject=["$mdInkRipple"]}()}(),function(){t.module("material.core.theming.palette",[]).constant("$mdColorPalette",{red:{50:"#
 ffebee",100:"#ffcdd2",200:"#ef9a9a",300:"#e57373",400:"#ef5350",500:"#f44336",600:"#e53935",700:"#d32f2f",800:"#c62828",900:"#b71c1c",A100:"#ff8a80",A200:"#ff5252",A400:"#ff1744",A700:"#d50000",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 300 A100",contrastStrongLightColors:"400 500 600 700 A200 A400 A700"},pink:{50:"#fce4ec",100:"#f8bbd0",200:"#f48fb1",300:"#f06292",400:"#ec407a",500:"#e91e63",600:"#d81b60",700:"#c2185b",800:"#ad1457",900:"#880e4f",A100:"#ff80ab",A200:"#ff4081",A400:"#f50057",A700:"#c51162",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"500 600 A200 A400 A700"},purple:{50:"#f3e5f5",100:"#e1bee7",200:"#ce93d8",300:"#ba68c8",400:"#ab47bc",500:"#9c27b0",600:"#8e24aa",700:"#7b1fa2",800:"#6a1b9a",900:"#4a148c",A100:"#ea80fc",A200:"#e040fb",A400:"#d500f9",A700:"#aa00ff",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400 A200 A400 A700"},"deep-purple":{50:"#ede7f
 6",100:"#d1c4e9",200:"#b39ddb",300:"#9575cd",400:"#7e57c2",500:"#673ab7",600:"#5e35b1",700:"#512da8",800:"#4527a0",900:"#311b92",A100:"#b388ff",A200:"#7c4dff",A400:"#651fff",A700:"#6200ea",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400 A200"},indigo:{50:"#e8eaf6",100:"#c5cae9",200:"#9fa8da",300:"#7986cb",400:"#5c6bc0",500:"#3f51b5",600:"#3949ab",700:"#303f9f",800:"#283593",900:"#1a237e",A100:"#8c9eff",A200:"#536dfe",A400:"#3d5afe",A700:"#304ffe",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400 A200 A400"},blue:{50:"#e3f2fd",100:"#bbdefb",200:"#90caf9",300:"#64b5f6",400:"#42a5f5",500:"#2196f3",600:"#1e88e5",700:"#1976d2",800:"#1565c0",900:"#0d47a1",A100:"#82b1ff",A200:"#448aff",A400:"#2979ff",A700:"#2962ff",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 300 400 A100",contrastStrongLightColors:"500 600 700 A200 A400 A700"},"light-blue":{50:"#e1f5fe",100:"#b3e5fc",200:
 "#81d4fa",300:"#4fc3f7",400:"#29b6f6",500:"#03a9f4",600:"#039be5",700:"#0288d1",800:"#0277bd",900:"#01579b",A100:"#80d8ff",A200:"#40c4ff",A400:"#00b0ff",A700:"#0091ea",contrastDefaultColor:"dark",contrastLightColors:"600 700 800 900 A700",contrastStrongLightColors:"600 700 800 A700"},cyan:{50:"#e0f7fa",100:"#b2ebf2",200:"#80deea",300:"#4dd0e1",400:"#26c6da",500:"#00bcd4",600:"#00acc1",700:"#0097a7",800:"#00838f",900:"#006064",A100:"#84ffff",A200:"#18ffff",A400:"#00e5ff",A700:"#00b8d4",contrastDefaultColor:"dark",contrastLightColors:"700 800 900",contrastStrongLightColors:"700 800 900"},teal:{50:"#e0f2f1",100:"#b2dfdb",200:"#80cbc4",300:"#4db6ac",400:"#26a69a",500:"#009688",600:"#00897b",700:"#00796b",800:"#00695c",900:"#004d40",A100:"#a7ffeb",A200:"#64ffda",A400:"#1de9b6",A700:"#00bfa5",contrastDefaultColor:"dark",contrastLightColors:"500 600 700 800 900",contrastStrongLightColors:"500 600 700"},green:{50:"#e8f5e9",100:"#c8e6c9",200:"#a5d6a7",300:"#81c784",400:"#66bb6a",500:"#4caf50
 ",600:"#43a047",700:"#388e3c",800:"#2e7d32",900:"#1b5e20",A100:"#b9f6ca",A200:"#69f0ae",A400:"#00e676",A700:"#00c853",contrastDefaultColor:"dark",contrastLightColors:"500 600 700 800 900",contrastStrongLightColors:"500 600 700"},"light-green":{50:"#f1f8e9",100:"#dcedc8",200:"#c5e1a5",300:"#aed581",400:"#9ccc65",500:"#8bc34a",600:"#7cb342",700:"#689f38",800:"#558b2f",900:"#33691e",A100:"#ccff90",A200:"#b2ff59",A400:"#76ff03",A700:"#64dd17",contrastDefaultColor:"dark",contrastLightColors:"700 800 900",contrastStrongLightColors:"700 800 900"},lime:{50:"#f9fbe7",100:"#f0f4c3",200:"#e6ee9c",300:"#dce775",400:"#d4e157",500:"#cddc39",600:"#c0ca33",700:"#afb42b",800:"#9e9d24",900:"#827717",A100:"#f4ff81",A200:"#eeff41",A400:"#c6ff00",A700:"#aeea00",contrastDefaultColor:"dark",contrastLightColors:"900",contrastStrongLightColors:"900"},yellow:{50:"#fffde7",100:"#fff9c4",200:"#fff59d",300:"#fff176",400:"#ffee58",500:"#ffeb3b",600:"#fdd835",700:"#fbc02d",800:"#f9a825",900:"#f57f17",A100:"#ffff8
 d",A200:"#ffff00",A400:"#ffea00",A700:"#ffd600",contrastDefaultColor:"dark"},amber:{50:"#fff8e1",100:"#ffecb3",200:"#ffe082",300:"#ffd54f",400:"#ffca28",500:"#ffc107",600:"#ffb300",700:"#ffa000",800:"#ff8f00",900:"#ff6f00",A100:"#ffe57f",A200:"#ffd740",A400:"#ffc400",A700:"#ffab00",contrastDefaultColor:"dark"},orange:{50:"#fff3e0",100:"#ffe0b2",200:"#ffcc80",300:"#ffb74d",400:"#ffa726",500:"#ff9800",600:"#fb8c00",700:"#f57c00",800:"#ef6c00",900:"#e65100",A100:"#ffd180",A200:"#ffab40",A400:"#ff9100",A700:"#ff6d00",contrastDefaultColor:"dark",contrastLightColors:"800 900",contrastStrongLightColors:"800 900"},"deep-orange":{50:"#fbe9e7",100:"#ffccbc",200:"#ffab91",300:"#ff8a65",400:"#ff7043",500:"#ff5722",600:"#f4511e",700:"#e64a19",800:"#d84315",900:"#bf360c",A100:"#ff9e80",A200:"#ff6e40",A400:"#ff3d00",A700:"#dd2c00",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 300 400 A100 A200",contrastStrongLightColors:"500 600 700 800 900 A400 A700"},brown:{50:"#efebe9",100:"#d7ccc
 8",200:"#bcaaa4",300:"#a1887f",400:"#8d6e63",500:"#795548",600:"#6d4c41",700:"#5d4037",800:"#4e342e",900:"#3e2723",A100:"#d7ccc8",A200:"#bcaaa4",A400:"#8d6e63",A700:"#5d4037",contrastDefaultColor:"light",contrastDarkColors:"50 100 200",contrastStrongLightColors:"300 400"},grey:{50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121",A100:"#ffffff",A200:"#000000",A400:"#303030",A700:"#616161",contrastDefaultColor:"dark",contrastLightColors:"600 700 800 900"},"blue-grey":{50:"#eceff1",100:"#cfd8dc",200:"#b0bec5",300:"#90a4ae",400:"#78909c",500:"#607d8b",600:"#546e7a",700:"#455a64",800:"#37474f",900:"#263238",A100:"#cfd8dc",A200:"#b0bec5",A400:"#78909c",A700:"#455a64",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 300 700",contrastStrongLightColors:"400 500 700"}})}(),function(){function e(e){function o(e,t){return t=t||{},m[e]=a(e,t),v}function r(e,n){return a(e,t.extend({},m[e]||{},n))}fun
 ction a(e,t){var n=k.filter(function(e){return!t[e]});if(n.length)throw new Error("Missing colors %1 in palette %2!".replace("%1",n.join(", ")).replace("%2",e));return t}function c(e,n){if(u[e])return u[e];n=n||"default";var o="string"==typeof n?u[n]:n,r=new s(e);return o&&t.forEach(o.colors,function(e,n){r.colors[n]={name:e.name,hues:t.extend({},e.hues)}}),u[e]=r,r}function s(e){function n(e){if(e=0===arguments.length?!0:!!e,e!==o.isDark){o.isDark=e,o.foregroundPalette=o.isDark?f:h,o.foregroundShadow=o.isDark?g:b;var n=o.isDark?A:C,r=o.isDark?C:A;return t.forEach(n,function(e,t){var n=o.colors[t],i=r[t];if(n)for(var a in n.hues)n.hues[a]===i[a]&&(n.hues[a]=e[a])}),o}}var o=this;o.name=e,o.colors={},o.dark=n,n(!1),M.forEach(function(e){var n=(o.isDark?A:C)[e];o[e+"Palette"]=function(r,i){var a=o.colors[e]={name:r,hues:t.extend({},n,i)};return Object.keys(a.hues).forEach(function(e){if(!n[e])throw new Error("Invalid hue name '%1' in theme %2's %3 color %4. Available hue names: %4".re
 place("%1",e).replace("%2",o.name).replace("%3",r).replace("%4",Object.keys(n).join(", ")))}),Object.keys(a.hues).map(function(e){return a.hues[e]}).forEach(function(t){if(-1==k.indexOf(t))throw new Error("Invalid hue value '%1' in theme %2's %3 color %4. Available hue values: %5".replace("%1",t).replace("%2",o.name).replace("%3",e).replace("%4",r).replace("%5",k.join(", ")))}),o},o[e+"Color"]=function(){var t=Array.prototype.slice.call(arguments);return console.warn("$mdThemingProviderTheme."+e+"Color() has been deprecated. Use $mdThemingProviderTheme."+e+"Palette() instead."),o[e+"Palette"].apply(o,t)}})}function p(e,o){function r(e){return e===n||""===e?!0:a.THEMES[e]!==n}function i(n,i){function a(){return c=i.controller("mdTheme")||n.data("$mdThemeController"),c&&c.$mdTheme||("default"==E?"":E)}function d(e){if(e){r(e)||o.warn("Attempted to use unregistered theme '"+e+"'. Register it with $mdThemingProvider.theme().");var t=n.data("$mdThemeName");t&&n.removeClass("md-"+t+"-them
 e"),n.addClass("md-"+e+"-theme"),n.data("$mdThemeName",e),c&&n.data("$mdThemeController",c)}}var c=i.controller("mdTheme"),s=n.attr("md-theme-watch"),l=($||t.isDefined(s))&&"false"!=s;d(a()),n.on("$destroy",l?e.$watch(a,d):t.noop)}var a=function(t,o){o===n&&(o=t,t=n),t===n&&(t=e),a.inherit(o,o)};return a.THEMES=t.extend({},u),a.inherit=i,a.registered=r,a.defaultTheme=function(){return E},a.generateTheme=function(e){d(e,w)},a}m={},u={};var v,E="default",$=!1;return t.extend(m,e),p.$inject=["$rootScope","$log"],v={definePalette:o,extendPalette:r,theme:c,setNonce:function(e){w=e},setDefaultTheme:function(e){E=e},alwaysWatchTheme:function(e){$=e},generateThemesOnDemand:function(e){T=e},$get:p,_LIGHT_DEFAULT_HUES:C,_DARK_DEFAULT_HUES:A,_PALETTES:m,_THEMES:u,_parseRules:i,_rgba:l}}function o(e,t,n){return{priority:100,link:{pre:function(o,r,i){var a={$setTheme:function(t){e.registered(t)||n.warn("attempted to use unregistered theme '"+t+"'"),a.$mdTheme=t}};r.data("$mdThemeController",a),a
 .$setTheme(t(i.mdTheme)(o)),i.$observe("mdTheme",a.$setTheme)}}}}function r(e){return e}function i(e,n,o){c(e,n),o=o.replace(/THEME_NAME/g,e.name);var r=[],i=e.colors[n],a=new RegExp(".md-"+e.name+"-theme","g"),d=new RegExp("('|\")?{{\\s*("+n+")-(color|contrast)-?(\\d\\.?\\d*)?\\s*}}(\"|')?","g"),s=/'?"?\{\{\s*([a-zA-Z]+)-(A?\d+|hue\-[0-3]|shadow)-?(\d\.?\d*)?(contrast)?\s*\}\}'?"?/g,u=m[i.name];return o=o.replace(s,function(t,n,o,r,i){return"foreground"===n?"shadow"==o?e.foregroundShadow:e.foregroundPalette[o]||e.foregroundPalette[1]:(0===o.indexOf("hue")&&(o=e.colors[n].hues[o]),l((m[e.colors[n].name][o]||"")[i?"contrast":"value"],r))}),t.forEach(i.hues,function(t,n){var i=o.replace(d,function(e,n,o,r,i){return l(u[t]["color"===r?"value":"contrast"],i)});if("default"!==n&&(i=i.replace(a,".md-"+e.name+"-theme.md-"+n)),"default"==e.name){var c=/((?:(?:(?: |>|\.|\w|-|:|\(|\)|\[|\]|"|'|=)+) )?)((?:(?:\w|\.|-)+)?)\.md-default-theme((?: |>|\.|\w|-|:|\(|\)|\[|\]|"|'|=)*)/g;i=i.replace(c,
 function(e,t,n,o){return e+", "+t+n+o})}r.push(i)}),r}function a(e){function n(e,n){var o=e.contrastDefaultColor,r=e.contrastLightColors||[],i=e.contrastStrongLightColors||[],a=e.contrastDarkColors||[];"string"==typeof r&&(r=r.split(" ")),"string"==typeof i&&(i=i.split(" ")),"string"==typeof a&&(a=a.split(" ")),delete e.contrastDefaultColor,delete e.contrastLightColors,delete e.contrastStrongLightColors,delete e.contrastDarkColors,t.forEach(e,function(n,d){function c(){return"light"===o?a.indexOf(d)>-1?v:i.indexOf(d)>-1?$:E:r.indexOf(d)>-1?i.indexOf(d)>-1?$:E:v}if(!t.isObject(n)){var l=s(n);if(!l)throw new Error("Color %1, in palette %2's hue %3, is invalid. Hex or rgb(a) color expected.".replace("%1",n).replace("%2",e.name).replace("%3",d));e[d]={value:l,contrast:c()}}})}var o=document.head,r=o?o.firstElementChild:null,i=e.has("$MD_THEME_CSS")?e.get("$MD_THEME_CSS"):"";if(r&&0!==i.length){t.forEach(m,n);var a=i.split(/\}(?!(\}|'|"|;))/).filter(function(e){return e&&e.length}).map(f
 unction(e){return e.trim()+"}"}),c=new RegExp("md-("+M.join("|")+")","g");M.forEach(function(e){_[e]=""}),a.forEach(function(e){for(var t,n=(e.match(c),0);t=M[n];n++)if(e.indexOf(".md-"+t)>-1)return _[t]+=e;for(n=0;t=M[n];n++)if(e.indexOf(t)>-1)return _[t]+=e;return _[y]+=e}),T||t.forEach(u,function(e){p[e.name]||d(e.name,w)})}}function d(e,t){var n=u[e],o=document.head,r=o?o.firstElementChild:null;p[e]||(M.forEach(function(e){for(var a=i(n,e,_[e]);a.length;){var d=a.shift();if(d){var c=document.createElement("style");c.setAttribute("md-theme-style",""),t&&c.setAttribute("nonce",t),c.appendChild(document.createTextNode(d)),o.insertBefore(c,r)}}}),n.colors.primary.name==n.colors.accent.name&&console.warn("$mdThemingProvider: Using the same palette for primary and accent. This violates the material design spec."),p[n.name]=!0)}function c(e,t){if(!m[(e.colors[t]||{}).name])throw new Error("You supplied an invalid color palette for theme %1's %2 palette. Available palettes: %3".replace(
 "%1",e.name).replace("%2",t).replace("%3",Object.keys(m).join(", ")))}function s(e){if(t.isArray(e)&&3==e.length)return e;if(/^rgb/.test(e))return e.replace(/(^\s*rgba?\(|\)\s*$)/g,"").split(",").map(function(e,t){return 3==t?parseFloat(e,10):parseInt(e,10)});if("#"==e.charAt(0)&&(e=e.substring(1)),/^([a-fA-F0-9]{3}){1,2}$/g.test(e)){var n=e.length/3,o=e.substr(0,n),r=e.substr(n,n),i=e.substr(2*n);return 1===n&&(o+=o,r+=r,i+=i),[parseInt(o,16),parseInt(r,16),parseInt(i,16)]}}function l(e,n){return e?(4==e.length&&(e=t.copy(e),n?e.pop():n=e.pop()),n&&("number"==typeof n||"string"==typeof n&&n.length)?"rgba("+e.join(",")+","+n+")":"rgb("+e.join(",")+")"):"rgb('0,0,0')"}t.module("material.core.theming",["material.core.theming.palette"]).directive("mdTheme",o).directive("mdThemable",r).provider("$mdTheming",e).run(a);var m,u,p={},h={name:"dark",1:"rgba(0,0,0,0.87)",2:"rgba(0,0,0,0.54)",3:"rgba(0,0,0,0.38)",4:"rgba(0,0,0,0.12)"},f={name:"light",1:"rgba(255,255,255,1.0)",2:"rgba(255,255,2
 55,0.7)",3:"rgba(255,255,255,0.5)",4:"rgba(255,255,255,0.12)"},g="1px 1px 0px rgba(0,0,0,0.4), -1px -1px 0px rgba(0,0,0,0.4)",b="",v=s("rgba(0,0,0,0.87)"),E=s("rgba(255,255,255,0.87)"),$=s("rgb(255,255,255)"),M=["primary","accent","warn","background"],y="primary",C={accent:{"default":"A200","hue-1":"A100","hue-2":"A400","hue-3":"A700"},background:{"default":"50","hue-1":"A100","hue-2":"100","hue-3":"300"}},A={background:{"default":"A400","hue-1":"800","hue-2":"900","hue-3":"A200"}};M.forEach(function(e){var t={"default":"500","hue-1":"300","hue-2":"800","hue-3":"A100"};C[e]||(C[e]=t),A[e]||(A[e]=t)});var k=["50","100","200","300","400","500","600","700","800","900","A100","A200","A400","A700"],T=!1,w=null;e.$inject=["$mdColorPalette"],o.$inject=["$mdTheming","$interpolate","$log"],r.$inject=["$mdTheming"];var _={};a.$inject=["$injector"]}(),function(){function e(e,n,o,r,i){var a;return a={translate3d:function(e,t,n,o){function r(n){return i(e,{to:n||t,addClass:o.transitionOutClass,r
 emoveClass:o.transitionInClass}).start()}return i(e,{from:t,to:n,addClass:o.transitionInClass}).start().then(function(){return r})},waitTransitionEnd:function(e,t){var i=3e3;return n(function(n,a){function d(t){t&&t.target!==e[0]||(t&&o.cancel(c),e.off(r.CSS.TRANSITIONEND,d),n())}t=t||{};var c=o(d,t.timeout||i);e.on(r.CSS.TRANSITIONEND,d)})},calculateZoomToOrigin:function(n,o){function r(){var e=n?n.parent():null,t=e?e.parent():null;return t?a.clientRect(t):null}var i=o.element,d=o.bounds,c="translate3d( {centerX}px, {centerY}px, 0 ) scale( {scaleX}, {scaleY} )",s=t.bind(null,e.supplant,c),l=s({centerX:0,centerY:0,scaleX:.5,scaleY:.5});if(i||d){var m=i?a.clientRect(i)||r():a.copyRect(d),u=a.copyRect(n[0].getBoundingClientRect()),p=a.centerPointFor(u),h=a.centerPointFor(m);l=s({centerX:h.x-p.x,centerY:h.y-p.y,scaleX:Math.round(100*Math.min(.5,m.width/u.width))/100,scaleY:Math.round(100*Math.min(.5,m.height/u.height))/100})}return l},toCss:function(e){function n(e,n,r){t.forEach(n.spl
 it(" "),function(e){o[e]=r})}var o={},i="left top right bottom width height x y min-width min-height max-width max-height";return t.forEach(e,function(e,a){if(!t.isUndefined(e))if(i.indexOf(a)>=0)o[a]=e+"px";else switch(a){case"transition":n(a,r.CSS.TRANSITION,e);break;case"transform":n(a,r.CSS.TRANSFORM,e);break;case"transformOrigin":n(a,r.CSS.TRANSFORM_ORIGIN,e)}}),o},toTransformCss:function(e,n,o){var i={};return t.forEach(r.CSS.TRANSFORM.split(" "),function(t){i[t]=e}),n&&(o=o||"all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1) !important",i.transition=o),i},copyRect:function(e,n){return e?(n=n||{},t.forEach("left top right bottom width height".split(" "),function(t){n[t]=Math.round(e[t])}),n.width=n.width||n.right-n.left,n.height=n.height||n.bottom-n.top,n):null},clientRect:function(e){var n=t.element(e)[0].getBoundingClientRect(),o=function(e){return e&&e.width>0&&e.height>0};return o(n)?a.copyRect(n):null},centerPointFor:function(e){return e?{x:Math.round(e.left+e.width/2),y:Math.rou
 nd(e.top+e.height/2)}:{x:0,y:0}}}}t.module("material.core").factory("$$mdAnimate",["$q","$timeout","$mdConstant","$animateCss",function(t,n,o,r){return function(i){return e(i,t,n,o,r)}}])}(),function(){t.version.minor>=4?t.module("material.core.animate",[]):!function(){function e(e){return e.replace(/-[a-z]/g,function(e){return e.charAt(1).toUpperCase()})}var n=t.forEach,o=t.isDefined(document.documentElement.style.WebkitAppearance),r=o?"-webkit-":"",i=(o?"webkitTransitionEnd ":"")+"transitionend",a=(o?"webkitAnimationEnd ":"")+"animationend",d=["$document",function(e){return function(){return e[0].body.clientWidth+1}}],c=["$$rAF",function(e){return function(){var t=!1;return e(function(){t=!0}),function(n){t?n():e(n)}}}],s=["$q","$$rAFMutex",function(e,o){function r(e){this.setHost(e),this._doneCallbacks=[],this._runInAnimationFrame=o(),this._state=0}var i=0,a=1,d=2;return r.prototype={setHost:function(e){this.host=e||{}},done:function(e){this._state===d?e():this._doneCallbacks.pus
 h(e)},progress:t.noop,getPromise:function(){if(!this.promise){var t=this;this.promise=e(function(e,n){t.done(function(t){t===!1?n():e()})})}return this.promise},then:function(e,t){return this.getPromise().then(e,t)},"catch":function(e){return this.getPromise()["catch"](e)},"finally":function(e){return this.getPromise()["finally"](e)},pause:function(){this.host.pause&&this.host.pause()},resume:function(){this.host.resume&&this.host.resume()},end:function(){this.host.end&&this.host.end(),this._resolve(!0)},cancel:function(){this.host.cancel&&this.host.cancel(),this._resolve(!1)},complete:function(e){var t=this;t._state===i&&(t._state=a,t._runInAnimationFrame(function(){t._resolve(e)}))},_resolve:function(e){this._state!==d&&(n(this._doneCallbacks,function(t){t(e)}),this._doneCallbacks.length=0,this._state=d)}},r}];t.module("material.core.animate",[]).factory("$$forceReflow",d).factory("$$AnimateRunner",s).factory("$$rAFMutex",c).factory("$animateCss",["$window","$$rAF","$$AnimateRunne
 r","$$forceReflow","$$jqLite","$timeout",function(t,d,c,s,l,m){function u(o,d){var s=[],l=$(o);d.transitionStyle&&s.push([r+"transition",d.transitionStyle]),d.keyframeStyle&&s.push([r+"animation",d.keyframeStyle]),d.delay&&s.push([r+"transition-delay",d.delay+"s"]),d.duration&&s.push([r+"transition-duration",d.duration+"s"]);var u=d.keyframeStyle||d.to&&(d.duration>0||d.transitionStyle),f=!!d.addClass||!!d.removeClass,y=u||f;M(o,!0),v(o,d);var C,A,k=!1;return{close:t.close,start:function(){function t(){return k?void 0:(k=!0,C&&A&&o.off(C,A),p(o,d),b(o,d),n(s,function(t){l.style[e(t[0])]=""}),u.complete(!0),u)}var u=new c;return g(function(){if(M(o,!1),!y)return t();n(s,function(t){var n=t[0],o=t[1];l.style[e(n)]=o}),p(o,d);var c=h(o);if(0===c.duration)return t();var u=[];d.easing&&(c.transitionDuration&&u.push([r+"transition-timing-function",d.easing]),c.animationDuration&&u.push([r+"animation-timing-function",d.easing])),d.delay&&c.animationDelay&&u.push([r+"animation-delay",d.dela
 y+"s"]),d.duration&&c.animationDuration&&u.push([r+"animation-duration",d.duration+"s"]),n(u,function(t){var n=t[0],o=t[1];l.style[e(n)]=o,s.push(t)});var f=c.delay,g=1e3*f,b=c.duration,v=1e3*b,$=Date.now();C=[],c.transitionDuration&&C.push(i),c.animationDuration&&C.push(a),C=C.join(" "),A=function(e){e.stopPropagation();var n=e.originalEvent||e,o=n.timeStamp||Date.now(),r=parseFloat(n.elapsedTime.toFixed(3));Math.max(o-$,0)>=g&&r>=b&&t()},o.on(C,A),E(o,d),m(t,g+1.5*v,!1)}),u}}}function p(e,t){t.addClass&&(l.addClass(e,t.addClass),t.addClass=null),t.removeClass&&(l.removeClass(e,t.removeClass),t.removeClass=null)}function h(e){function n(e){return o?"Webkit"+e.charAt(0).toUpperCase()+e.substr(1):e}var r=$(e),i=t.getComputedStyle(r),a=f(i[n("transitionDuration")]),d=f(i[n("animationDuration")]),c=f(i[n("transitionDelay")]),s=f(i[n("animationDelay")]);d*=parseInt(i[n("animationIterationCount")],10)||1;var l=Math.max(d,a),m=Math.max(s,c);return{duration:l,delay:m,animationDuration:d,tr
 ansitionDuration:a,animationDelay:s,transitionDelay:c}}function f(e){var t=0,o=(e||"").split(/\s*,\s*/);return n(o,function(e){"s"==e.charAt(e.length-1)&&(e=e.substring(0,e.length-1)),e=parseFloat(e)||0,t=t?Math.max(e,t):e}),t}function g(e){y&&y(),C.push(e),y=d(function(){y=null;for(var e=s(),t=0;t<C.length;t++)C[t](e);C.length=0})}function b(e,t){v(e,t),E(e,t)}function v(e,t){t.from&&(e.css(t.from),t.from=null)}function E(e,t){t.to&&(e.css(t.to),t.to=null)}function $(e){for(var t=0;t<e.length;t++)if(1===e[t].nodeType)return e[t]}function M(t,n){var o=$(t),i=e(r+"transition-delay");o.style[i]=n?"-9999s":""}var y,C=[];return u}])}()}(),function(){t.module("material.components.autocomplete",["material.core","material.components.icon","material.components.virtualRepeat"])}(),function(){function e(e){return{restrict:"E",link:function(t,n,o){t.$on("$destroy",function(){e.destroy()})}}}function n(e){function n(e,n,i,a,d,c,s){function l(o,r,s,l){r=i.extractElementByName(r,"md-bottom-sheet"
 ),r.attr("tabindex","-1"),s.disableBackdrop||(p=i.createBackdrop(o,"_md-bottom-sheet-backdrop md-opaque"),p[0].tabIndex=-1,s.clickOutsideToClose&&p.on("click",function(){i.nextTick(d.cancel,!0)}),a.inherit(p,s.parent),e.enter(p,s.parent,null));var m=new u(r,s.parent);return s.bottomSheet=m,a.inherit(m.element,s.parent),s.disableParentScroll&&(s.restoreScroll=i.disableScrollAround(m.element,s.parent)),e.enter(m.element,s.parent,p).then(function(){var e=i.findFocusTarget(r)||t.element(r[0].querySelector("button")||r[0].querySelector("a")||r[0].querySelector("[ng-click]"))||p;s.escapeToClose&&(s.rootElementKeyupCallback=function(e){e.keyCode===n.KEY_CODE.ESCAPE&&i.nextTick(d.cancel,!0)},c.on("keyup",s.rootElementKeyupCallback),e&&e.focus())})}function m(t,n,o){var r=o.bottomSheet;return o.disableBackdrop||e.leave(p),e.leave(r.element).then(function(){o.disableParentScroll&&(o.restoreScroll(),delete o.restoreScroll),r.cleanup()})}function u(e,t){function a(t){e.css(n.CSS.TRANSITION_DURA
 TION,"0ms")}function c(t){var o=t.pointer.distanceY;5>o&&(o=Math.max(-r,o/2)),e.css(n.CSS.TRANSFORM,"translate3d(0,"+(r+o)+"px,0)")}function l(t){if(t.pointer.distanceY>0&&(t.pointer.distanceY>20||Math.abs(t.pointer.velocityY)>o)){var r=e.prop("offsetHeight")-t.pointer.distanceY,a=Math.min(r/t.pointer.velocityY*.75,500);e.css(n.CSS.TRANSITION_DURATION,a+"ms"),i.nextTick(d.cancel,!0)}else e.css(n.CSS.TRANSITION_DURATION,""),e.css(n.CSS.TRANSFORM,"")}var m=s.register(t,"drag",{horizontal:!1});return t.on("$md.dragstart",a).on("$md.drag",c).on("$md.dragend",l),{element:e,cleanup:function(){m(),t.off("$md.dragstart",a),t.off("$md.drag",c),t.off("$md.dragend",l)}}}var p;return{themable:!0,onShow:l,onRemove:m,disableBackdrop:!1,escapeToClose:!0,clickOutsideToClose:!0,disableParentScroll:!0}}var o=.5,r=80;return n.$inject=["$animate","$mdConstant","$mdUtil","$mdTheming","$mdBottomSheet","$rootElement","$mdGesture"],e("$mdBottomSheet").setDefaults({methods:["disableParentScroll","escapeToCl
 ose","clickOutsideToClose"],options:n})}t.module("material.components.bottomSheet",["material.core","material.components.backdrop"]).directive("mdBottomSheet",e).provider("$mdBottomSheet",n),e.$inject=["$mdBottomSheet"],n.$inject=["$$interimElementProvider"]}(),function(){t.module("material.components.backdrop",["material.core"]).directive("mdBackdrop",["$mdTheming","$animate","$rootElement","$window","$log","$$rAF","$document",function(e,t,n,o,r,i,a){function d(d,s,l){var m=o.getComputedStyle(a[0].body);if("fixed"==m.position){var u=parseInt(m.height,10)+Math.abs(parseInt(m.top,10));s.css({height:u+"px"})}t.pin&&t.pin(s,n),i(function(){var t=s.parent()[0];if(t){"BODY"==t.nodeName&&s.css({position:"fixed"});var n=o.getComputedStyle(t);"static"==n.position&&r.warn(c)}s.parent().length&&e.inherit(s,s.parent())})}var c="<md-backdrop> may not work properly in a scrolled, static-positioned parent container.";return{restrict:"E",link:d}}])}(),function(){function e(e,n,o,r){function i(e){r
 eturn t.isDefined(e.href)||t.isDefined(e.ngHref)||t.isDefined(e.ngLink)||t.isDefined(e.uiSref)}function a(e,t){if(i(t))return'<a class="md-button" ng-transclude></a>';var n="undefined"==typeof t.type?"button":t.type;return'<button class="md-button" type="'+n+'" ng-transclude></button>'}function d(a,d,c){n(d),e.attach(a,d),o.expectWithText(d,"aria-label"),i(c)&&t.isDefined(c.ngDisabled)&&a.$watch(c.ngDisabled,function(e){d.attr("tabindex",e?-1:0)}),d.on("click",function(e){c.disabled===!0&&(e.preventDefault(),e.stopImmediatePropagation())}),t.isDefined(c.mdNoFocusStyle)||(a.mouseActive=!1,d.on("mousedown",function(){a.mouseActive=!0,r(function(){a.mouseActive=!1},100)}).on("focus",function(){a.mouseActive===!1&&d.addClass("md-focused")}).on("blur",function(e){d.removeClass("md-focused")}))}return{restrict:"EA",replace:!0,transclude:!0,template:a,link:d}}t.module("material.components.button",["material.core"]).directive("mdButton",e),e.$inject=["$mdButtonInkRipple","$mdTheming","$mdAr
 ia","$timeout"]}(),function(){function e(e){return{restrict:"E",link:function(t,n){e(n)}}}t.module("material.components.card",["material.core"]).directive("mdCard",e),
+    e.$inject=["$mdTheming"]}(),function(){function e(e,n,o,r,i,a){function d(d,s){var l=d.children(),m=s.hasOwnProperty("mdIndeterminate");return s.type="checkbox",s.tabindex=s.tabindex||"0",d.attr("role",s.type),d.on("click",function(e){this.hasAttribute("disabled")&&e.stopImmediatePropagation()}),l.on("focus",function(){d.focus()}),function(d,s,l,u){function p(e,t,n){l[e]&&d.$watch(l[e],function(e){n[e]&&s.attr(t,n[e])})}function h(e){var t=e.which||e.keyCode;t!==o.KEY_CODE.SPACE&&t!==o.KEY_CODE.ENTER||(e.preventDefault(),s.hasClass("md-focused")||s.addClass("md-focused"),f(e))}function f(e){s[0].hasAttribute("disabled")||d.$apply(function(){var t=l.ngChecked?l.checked:!u.$viewValue;u.$setViewValue(t,e&&e.type),u.$render()})}function g(){u.$viewValue&&!v?s.addClass(c):s.removeClass(c)}function b(e){v=e!==!1,v&&s.attr("aria-checked","mixed"),s.toggleClass("md-indeterminate",v)}var v;u=u||i.fakeNgModel(),r(s),m&&(b(),d.$watch(l.mdIndeterminate,b)),l.ngChecked&&d.$watch(d.$eval.bind
 (d,l.ngChecked),u.$setViewValue.bind(u)),p("ngDisabled","tabindex",{"true":"-1","false":l.tabindex}),n.expectWithText(s,"aria-label"),e.link.pre(d,{on:t.noop,0:{}},l,[u]),d.mouseActive=!1,s.on("click",f).on("keypress",h).on("mousedown",function(){d.mouseActive=!0,a(function(){d.mouseActive=!1},100)}).on("focus",function(){d.mouseActive===!1&&s.addClass("md-focused")}).on("blur",function(){s.removeClass("md-focused")}),u.$render=g}}e=e[0];var c="md-checked";return{restrict:"E",transclude:!0,require:"?ngModel",priority:210,template:'<div class="_md-container" md-ink-ripple md-ink-ripple-checkbox><div class="_md-icon"></div></div><div ng-transclude class="_md-label"></div>',compile:d}}t.module("material.components.checkbox",["material.core"]).directive("mdCheckbox",e),e.$inject=["inputDirective","$mdAria","$mdConstant","$mdTheming","$mdUtil","$timeout"]}(),function(){t.module("material.components.chips",["material.core","material.components.autocomplete"])}(),function(){function e(e){f
 unction t(e,t){this.$scope=e,this.$element=t}return{restrict:"E",controller:["$scope","$element",t],link:function(t,o,r){o[0];e(o),t.$broadcast("$mdContentLoaded",o),n(o[0])}}}function n(e){t.element(e).on("$md.pressdown",function(t){"t"===t.pointer.type&&(t.$materialScrollFixed||(t.$materialScrollFixed=!0,0===e.scrollTop?e.scrollTop=1:e.scrollHeight===e.scrollTop+e.offsetHeight&&(e.scrollTop-=1)))})}t.module("material.components.content",["material.core"]).directive("mdContent",e),e.$inject=["$mdTheming"]}(),function(){!function(){function e(){return{template:'<table aria-hidden="true" class="md-calendar-day-header"><thead></thead></table><div class="md-calendar-scroll-mask"><md-virtual-repeat-container class="md-calendar-scroll-container" md-offset-size="'+(r-o)+'"><table role="grid" tabindex="0" class="md-calendar" aria-readonly="true"><tbody role="rowgroup" md-virtual-repeat="i in ctrl.items" md-calendar-month md-month-offset="$index" class="md-calendar-month" md-start-index="ct
 rl.getSelectedMonthIndex()" md-item-size="'+o+'"></tbody></table></md-virtual-repeat-container></div>',scope:{minDate:"=mdMinDate",maxDate:"=mdMaxDate",dateFilter:"=mdDateFilter"},require:["ngModel","mdCalendar"],controller:n,controllerAs:"ctrl",bindToController:!0,link:function(e,t,n,o){var r=o[0],i=o[1];i.configureNgModel(r)}}}function n(e,t,n,o,r,i,a,c,s,l,m){if(a(e),this.items={length:2e3},this.maxDate&&this.minDate){var u=c.getMonthDistance(this.minDate,this.maxDate)+1;u=Math.max(u,1),u+=1,this.items.length=u}if(this.$animate=o,this.$q=r,this.$mdInkRipple=l,this.$mdUtil=m,this.keyCode=i.KEY_CODE,this.dateUtil=c,this.dateLocale=s,this.$element=e,this.$scope=n,this.calendarElement=e[0].querySelector(".md-calendar"),this.calendarScroller=e[0].querySelector(".md-virtual-repeat-scroller"),this.today=this.dateUtil.createDateAtMidnight(),this.firstRenderableDate=this.dateUtil.incrementMonths(this.today,-this.items.length/2),this.minDate&&this.minDate>this.firstRenderableDate)this.firs
 tRenderableDate=this.minDate;else if(this.maxDate){this.items.length-2;this.firstRenderableDate=this.dateUtil.incrementMonths(this.maxDate,-(this.items.length-2))}this.id=d++,this.ngModelCtrl=null,this.selectedDate=null,this.displayDate=null,this.focusDate=null,this.isInitialized=!1,this.isMonthTransitionInProgress=!1,t.tabindex||e.attr("tabindex","-1");var p=this;this.cellClickHandler=function(){var e=this;this.hasAttribute("data-timestamp")&&n.$apply(function(){var t=Number(e.getAttribute("data-timestamp"));p.setNgModelValue(p.dateUtil.createDateAtMidnight(t))})},this.attachCalendarEventListeners()}t.module("material.components.datepicker",["material.core","material.components.icon","material.components.virtualRepeat"]).directive("mdCalendar",e);var o=265,r=45,i="md-calendar-selected-date",a="md-focus",d=0;n.$inject=["$element","$attrs","$scope","$animate","$q","$mdConstant","$mdTheming","$$mdDateUtil","$mdDateLocale","$mdInkRipple","$mdUtil"],n.prototype.configureNgModel=function
 (e){this.ngModelCtrl=e;var t=this;e.$render=function(){t.changeSelectedDate(t.ngModelCtrl.$viewValue)}},n.prototype.buildInitialCalendarDisplay=function(){this.buildWeekHeader(),this.hideVerticalScrollbar(),this.displayDate=this.selectedDate||this.today,this.isInitialized=!0},n.prototype.hideVerticalScrollbar=function(){var e=this.$element[0],t=e.querySelector(".md-calendar-scroll-mask"),n=this.calendarScroller,o=e.querySelector(".md-calendar-day-header").clientWidth,r=n.offsetWidth-n.clientWidth;t.style.width=o+"px",n.style.width=o+r+"px",n.style.paddingRight=r+"px"},n.prototype.attachCalendarEventListeners=function(){this.$element.on("keydown",t.bind(this,this.handleKeyEvent))},n.prototype.handleKeyEvent=function(e){var t=this;this.$scope.$apply(function(){if(e.which==t.keyCode.ESCAPE||e.which==t.keyCode.TAB)return t.$scope.$emit("md-calendar-close"),void(e.which==t.keyCode.TAB&&e.preventDefault());if(e.which===t.keyCode.ENTER)return t.setNgModelValue(t.displayDate),void e.prevent
 Default();var n=t.getFocusDateFromKeyEvent(e);n&&(n=t.boundDateByMinAndMax(n),e.preventDefault(),e.stopPropagation(),t.changeDisplayDate(n).then(function(){t.focus(n)}))})},n.prototype.getFocusDateFromKeyEvent=function(e){var t=this.dateUtil,n=this.keyCode;switch(e.which){case n.RIGHT_ARROW:return t.incrementDays(this.displayDate,1);case n.LEFT_ARROW:return t.incrementDays(this.displayDate,-1);case n.DOWN_ARROW:return e.metaKey?t.incrementMonths(this.displayDate,1):t.incrementDays(this.displayDate,7);case n.UP_ARROW:return e.metaKey?t.incrementMonths(this.displayDate,-1):t.incrementDays(this.displayDate,-7);case n.PAGE_DOWN:return t.incrementMonths(this.displayDate,1);case n.PAGE_UP:return t.incrementMonths(this.displayDate,-1);case n.HOME:return t.getFirstDateOfMonth(this.displayDate);case n.END:return t.getLastDateOfMonth(this.displayDate);default:return null}},n.prototype.getSelectedMonthIndex=function(){return this.dateUtil.getMonthDistance(this.firstRenderableDate,this.selected
 Date||this.today)},n.prototype.scrollToMonth=function(e){if(this.dateUtil.isValidDate(e)){var t=this.dateUtil.getMonthDistance(this.firstRenderableDate,e);this.calendarScroller.scrollTop=t*o}},n.prototype.setNgModelValue=function(e){this.$scope.$emit("md-calendar-change",e),this.ngModelCtrl.$setViewValue(e),this.ngModelCtrl.$render()},n.prototype.focus=function(e){var t=e||this.selectedDate||this.today,n=this.calendarElement.querySelector(".md-focus");n&&n.classList.remove(a);var o=this.getDateId(t),r=document.getElementById(o);r?(r.classList.add(a),r.focus()):this.focusDate=t},n.prototype.boundDateByMinAndMax=function(e){var t=e;return this.minDate&&e<this.minDate&&(t=new Date(this.minDate.getTime())),this.maxDate&&e>this.maxDate&&(t=new Date(this.maxDate.getTime())),t},n.prototype.changeSelectedDate=function(e){var t=this,n=this.selectedDate;this.selectedDate=e,this.changeDisplayDate(e).then(function(){if(n){var o=document.getElementById(t.getDateId(n));o&&(o.classList.remove(i),o
 .setAttribute("aria-selected","false"))}if(e){var r=document.getElementById(t.getDateId(e));r&&(r.classList.add(i),r.setAttribute("aria-selected","true"))}})},n.prototype.changeDisplayDate=function(e){if(!this.isInitialized)return this.buildInitialCalendarDisplay(),this.$q.when();if(!this.dateUtil.isValidDate(e)||this.isMonthTransitionInProgress)return this.$q.when();this.isMonthTransitionInProgress=!0;var t=this.animateDateChange(e);this.displayDate=e;var n=this;return t.then(function(){n.isMonthTransitionInProgress=!1}),t},n.prototype.animateDateChange=function(e){return this.scrollToMonth(e),this.$q.when()},n.prototype.buildWeekHeader=function(){for(var e=this.dateLocale.firstDayOfWeek,t=this.dateLocale.shortDays,n=document.createElement("tr"),o=0;7>o;o++){var r=document.createElement("th");r.textContent=t[(o+e)%7],n.appendChild(r)}this.$element.find("thead").append(n)},n.prototype.getDateId=function(e){return["md",this.id,e.getFullYear(),e.getMonth(),e.getDate()].join("-")}}()}(
 ),function(){!function(){function e(){return{require:["^^mdCalendar","mdCalendarMonth"],scope:{offset:"=mdMonthOffset"},controller:n,controllerAs:"mdMonthCtrl",bindToController:!0,link:function(e,t,n,o){var r=o[0],i=o[1];i.calendarCtrl=r,i.generateContent(),e.$watch(function(){return i.offset},function(e,t){e!=t&&i.generateContent()})}}}function n(e,t,n){this.dateUtil=t,this.dateLocale=n,this.$element=e,this.calendarCtrl=null,this.offset,this.focusAfterAppend=null}t.module("material.components.datepicker").directive("mdCalendarMonth",e);var o="md-calendar-date-today",r="md-calendar-selected-date",i="md-focus";n.$inject=["$element","$$mdDateUtil","$mdDateLocale"],n.prototype.generateContent=function(){var e=this.calendarCtrl,t=this.dateUtil.incrementMonths(e.firstRenderableDate,this.offset);this.$element.empty(),this.$element.append(this.buildCalendarForMonth(t)),this.focusAfterAppend&&(this.focusAfterAppend.classList.add(i),this.focusAfterAppend.focus(),this.focusAfterAppend=null)},
 n.prototype.buildDateCell=function(e){var t=this.calendarCtrl,n=document.createElement("td");if(n.tabIndex=-1,n.classList.add("md-calendar-date"),n.setAttribute("role","gridcell"),e){n.setAttribute("tabindex","-1"),n.setAttribute("aria-label",this.dateLocale.longDateFormatter(e)),n.id=t.getDateId(e),n.setAttribute("data-timestamp",e.getTime()),this.dateUtil.isSameDay(e,t.today)&&n.classList.add(o),this.dateUtil.isValidDate(t.selectedDate)&&this.dateUtil.isSameDay(e,t.selectedDate)&&(n.classList.add(r),n.setAttribute("aria-selected","true"));var i=this.dateLocale.dates[e.getDate()];if(this.isDateEnabled(e)){var a=document.createElement("span");n.appendChild(a),a.classList.add("md-calendar-date-selection-indicator"),a.textContent=i,n.addEventListener("click",t.cellClickHandler),t.focusDate&&this.dateUtil.isSameDay(e,t.focusDate)&&(this.focusAfterAppend=n)}else n.classList.add("md-calendar-date-disabled"),n.textContent=i}return n},n.prototype.isDateEnabled=function(e){return this.dateU
 til.isDateWithinRange(e,this.calendarCtrl.minDate,this.calendarCtrl.maxDate)&&(!t.isFunction(this.calendarCtrl.dateFilter)||this.calendarCtrl.dateFilter(e))},n.prototype.buildDateRow=function(e){var t=document.createElement("tr");return t.setAttribute("role","row"),t.setAttribute("aria-label",this.dateLocale.weekNumberFormatter(e)),t},n.prototype.buildCalendarForMonth=function(e){var t=this.dateUtil.isValidDate(e)?e:new Date,n=this.dateUtil.getFirstDateOfMonth(t),o=this.getLocaleDay_(n),r=this.dateUtil.getNumberOfDaysInMonth(t),i=document.createDocumentFragment(),a=1,d=this.buildDateRow(a);i.appendChild(d);var c=this.offset===this.calendarCtrl.items.length-1,s=0,l=document.createElement("td");if(l.classList.add("md-calendar-month-label"),this.calendarCtrl.maxDate&&n>this.calendarCtrl.maxDate&&l.classList.add("md-calendar-month-label-disabled"),l.textContent=this.dateLocale.monthHeaderFormatter(t),2>=o){l.setAttribute("colspan","7");var m=this.buildDateRow();if(m.appendChild(l),i.ins
 ertBefore(m,d),c)return i}else s=2,l.setAttribute("colspan","2"),d.appendChild(l);for(var u=s;o>u;u++)d.appendChild(this.buildDateCell());for(var p=o,h=n,f=1;r>=f;f++){if(7===p){if(c)return i;p=0,a++,d=this.buildDateRow(a),i.appendChild(d)}h.setDate(f);var g=this.buildDateCell(h);d.appendChild(g),p++}for(;d.childNodes.length<7;)d.appendChild(this.buildDateCell());for(;i.childNodes.length<6;){for(var b=this.buildDateRow(),u=0;7>u;u++)b.appendChild(this.buildDateCell());i.appendChild(b)}return i},n.prototype.getLocaleDay_=function(e){return(e.getDay()+(7-this.dateLocale.firstDayOfWeek))%7}}()}(),function(){!function(){t.module("material.components.datepicker").config(["$provide",function(e){function t(){this.months=null,this.shortMonths=null,this.days=null,this.shortDays=null,this.dates=null,this.firstDayOfWeek=0,this.formatDate=null,this.parseDate=null,this.monthHeaderFormatter=null,this.weekNumberFormatter=null,this.longDateFormatter=null,this.msgCalendar="",this.msgOpenCalendar=""}
 t.prototype.$get=function(e){function t(e){if(!e)return"";var t=e.toLocaleTimeString(),n=e;return 0!=e.getHours()||-1===t.indexOf("11:")&&-1===t.indexOf("23:")||(n=new Date(e.getFullYear(),e.getMonth(),e.getDate(),1,0,0)),n.toLocaleDateString()}function n(e){return new Date(e)}function o(e){e=e.trim();var t=/^(([a-zA-Z]{3,}|[0-9]{1,4})([ \.,]+|[\/\-])){2}([a-zA-Z]{3,}|[0-9]{1,4})$/;return t.test(e)}function r(e){return u.shortMonths[e.getMonth()]+" "+e.getFullYear()}function i(e){return"Week "+e}function a(e){return[u.days[e.getDay()],u.months[e.getMonth()],u.dates[e.getDate()],e.getFullYear()].join(" ")}for(var d=e.DATETIME_FORMATS.DAY.map(function(e){return e[0]}),c=Array(32),s=1;31>=s;s++)c[s]=s;var l="Calendar",m="Open calendar",u={months:this.months||e.DATETIME_FORMATS.MONTH,shortMonths:this.shortMonths||e.DATETIME_FORMATS.SHORTMONTH,days:this.days||e.DATETIME_FORMATS.DAY,shortDays:this.shortDays||d,dates:this.dates||c,firstDayOfWeek:this.firstDayOfWeek||0,formatDate:this.forma
 tDate||t,parseDate:this.parseDate||n,isDateComplete:this.isDateComplete||o,monthHeaderFormatter:this.monthHeaderFormatter||r,weekNumberFormatter:this.weekNumberFormatter||i,longDateFormatter:this.longDateFormatter||a,msgCalendar:this.msgCalendar||l,msgOpenCalendar:this.msgOpenCalendar||m};return u},t.prototype.$get.$inject=["$locale"],e.provider("$mdDateLocale",new t)}])}()}(),function(){!function(){function n(){return{template:'<md-button class="md-datepicker-button md-icon-button" type="button" tabindex="-1" aria-hidden="true" ng-click="ctrl.openCalendarPane($event)"><md-icon class="md-datepicker-calendar-icon" md-svg-icon="md-calendar"></md-icon></md-button><div class="md-datepicker-input-container" ng-class="{\'md-datepicker-focused\': ctrl.isFocused}"><input class="md-datepicker-input" aria-haspopup="true" ng-focus="ctrl.setFocused(true)" ng-blur="ctrl.setFocused(false)"><md-button type="button" md-no-ink class="md-datepicker-triangle-button md-icon-button" ng-click="ctrl.openC
 alendarPane($event)" aria-label="{{::ctrl.dateLocale.msgOpenCalendar}}"><div class="md-datepicker-expand-triangle"></div></md-button></div><div class="md-datepicker-calendar-pane md-whiteframe-z1"><div class="md-datepicker-input-mask"><div class="md-datepicker-input-mask-opaque"></div></div><div class="md-datepicker-calendar"><md-calendar role="dialog" aria-label="{{::ctrl.dateLocale.msgCalendar}}" md-min-date="ctrl.minDate" md-max-date="ctrl.maxDate"md-date-filter="ctrl.dateFilter"ng-model="ctrl.date" ng-if="ctrl.isCalendarOpen"></md-calendar></div></div>',require:["ngModel","mdDatepicker","?^mdInputContainer"],scope:{minDate:"=mdMinDate",maxDate:"=mdMaxDate",placeholder:"@mdPlaceholder",dateFilter:"=mdDateFilter"},controller:o,controllerAs:"ctrl",bindToController:!0,link:function(e,t,n,o){var r=o[0],i=o[1],a=o[2];if(a)throw Error("md-datepicker should not be placed inside md-input-container.");i.configureNgModel(r)}}}function o(e,n,o,r,i,a,d,c,s,l,m,u){this.$compile=r,this.$timeou
 t=i,this.$window=a,this.dateLocale=l,this.dateUtil=m,this.$mdConstant=d,this.$mdUtil=s,this.$$rAF=u,this.documentElement=t.element(document.documentElement),this.ngModelCtrl=null,this.inputElement=n[0].querySelector("input"),this.ngInputElement=t.element(this.inputElement),this.inputContainer=n[0].querySelector(".md-datepicker-input-container"),this.calendarPane=n[0].querySelector(".md-datepicker-calendar-pane"),this.calendarButton=n[0].querySelector(".md-datepicker-button"),this.inputMask=n[0].querySelector(".md-datepicker-input-mask-opaque"),this.$element=n,this.$attrs=o,this.$scope=e,this.date=null,this.isFocused=!1,this.isDisabled,this.setDisabled(n[0].disabled||t.isString(o.disabled)),this.isCalendarOpen=!1,this.calendarPaneOpenedFrom=null,this.calendarPane.id="md-date-pane"+s.nextUid(),c(n),this.bodyClickHandler=t.bind(this,this.handleBodyClick),this.windowResizeHandler=s.debounce(t.bind(this,this.closeCalendarPane),100),o.tabindex||n.attr("tabindex","-1"),this.installProperty
 Interceptors(),this.attachChangeListeners(),this.attachInteractionListeners();var p=this;e.$on("$destroy",function(){p.detachCalendarPane()})}t.module("material.components.datepicker").directive("mdDatepicker",n);var r=3,i="md-datepicker-invalid",a=500,d=368,c=360;o.$inject=["$scope","$element","$attrs","$compile","$timeout","$window","$mdConstant","$mdTheming","$mdUtil","$mdDateLocale","$$mdDateUtil","$$rAF"],o.prototype.configureNgModel=function(e){this.ngModelCtrl=e;var t=this;e.$render=function(){var e=t.ngModelCtrl.$viewValue;if(e&&!(e instanceof Date))throw Error("The ng-model for md-datepicker must be a Date instance. Currently the model is a: "+typeof e);t.date=e,t.inputElement.value=t.dateLocale.formatDate(e),t.resizeInputElement(),t.updateErrorState()}},o.prototype.attachChangeListeners=function(){var e=this;e.$scope.$on("md-calendar-change",function(t,n){e.ngModelCtrl.$setViewValue(n),e.date=n,e.inputElement.value=e.dateLocale.formatDate(n),e.closeCalendarPane(),e.resizeI
 nputElement(),e.updateErrorState()}),e.ngInputElement.on("input",t.bind(e,e.resizeInputElement)),e.ngInputElement.on("input",e.$mdUtil.debounce(e.handleInputEvent,a,e))},o.prototype.attachInteractionListeners=function(){var e=this,t=this.$scope,n=this.$mdConstant.KEY_CODE;e.ngInputElement.on("keydown",function(o){o.altKey&&o.keyCode==n.DOWN_ARROW&&(e.openCalendarPane(o),t.$digest())}),t.$on("md-calendar-close",function(){e.closeCalendarPane()})},o.prototype.installPropertyInterceptors=function(){var e=this;if(this.$attrs.ngDisabled){var t=this.$scope.$parent;t&&t.$watch(this.$attrs.ngDisabled,function(t){e.setDisabled(t)})}Object.defineProperty(this,"placeholder",{get:function(){return e.inputElement.placeholder},set:function(t){e.inputElement.placeholder=t||""}})},o.prototype.setDisabled=function(e){this.isDisabled=e,this.inputElement.disabled=e,this.calendarButton.disabled=e},o.prototype.updateErrorState=function(e){var n=e||this.date;if(this.clearErrorState(),this.dateUtil.isVali
 dDate(n)){if(n=this.dateUtil.createDateAtMidnight(n),this.dateUtil.isValidDate(this.minDate)){var o=this.dateUtil.createDateAtMidnight(this.minDate);this.ngModelCtrl.$setValidity("mindate",n>=o)}if(this.dateUtil.isValidDate(this.maxDate)){var r=this.dateUtil.createDateAtMidnight(this.maxDate);this.ngModelCtrl.$setValidity("maxdate",r>=n)}t.isFunction(this.dateFilter)&&this.ngModelCtrl.$setValidity("filtered",this.dateFilter(n))}else this.ngModelCtrl.$setValidity("valid",null==n);this.ngModelCtrl.$valid||this.inputContainer.classList.add(i)},o.prototype.clearErrorState=function(){this.inputContainer.classList.remove(i),["mindate","maxdate","filtered","valid"].forEach(function(e){this.ngModelCtrl.$setValidity(e,!0)},this)},o.prototype.resizeInputElement=function(){this.inputElement.size=this.inputElement.value.length+r},o.prototype.handleInputEvent=function(){var e=this.inputElement.value,t=e?this.dateLocale.parseDate(e):null;this.dateUtil.setDateTimeToMidnight(t);var n=""==e||this.da
 teUtil.isValidDate(t)&&this.dateLocale.isDateComplete(e)&&this.isDateEnabled(t);n&&(this.ngModelCtrl.$setViewValue(t),this.date=t),this.updateErrorState(t)},o.prototype.isDateEnabled=function(e){return this.dateUtil.isDateWithinRange(e,this.minDate,this.maxDate)&&(!t.isFunction(this.dateFilter)||this.dateFilter(e))},o.prototype.attachCalendarPane=function(){var e=this.calendarPane;e.style.transform="",this.$element.addClass("md-datepicker-open");var t=this.inputContainer.getBoundingClientRect(),n=document.body.getBoundingClientRect(),o=t.top-n.top,r=t.left-n.left,i=n.top<0&&0==document.body.scrollTop?-n.top:document.body.scrollTop,a=n.left<0&&0==document.body.scrollLeft?-n.left:document.body.scrollLeft,s=i+this.$window.innerHeight,l=a+this.$window.innerWidth;if(r+c>l){if(l-c>0)r=l-c;else{r=a;var m=this.$window.innerWidth/c;e.style.transform="scale("+m+")"}e.classList.add("md-datepicker-pos-adjusted")}o+d>s&&s-d>i&&(o=s-d,e.classList.add("md-datepicker-pos-adjusted")),e.style.left=r+
 "px",e.style.top=o+"px",document.body.appendChild(e),this.inputMask.style.left=t.width+"px",this.$$rAF(function(){e.classList.add("md-pane-open")})},o.prototype.detachCalendarPane=function(){this.$element.removeClass("md-datepicker-open"),this.calendarPane.classList.remove("md-pane-open"),this.calendarPane.classList.remove("md-datepicker-pos-adjusted"),this.isCalendarOpen&&this.$mdUtil.enableScrolling(),this.calendarPane.parentNode&&this.calendarPane.parentNode.removeChild(this.calendarPane)},o.prototype.openCalendarPane=function(t){if(!this.isCalendarOpen&&!this.isDisabled){this.isCalendarOpen=!0,this.calendarPaneOpenedFrom=t.target,this.$mdUtil.disableScrollAround(this.calendarPane),this.attachCalendarPane(),this.focusCalendar();var n=this;this.$mdUtil.nextTick(function(){n.documentElement.on("click touchstart",n.bodyClickHandler)},!1),e.addEventListener("resize",this.windowResizeHandler)}},o.prototype.closeCalendarPane=function(){this.isCalendarOpen&&(this.detachCalendarPane(),th
 is.isCalendarOpen=!1,this.calendarPaneOpenedFrom.focus(),this.calendarPaneOpenedFrom=null,this.ngModelCtrl.$setTouched(),this.documentElement.off("click touchstart",this.bodyClickHandler),e.removeEventListener("resize",this.windowResizeHandler))},o.prototype.getCalendarCtrl=function(){return t.element(this.calendarPane.querySelector("md-calendar")).controller("mdCalendar")},o.prototype.focusCalendar=function(){var e=this;this.$mdUtil.nextTick(function(){e.getCalendarCtrl().focus()},!1)},o.prototype.setFocused=function(e){e||this.ngModelCtrl.$setTouched(),this.isFocused=e},o.prototype.handleBodyClick=function(e){if(this.isCalendarOpen){var t=this.$mdUtil.getClosest(e.target,"md-calendar");t||this.closeCalendarPane(),this.$scope.$digest()}}}()}(),function(){!function(){t.module("material.components.datepicker").factory("$$mdDateUtil",function(){function e(e){return new Date(e.getFullYear(),e.getMonth(),1)}function n(e){return new Date(e.getFullYear(),e.getMonth()+1,0).getDate()}functi
 on o(e){return new Date(e.getFullYear(),e.getMonth()+1,1)}function r(e){return new Date(e.getFullYear(),e.getMonth()-1,1)}function i(e,t){return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()}function a(e,t){return e.getDate()==t.getDate()&&i(e,t)}function d(e,t){var n=o(e);return i(n,t)}function c(e,t){var n=r(e);return i(t,n)}function s(e,t){return b((e.getTime()+t.getTime())/2)}function l(t){var n=e(t);return Math.floor((n.getDay()+t.getDate()-1)/7)}function m(e,t){return new Date(e.getFullYear(),e.getMonth(),e.getDate()+t)}function u(e,t){var o=new Date(e.getFullYear(),e.getMonth()+t,1),r=n(o);return r<e.getDate()?o.setDate(r):o.setDate(e.getDate()),o}function p(e,t){return 12*(t.getFullYear()-e.getFullYear())+(t.getMonth()-e.getMonth())}function h(e){return new Date(e.getFullYear(),e.getMonth(),n(e))}function f(e){return null!=e&&e.getTime&&!isNaN(e.getTime())}function g(e){f(e)&&e.setHours(0,0,0,0)}function b(e){var n;return n=t.isUndefined(e)?new Date:new Date
 (e),g(n),n}function v(e,t,n){var o=b(e),r=f(t)?b(t):null,i=f(n)?b(n):null;return(!r||o>=r)&&(!i||i>=o)}return{getFirstDateOfMonth:e,getNumberOfDaysInMonth:n,getDateInNextMonth:o,getDateInPreviousMonth:r,isInNextMonth:d,isInPreviousMonth:c,getDateMidpoint:s,isSameMonthAndYear:i,getWeekOfMonth:l,incrementDays:m,incrementMonths:u,getLastDateOfMonth:h,isSameDay:a,getMonthDistance:p,isValidDate:f,setDateTimeToMidnight:g,createDateAtMidnight:b,isDateWithinRange:v}})}()}(),function(){function e(e,n,o){return{restrict:"E",link:function(r,i,a){n(i),e(function(){function e(){i.toggleClass("md-content-overflow",a.scrollHeight>a.clientHeight)}var n,a=i[0].querySelector("md-dialog-content");a&&(n=a.getElementsByTagName("img"),e(),t.element(n).on("load",

<TRUNCATED>


[26/51] [partial] incubator-rocketmq-externals git commit: Release rocketmq-console 1.0.0 version

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/e218eef9/rocketmq-console/src/main/resources/static/vendor/angular/angular.min.js
----------------------------------------------------------------------
diff --git a/rocketmq-console/src/main/resources/static/vendor/angular/angular.min.js b/rocketmq-console/src/main/resources/static/vendor/angular/angular.min.js
new file mode 100644
index 0000000..02e1fae
--- /dev/null
+++ b/rocketmq-console/src/main/resources/static/vendor/angular/angular.min.js
@@ -0,0 +1,316 @@
+/*
+ AngularJS v1.5.6
+ (c) 2010-2016 Google, Inc. http://angularjs.org
+ License: MIT
+*/
+(function(F){'use strict';function O(a){return function(){var b=arguments[0],d;d="["+(a?a+":":"")+b+"] http://errors.angularjs.org/1.5.6/"+(a?a+"/":"")+b;for(b=1;b<arguments.length;b++){d=d+(1==b?"?":"&")+"p"+(b-1)+"=";var c=encodeURIComponent,e;e=arguments[b];e="function"==typeof e?e.toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof e?"undefined":"string"!=typeof e?JSON.stringify(e):e;d+=c(e)}return Error(d)}}function xa(a){if(null==a||Wa(a))return!1;if(K(a)||I(a)||G&&a instanceof G)return!0;
+var b="length"in Object(a)&&a.length;return Q(b)&&(0<=b&&(b-1 in a||a instanceof Array)||"function"==typeof a.item)}function q(a,b,d){var c,e;if(a)if(E(a))for(c in a)"prototype"==c||"length"==c||"name"==c||a.hasOwnProperty&&!a.hasOwnProperty(c)||b.call(d,a[c],c,a);else if(K(a)||xa(a)){var f="object"!==typeof a;c=0;for(e=a.length;c<e;c++)(f||c in a)&&b.call(d,a[c],c,a)}else if(a.forEach&&a.forEach!==q)a.forEach(b,d,a);else if(rc(a))for(c in a)b.call(d,a[c],c,a);else if("function"===typeof a.hasOwnProperty)for(c in a)a.hasOwnProperty(c)&&
+b.call(d,a[c],c,a);else for(c in a)sa.call(a,c)&&b.call(d,a[c],c,a);return a}function sc(a,b,d){for(var c=Object.keys(a).sort(),e=0;e<c.length;e++)b.call(d,a[c[e]],c[e]);return c}function tc(a){return function(b,d){a(d,b)}}function Yd(){return++pb}function Qb(a,b,d){for(var c=a.$$hashKey,e=0,f=b.length;e<f;++e){var g=b[e];if(J(g)||E(g))for(var h=Object.keys(g),k=0,l=h.length;k<l;k++){var m=h[k],n=g[m];d&&J(n)?ha(n)?a[m]=new Date(n.valueOf()):Xa(n)?a[m]=new RegExp(n):n.nodeName?a[m]=n.cloneNode(!0):
+Rb(n)?a[m]=n.clone():(J(a[m])||(a[m]=K(n)?[]:{}),Qb(a[m],[n],!0)):a[m]=n}}c?a.$$hashKey=c:delete a.$$hashKey;return a}function P(a){return Qb(a,ya.call(arguments,1),!1)}function Zd(a){return Qb(a,ya.call(arguments,1),!0)}function $(a){return parseInt(a,10)}function Sb(a,b){return P(Object.create(a),b)}function C(){}function Ya(a){return a}function ca(a){return function(){return a}}function uc(a){return E(a.toString)&&a.toString!==ja}function y(a){return"undefined"===typeof a}function v(a){return"undefined"!==
+typeof a}function J(a){return null!==a&&"object"===typeof a}function rc(a){return null!==a&&"object"===typeof a&&!vc(a)}function I(a){return"string"===typeof a}function Q(a){return"number"===typeof a}function ha(a){return"[object Date]"===ja.call(a)}function E(a){return"function"===typeof a}function Xa(a){return"[object RegExp]"===ja.call(a)}function Wa(a){return a&&a.window===a}function Za(a){return a&&a.$evalAsync&&a.$watch}function Ea(a){return"boolean"===typeof a}function $d(a){return a&&Q(a.length)&&
+ae.test(ja.call(a))}function Rb(a){return!(!a||!(a.nodeName||a.prop&&a.attr&&a.find))}function be(a){var b={};a=a.split(",");var d;for(d=0;d<a.length;d++)b[a[d]]=!0;return b}function ta(a){return L(a.nodeName||a[0]&&a[0].nodeName)}function $a(a,b){var d=a.indexOf(b);0<=d&&a.splice(d,1);return d}function oa(a,b){function d(a,b){var d=b.$$hashKey,e;if(K(a)){e=0;for(var f=a.length;e<f;e++)b.push(c(a[e]))}else if(rc(a))for(e in a)b[e]=c(a[e]);else if(a&&"function"===typeof a.hasOwnProperty)for(e in a)a.hasOwnProperty(e)&&
+(b[e]=c(a[e]));else for(e in a)sa.call(a,e)&&(b[e]=c(a[e]));d?b.$$hashKey=d:delete b.$$hashKey;return b}function c(a){if(!J(a))return a;var b=f.indexOf(a);if(-1!==b)return g[b];if(Wa(a)||Za(a))throw za("cpws");var b=!1,c=e(a);void 0===c&&(c=K(a)?[]:Object.create(vc(a)),b=!0);f.push(a);g.push(c);return b?d(a,c):c}function e(a){switch(ja.call(a)){case "[object Int8Array]":case "[object Int16Array]":case "[object Int32Array]":case "[object Float32Array]":case "[object Float64Array]":case "[object Uint8Array]":case "[object Uint8ClampedArray]":case "[object Uint16Array]":case "[object Uint32Array]":return new a.constructor(c(a.buffer));
+case "[object ArrayBuffer]":if(!a.slice){var b=new ArrayBuffer(a.byteLength);(new Uint8Array(b)).set(new Uint8Array(a));return b}return a.slice(0);case "[object Boolean]":case "[object Number]":case "[object String]":case "[object Date]":return new a.constructor(a.valueOf());case "[object RegExp]":return b=new RegExp(a.source,a.toString().match(/[^\/]*$/)[0]),b.lastIndex=a.lastIndex,b;case "[object Blob]":return new a.constructor([a],{type:a.type})}if(E(a.cloneNode))return a.cloneNode(!0)}var f=[],
+g=[];if(b){if($d(b)||"[object ArrayBuffer]"===ja.call(b))throw za("cpta");if(a===b)throw za("cpi");K(b)?b.length=0:q(b,function(a,d){"$$hashKey"!==d&&delete b[d]});f.push(a);g.push(b);return d(a,b)}return c(a)}function fa(a,b){if(K(a)){b=b||[];for(var d=0,c=a.length;d<c;d++)b[d]=a[d]}else if(J(a))for(d in b=b||{},a)if("$"!==d.charAt(0)||"$"!==d.charAt(1))b[d]=a[d];return b||a}function na(a,b){if(a===b)return!0;if(null===a||null===b)return!1;if(a!==a&&b!==b)return!0;var d=typeof a,c;if(d==typeof b&&
+"object"==d)if(K(a)){if(!K(b))return!1;if((d=a.length)==b.length){for(c=0;c<d;c++)if(!na(a[c],b[c]))return!1;return!0}}else{if(ha(a))return ha(b)?na(a.getTime(),b.getTime()):!1;if(Xa(a))return Xa(b)?a.toString()==b.toString():!1;if(Za(a)||Za(b)||Wa(a)||Wa(b)||K(b)||ha(b)||Xa(b))return!1;d=S();for(c in a)if("$"!==c.charAt(0)&&!E(a[c])){if(!na(a[c],b[c]))return!1;d[c]=!0}for(c in b)if(!(c in d)&&"$"!==c.charAt(0)&&v(b[c])&&!E(b[c]))return!1;return!0}return!1}function ab(a,b,d){return a.concat(ya.call(b,
+d))}function bb(a,b){var d=2<arguments.length?ya.call(arguments,2):[];return!E(b)||b instanceof RegExp?b:d.length?function(){return arguments.length?b.apply(a,ab(d,arguments,0)):b.apply(a,d)}:function(){return arguments.length?b.apply(a,arguments):b.call(a)}}function ce(a,b){var d=b;"string"===typeof a&&"$"===a.charAt(0)&&"$"===a.charAt(1)?d=void 0:Wa(b)?d="$WINDOW":b&&F.document===b?d="$DOCUMENT":Za(b)&&(d="$SCOPE");return d}function cb(a,b){if(!y(a))return Q(b)||(b=b?2:null),JSON.stringify(a,ce,
+b)}function wc(a){return I(a)?JSON.parse(a):a}function xc(a,b){a=a.replace(de,"");var d=Date.parse("Jan 01, 1970 00:00:00 "+a)/6E4;return isNaN(d)?b:d}function Tb(a,b,d){d=d?-1:1;var c=a.getTimezoneOffset();b=xc(b,c);d*=b-c;a=new Date(a.getTime());a.setMinutes(a.getMinutes()+d);return a}function ua(a){a=G(a).clone();try{a.empty()}catch(b){}var d=G("<div>").append(a).html();try{return a[0].nodeType===Na?L(d):d.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+L(b)})}catch(c){return L(d)}}
+function yc(a){try{return decodeURIComponent(a)}catch(b){}}function zc(a){var b={};q((a||"").split("&"),function(a){var c,e,f;a&&(e=a=a.replace(/\+/g,"%20"),c=a.indexOf("="),-1!==c&&(e=a.substring(0,c),f=a.substring(c+1)),e=yc(e),v(e)&&(f=v(f)?yc(f):!0,sa.call(b,e)?K(b[e])?b[e].push(f):b[e]=[b[e],f]:b[e]=f))});return b}function Ub(a){var b=[];q(a,function(a,c){K(a)?q(a,function(a){b.push(ia(c,!0)+(!0===a?"":"="+ia(a,!0)))}):b.push(ia(c,!0)+(!0===a?"":"="+ia(a,!0)))});return b.length?b.join("&"):""}
+function qb(a){return ia(a,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function ia(a,b){return encodeURIComponent(a).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,b?"%20":"+")}function ee(a,b){var d,c,e=Oa.length;for(c=0;c<e;++c)if(d=Oa[c]+b,I(d=a.getAttribute(d)))return d;return null}function fe(a,b){var d,c,e={};q(Oa,function(b){b+="app";!d&&a.hasAttribute&&a.hasAttribute(b)&&(d=a,c=a.getAttribute(b))});
+q(Oa,function(b){b+="app";var e;!d&&(e=a.querySelector("["+b.replace(":","\\:")+"]"))&&(d=e,c=e.getAttribute(b))});d&&(e.strictDi=null!==ee(d,"strict-di"),b(d,c?[c]:[],e))}function Ac(a,b,d){J(d)||(d={});d=P({strictDi:!1},d);var c=function(){a=G(a);if(a.injector()){var c=a[0]===F.document?"document":ua(a);throw za("btstrpd",c.replace(/</,"&lt;").replace(/>/,"&gt;"));}b=b||[];b.unshift(["$provide",function(b){b.value("$rootElement",a)}]);d.debugInfoEnabled&&b.push(["$compileProvider",function(a){a.debugInfoEnabled(!0)}]);
+b.unshift("ng");c=db(b,d.strictDi);c.invoke(["$rootScope","$rootElement","$compile","$injector",function(a,b,c,d){a.$apply(function(){b.data("$injector",d);c(b)(a)})}]);return c},e=/^NG_ENABLE_DEBUG_INFO!/,f=/^NG_DEFER_BOOTSTRAP!/;F&&e.test(F.name)&&(d.debugInfoEnabled=!0,F.name=F.name.replace(e,""));if(F&&!f.test(F.name))return c();F.name=F.name.replace(f,"");da.resumeBootstrap=function(a){q(a,function(a){b.push(a)});return c()};E(da.resumeDeferredBootstrap)&&da.resumeDeferredBootstrap()}function ge(){F.name=
+"NG_ENABLE_DEBUG_INFO!"+F.name;F.location.reload()}function he(a){a=da.element(a).injector();if(!a)throw za("test");return a.get("$$testability")}function Bc(a,b){b=b||"_";return a.replace(ie,function(a,c){return(c?b:"")+a.toLowerCase()})}function je(){var a;if(!Cc){var b=rb();(Y=y(b)?F.jQuery:b?F[b]:void 0)&&Y.fn.on?(G=Y,P(Y.fn,{scope:Pa.scope,isolateScope:Pa.isolateScope,controller:Pa.controller,injector:Pa.injector,inheritedData:Pa.inheritedData}),a=Y.cleanData,Y.cleanData=function(b){for(var c,
+e=0,f;null!=(f=b[e]);e++)(c=Y._data(f,"events"))&&c.$destroy&&Y(f).triggerHandler("$destroy");a(b)}):G=T;da.element=G;Cc=!0}}function sb(a,b,d){if(!a)throw za("areq",b||"?",d||"required");return a}function Qa(a,b,d){d&&K(a)&&(a=a[a.length-1]);sb(E(a),b,"not a function, got "+(a&&"object"===typeof a?a.constructor.name||"Object":typeof a));return a}function Ra(a,b){if("hasOwnProperty"===a)throw za("badname",b);}function Dc(a,b,d){if(!b)return a;b=b.split(".");for(var c,e=a,f=b.length,g=0;g<f;g++)c=
+b[g],a&&(a=(e=a)[c]);return!d&&E(a)?bb(e,a):a}function tb(a){for(var b=a[0],d=a[a.length-1],c,e=1;b!==d&&(b=b.nextSibling);e++)if(c||a[e]!==b)c||(c=G(ya.call(a,0,e))),c.push(b);return c||a}function S(){return Object.create(null)}function ke(a){function b(a,b,c){return a[b]||(a[b]=c())}var d=O("$injector"),c=O("ng");a=b(a,"angular",Object);a.$$minErr=a.$$minErr||O;return b(a,"module",function(){var a={};return function(f,g,h){if("hasOwnProperty"===f)throw c("badname","module");g&&a.hasOwnProperty(f)&&
+(a[f]=null);return b(a,f,function(){function a(b,d,e,f){f||(f=c);return function(){f[e||"push"]([b,d,arguments]);return U}}function b(a,d){return function(b,e){e&&E(e)&&(e.$$moduleName=f);c.push([a,d,arguments]);return U}}if(!g)throw d("nomod",f);var c=[],e=[],p=[],x=a("$injector","invoke","push",e),U={_invokeQueue:c,_configBlocks:e,_runBlocks:p,requires:g,name:f,provider:b("$provide","provider"),factory:b("$provide","factory"),service:b("$provide","service"),value:a("$provide","value"),constant:a("$provide",
+"constant","unshift"),decorator:b("$provide","decorator"),animation:b("$animateProvider","register"),filter:b("$filterProvider","register"),controller:b("$controllerProvider","register"),directive:b("$compileProvider","directive"),component:b("$compileProvider","component"),config:x,run:function(a){p.push(a);return this}};h&&x(h);return U})}})}function le(a){P(a,{bootstrap:Ac,copy:oa,extend:P,merge:Zd,equals:na,element:G,forEach:q,injector:db,noop:C,bind:bb,toJson:cb,fromJson:wc,identity:Ya,isUndefined:y,
+isDefined:v,isString:I,isFunction:E,isObject:J,isNumber:Q,isElement:Rb,isArray:K,version:me,isDate:ha,lowercase:L,uppercase:ub,callbacks:{counter:0},getTestability:he,$$minErr:O,$$csp:Fa,reloadWithDebugInfo:ge});Vb=ke(F);Vb("ng",["ngLocale"],["$provide",function(a){a.provider({$$sanitizeUri:ne});a.provider("$compile",Ec).directive({a:oe,input:Fc,textarea:Fc,form:pe,script:qe,select:re,style:se,option:te,ngBind:ue,ngBindHtml:ve,ngBindTemplate:we,ngClass:xe,ngClassEven:ye,ngClassOdd:ze,ngCloak:Ae,ngController:Be,
+ngForm:Ce,ngHide:De,ngIf:Ee,ngInclude:Fe,ngInit:Ge,ngNonBindable:He,ngPluralize:Ie,ngRepeat:Je,ngShow:Ke,ngStyle:Le,ngSwitch:Me,ngSwitchWhen:Ne,ngSwitchDefault:Oe,ngOptions:Pe,ngTransclude:Qe,ngModel:Re,ngList:Se,ngChange:Te,pattern:Gc,ngPattern:Gc,required:Hc,ngRequired:Hc,minlength:Ic,ngMinlength:Ic,maxlength:Jc,ngMaxlength:Jc,ngValue:Ue,ngModelOptions:Ve}).directive({ngInclude:We}).directive(vb).directive(Kc);a.provider({$anchorScroll:Xe,$animate:Ye,$animateCss:Ze,$$animateJs:$e,$$animateQueue:af,
+$$AnimateRunner:bf,$$animateAsyncRun:cf,$browser:df,$cacheFactory:ef,$controller:ff,$document:gf,$exceptionHandler:hf,$filter:Lc,$$forceReflow:jf,$interpolate:kf,$interval:lf,$http:mf,$httpParamSerializer:nf,$httpParamSerializerJQLike:of,$httpBackend:pf,$xhrFactory:qf,$location:rf,$log:sf,$parse:tf,$rootScope:uf,$q:vf,$$q:wf,$sce:xf,$sceDelegate:yf,$sniffer:zf,$templateCache:Af,$templateRequest:Bf,$$testability:Cf,$timeout:Df,$window:Ef,$$rAF:Ff,$$jqLite:Gf,$$HashMap:Hf,$$cookieReader:If})}])}function eb(a){return a.replace(Jf,
+function(a,d,c,e){return e?c.toUpperCase():c}).replace(Kf,"Moz$1")}function Mc(a){a=a.nodeType;return 1===a||!a||9===a}function Nc(a,b){var d,c,e=b.createDocumentFragment(),f=[];if(Wb.test(a)){d=d||e.appendChild(b.createElement("div"));c=(Lf.exec(a)||["",""])[1].toLowerCase();c=ga[c]||ga._default;d.innerHTML=c[1]+a.replace(Mf,"<$1></$2>")+c[2];for(c=c[0];c--;)d=d.lastChild;f=ab(f,d.childNodes);d=e.firstChild;d.textContent=""}else f.push(b.createTextNode(a));e.textContent="";e.innerHTML="";q(f,function(a){e.appendChild(a)});
+return e}function Oc(a,b){var d=a.parentNode;d&&d.replaceChild(b,a);b.appendChild(a)}function T(a){if(a instanceof T)return a;var b;I(a)&&(a=V(a),b=!0);if(!(this instanceof T)){if(b&&"<"!=a.charAt(0))throw Xb("nosel");return new T(a)}if(b){b=F.document;var d;a=(d=Nf.exec(a))?[b.createElement(d[1])]:(d=Nc(a,b))?d.childNodes:[]}Pc(this,a)}function Yb(a){return a.cloneNode(!0)}function wb(a,b){b||fb(a);if(a.querySelectorAll)for(var d=a.querySelectorAll("*"),c=0,e=d.length;c<e;c++)fb(d[c])}function Qc(a,
+b,d,c){if(v(c))throw Xb("offargs");var e=(c=xb(a))&&c.events,f=c&&c.handle;if(f)if(b){var g=function(b){var c=e[b];v(d)&&$a(c||[],d);v(d)&&c&&0<c.length||(a.removeEventListener(b,f,!1),delete e[b])};q(b.split(" "),function(a){g(a);yb[a]&&g(yb[a])})}else for(b in e)"$destroy"!==b&&a.removeEventListener(b,f,!1),delete e[b]}function fb(a,b){var d=a.ng339,c=d&&gb[d];c&&(b?delete c.data[b]:(c.handle&&(c.events.$destroy&&c.handle({},"$destroy"),Qc(a)),delete gb[d],a.ng339=void 0))}function xb(a,b){var d=
+a.ng339,d=d&&gb[d];b&&!d&&(a.ng339=d=++Of,d=gb[d]={events:{},data:{},handle:void 0});return d}function Zb(a,b,d){if(Mc(a)){var c=v(d),e=!c&&b&&!J(b),f=!b;a=(a=xb(a,!e))&&a.data;if(c)a[b]=d;else{if(f)return a;if(e)return a&&a[b];P(a,b)}}}function zb(a,b){return a.getAttribute?-1<(" "+(a.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").indexOf(" "+b+" "):!1}function Ab(a,b){b&&a.setAttribute&&q(b.split(" "),function(b){a.setAttribute("class",V((" "+(a.getAttribute("class")||"")+" ").replace(/[\n\t]/g,
+" ").replace(" "+V(b)+" "," ")))})}function Bb(a,b){if(b&&a.setAttribute){var d=(" "+(a.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ");q(b.split(" "),function(a){a=V(a);-1===d.indexOf(" "+a+" ")&&(d+=a+" ")});a.setAttribute("class",V(d))}}function Pc(a,b){if(b)if(b.nodeType)a[a.length++]=b;else{var d=b.length;if("number"===typeof d&&b.window!==b){if(d)for(var c=0;c<d;c++)a[a.length++]=b[c]}else a[a.length++]=b}}function Rc(a,b){return Cb(a,"$"+(b||"ngController")+"Controller")}function Cb(a,
+b,d){9==a.nodeType&&(a=a.documentElement);for(b=K(b)?b:[b];a;){for(var c=0,e=b.length;c<e;c++)if(v(d=G.data(a,b[c])))return d;a=a.parentNode||11===a.nodeType&&a.host}}function Sc(a){for(wb(a,!0);a.firstChild;)a.removeChild(a.firstChild)}function Db(a,b){b||wb(a);var d=a.parentNode;d&&d.removeChild(a)}function Pf(a,b){b=b||F;if("complete"===b.document.readyState)b.setTimeout(a);else G(b).on("load",a)}function Tc(a,b){var d=Eb[b.toLowerCase()];return d&&Uc[ta(a)]&&d}function Qf(a,b){var d=function(c,
+d){c.isDefaultPrevented=function(){return c.defaultPrevented};var f=b[d||c.type],g=f?f.length:0;if(g){if(y(c.immediatePropagationStopped)){var h=c.stopImmediatePropagation;c.stopImmediatePropagation=function(){c.immediatePropagationStopped=!0;c.stopPropagation&&c.stopPropagation();h&&h.call(c)}}c.isImmediatePropagationStopped=function(){return!0===c.immediatePropagationStopped};var k=f.specialHandlerWrapper||Rf;1<g&&(f=fa(f));for(var l=0;l<g;l++)c.isImmediatePropagationStopped()||k(a,c,f[l])}};d.elem=
+a;return d}function Rf(a,b,d){d.call(a,b)}function Sf(a,b,d){var c=b.relatedTarget;c&&(c===a||Tf.call(a,c))||d.call(a,b)}function Gf(){this.$get=function(){return P(T,{hasClass:function(a,b){a.attr&&(a=a[0]);return zb(a,b)},addClass:function(a,b){a.attr&&(a=a[0]);return Bb(a,b)},removeClass:function(a,b){a.attr&&(a=a[0]);return Ab(a,b)}})}}function Ga(a,b){var d=a&&a.$$hashKey;if(d)return"function"===typeof d&&(d=a.$$hashKey()),d;d=typeof a;return d="function"==d||"object"==d&&null!==a?a.$$hashKey=
+d+":"+(b||Yd)():d+":"+a}function Sa(a,b){if(b){var d=0;this.nextUid=function(){return++d}}q(a,this.put,this)}function Vc(a){a=(Function.prototype.toString.call(a)+" ").replace(Uf,"");return a.match(Vf)||a.match(Wf)}function Xf(a){return(a=Vc(a))?"function("+(a[1]||"").replace(/[\s\r\n]+/," ")+")":"fn"}function db(a,b){function d(a){return function(b,c){if(J(b))q(b,tc(a));else return a(b,c)}}function c(a,b){Ra(a,"service");if(E(b)||K(b))b=p.instantiate(b);if(!b.$get)throw Ha("pget",a);return n[a+"Provider"]=
+b}function e(a,b){return function(){var c=z.invoke(b,this);if(y(c))throw Ha("undef",a);return c}}function f(a,b,d){return c(a,{$get:!1!==d?e(a,b):b})}function g(a){sb(y(a)||K(a),"modulesToLoad","not an array");var b=[],c;q(a,function(a){function d(a){var b,c;b=0;for(c=a.length;b<c;b++){var e=a[b],f=p.get(e[0]);f[e[1]].apply(f,e[2])}}if(!m.get(a)){m.put(a,!0);try{I(a)?(c=Vb(a),b=b.concat(g(c.requires)).concat(c._runBlocks),d(c._invokeQueue),d(c._configBlocks)):E(a)?b.push(p.invoke(a)):K(a)?b.push(p.invoke(a)):
+Qa(a,"module")}catch(e){throw K(a)&&(a=a[a.length-1]),e.message&&e.stack&&-1==e.stack.indexOf(e.message)&&(e=e.message+"\n"+e.stack),Ha("modulerr",a,e.stack||e.message||e);}}});return b}function h(a,c){function d(b,e){if(a.hasOwnProperty(b)){if(a[b]===k)throw Ha("cdep",b+" <- "+l.join(" <- "));return a[b]}try{return l.unshift(b),a[b]=k,a[b]=c(b,e)}catch(f){throw a[b]===k&&delete a[b],f;}finally{l.shift()}}function e(a,c,f){var g=[];a=db.$$annotate(a,b,f);for(var h=0,k=a.length;h<k;h++){var l=a[h];
+if("string"!==typeof l)throw Ha("itkn",l);g.push(c&&c.hasOwnProperty(l)?c[l]:d(l,f))}return g}return{invoke:function(a,b,c,d){"string"===typeof c&&(d=c,c=null);c=e(a,c,d);K(a)&&(a=a[a.length-1]);d=11>=Ba?!1:"function"===typeof a&&/^(?:class\s|constructor\()/.test(Function.prototype.toString.call(a)+" ");return d?(c.unshift(null),new (Function.prototype.bind.apply(a,c))):a.apply(b,c)},instantiate:function(a,b,c){var d=K(a)?a[a.length-1]:a;a=e(a,b,c);a.unshift(null);return new (Function.prototype.bind.apply(d,
+a))},get:d,annotate:db.$$annotate,has:function(b){return n.hasOwnProperty(b+"Provider")||a.hasOwnProperty(b)}}}b=!0===b;var k={},l=[],m=new Sa([],!0),n={$provide:{provider:d(c),factory:d(f),service:d(function(a,b){return f(a,["$injector",function(a){return a.instantiate(b)}])}),value:d(function(a,b){return f(a,ca(b),!1)}),constant:d(function(a,b){Ra(a,"constant");n[a]=b;x[a]=b}),decorator:function(a,b){var c=p.get(a+"Provider"),d=c.$get;c.$get=function(){var a=z.invoke(d,c);return z.invoke(b,null,
+{$delegate:a})}}}},p=n.$injector=h(n,function(a,b){da.isString(b)&&l.push(b);throw Ha("unpr",l.join(" <- "));}),x={},U=h(x,function(a,b){var c=p.get(a+"Provider",b);return z.invoke(c.$get,c,void 0,a)}),z=U;n.$injectorProvider={$get:ca(U)};var r=g(a),z=U.get("$injector");z.strictDi=b;q(r,function(a){a&&z.invoke(a)});return z}function Xe(){var a=!0;this.disableAutoScrolling=function(){a=!1};this.$get=["$window","$location","$rootScope",function(b,d,c){function e(a){var b=null;Array.prototype.some.call(a,
+function(a){if("a"===ta(a))return b=a,!0});return b}function f(a){if(a){a.scrollIntoView();var c;c=g.yOffset;E(c)?c=c():Rb(c)?(c=c[0],c="fixed"!==b.getComputedStyle(c).position?0:c.getBoundingClientRect().bottom):Q(c)||(c=0);c&&(a=a.getBoundingClientRect().top,b.scrollBy(0,a-c))}else b.scrollTo(0,0)}function g(a){a=I(a)?a:d.hash();var b;a?(b=h.getElementById(a))?f(b):(b=e(h.getElementsByName(a)))?f(b):"top"===a&&f(null):f(null)}var h=b.document;a&&c.$watch(function(){return d.hash()},function(a,b){a===
+b&&""===a||Pf(function(){c.$evalAsync(g)})});return g}]}function hb(a,b){if(!a&&!b)return"";if(!a)return b;if(!b)return a;K(a)&&(a=a.join(" "));K(b)&&(b=b.join(" "));return a+" "+b}function Yf(a){I(a)&&(a=a.split(" "));var b=S();q(a,function(a){a.length&&(b[a]=!0)});return b}function Ia(a){return J(a)?a:{}}function Zf(a,b,d,c){function e(a){try{a.apply(null,ya.call(arguments,1))}finally{if(U--,0===U)for(;z.length;)try{z.pop()()}catch(b){d.error(b)}}}function f(){w=null;g();h()}function g(){r=ka();
+r=y(r)?null:r;na(r,H)&&(r=H);H=r}function h(){if(u!==k.url()||D!==r)u=k.url(),D=r,q(B,function(a){a(k.url(),r)})}var k=this,l=a.location,m=a.history,n=a.setTimeout,p=a.clearTimeout,x={};k.isMock=!1;var U=0,z=[];k.$$completeOutstandingRequest=e;k.$$incOutstandingRequestCount=function(){U++};k.notifyWhenNoOutstandingRequests=function(a){0===U?a():z.push(a)};var r,D,u=l.href,t=b.find("base"),w=null,ka=c.history?function(){try{return m.state}catch(a){}}:C;g();D=r;k.url=function(b,d,e){y(e)&&(e=null);
+l!==a.location&&(l=a.location);m!==a.history&&(m=a.history);if(b){var f=D===e;if(u===b&&(!c.history||f))return k;var h=u&&Ja(u)===Ja(b);u=b;D=e;!c.history||h&&f?(h||(w=b),d?l.replace(b):h?(d=l,e=b.indexOf("#"),e=-1===e?"":b.substr(e),d.hash=e):l.href=b,l.href!==b&&(w=b)):(m[d?"replaceState":"pushState"](e,"",b),g(),D=r);w&&(w=b);return k}return w||l.href.replace(/%27/g,"'")};k.state=function(){return r};var B=[],A=!1,H=null;k.onUrlChange=function(b){if(!A){if(c.history)G(a).on("popstate",f);G(a).on("hashchange",
+f);A=!0}B.push(b);return b};k.$$applicationDestroyed=function(){G(a).off("hashchange popstate",f)};k.$$checkUrlChange=h;k.baseHref=function(){var a=t.attr("href");return a?a.replace(/^(https?\:)?\/\/[^\/]*/,""):""};k.defer=function(a,b){var c;U++;c=n(function(){delete x[c];e(a)},b||0);x[c]=!0;return c};k.defer.cancel=function(a){return x[a]?(delete x[a],p(a),e(C),!0):!1}}function df(){this.$get=["$window","$log","$sniffer","$document",function(a,b,d,c){return new Zf(a,c,b,d)}]}function ef(){this.$get=
+function(){function a(a,c){function e(a){a!=n&&(p?p==a&&(p=a.n):p=a,f(a.n,a.p),f(a,n),n=a,n.n=null)}function f(a,b){a!=b&&(a&&(a.p=b),b&&(b.n=a))}if(a in b)throw O("$cacheFactory")("iid",a);var g=0,h=P({},c,{id:a}),k=S(),l=c&&c.capacity||Number.MAX_VALUE,m=S(),n=null,p=null;return b[a]={put:function(a,b){if(!y(b)){if(l<Number.MAX_VALUE){var c=m[a]||(m[a]={key:a});e(c)}a in k||g++;k[a]=b;g>l&&this.remove(p.key);return b}},get:function(a){if(l<Number.MAX_VALUE){var b=m[a];if(!b)return;e(b)}return k[a]},
+remove:function(a){if(l<Number.MAX_VALUE){var b=m[a];if(!b)return;b==n&&(n=b.p);b==p&&(p=b.n);f(b.n,b.p);delete m[a]}a in k&&(delete k[a],g--)},removeAll:function(){k=S();g=0;m=S();n=p=null},destroy:function(){m=h=k=null;delete b[a]},info:function(){return P({},h,{size:g})}}}var b={};a.info=function(){var a={};q(b,function(b,e){a[e]=b.info()});return a};a.get=function(a){return b[a]};return a}}function Af(){this.$get=["$cacheFactory",function(a){return a("templates")}]}function Ec(a,b){function d(a,
+b,c){var d=/^\s*([@&<]|=(\*?))(\??)\s*(\w*)\s*$/,e=S();q(a,function(a,f){if(a in n)e[f]=n[a];else{var g=a.match(d);if(!g)throw ea("iscp",b,f,a,c?"controller bindings definition":"isolate scope definition");e[f]={mode:g[1][0],collection:"*"===g[2],optional:"?"===g[3],attrName:g[4]||f};g[4]&&(n[a]=e[f])}});return e}function c(a){var b=a.charAt(0);if(!b||b!==L(b))throw ea("baddir",a);if(a!==a.trim())throw ea("baddir",a);}function e(a){var b=a.require||a.controller&&a.name;!K(b)&&J(b)&&q(b,function(a,
+c){var d=a.match(l);a.substring(d[0].length)||(b[c]=d[0]+c)});return b}var f={},g=/^\s*directive\:\s*([\w\-]+)\s+(.*)$/,h=/(([\w\-]+)(?:\:([^;]+))?;?)/,k=be("ngSrc,ngSrcset,src,srcset"),l=/^(?:(\^\^?)?(\?)?(\^\^?)?)?/,m=/^(on[a-z]+|formaction)$/,n=S();this.directive=function z(b,d){Ra(b,"directive");I(b)?(c(b),sb(d,"directiveFactory"),f.hasOwnProperty(b)||(f[b]=[],a.factory(b+"Directive",["$injector","$exceptionHandler",function(a,c){var d=[];q(f[b],function(f,g){try{var h=a.invoke(f);E(h)?h={compile:ca(h)}:
+!h.compile&&h.link&&(h.compile=ca(h.link));h.priority=h.priority||0;h.index=g;h.name=h.name||b;h.require=e(h);h.restrict=h.restrict||"EA";h.$$moduleName=f.$$moduleName;d.push(h)}catch(k){c(k)}});return d}])),f[b].push(d)):q(b,tc(z));return this};this.component=function(a,b){function c(a){function e(b){return E(b)||K(b)?function(c,d){return a.invoke(b,this,{$element:c,$attrs:d})}:b}var f=b.template||b.templateUrl?b.template:"",g={controller:d,controllerAs:Wc(b.controller)||b.controllerAs||"$ctrl",
+template:e(f),templateUrl:e(b.templateUrl),transclude:b.transclude,scope:{},bindToController:b.bindings||{},restrict:"E",require:b.require};q(b,function(a,b){"$"===b.charAt(0)&&(g[b]=a)});return g}var d=b.controller||function(){};q(b,function(a,b){"$"===b.charAt(0)&&(c[b]=a,E(d)&&(d[b]=a))});c.$inject=["$injector"];return this.directive(a,c)};this.aHrefSanitizationWhitelist=function(a){return v(a)?(b.aHrefSanitizationWhitelist(a),this):b.aHrefSanitizationWhitelist()};this.imgSrcSanitizationWhitelist=
+function(a){return v(a)?(b.imgSrcSanitizationWhitelist(a),this):b.imgSrcSanitizationWhitelist()};var p=!0;this.debugInfoEnabled=function(a){return v(a)?(p=a,this):p};var x=10;this.onChangesTtl=function(a){return arguments.length?(x=a,this):x};this.$get=["$injector","$interpolate","$exceptionHandler","$templateRequest","$parse","$controller","$rootScope","$sce","$animate","$$sanitizeUri",function(a,b,c,e,n,w,ka,B,A,H){function M(){try{if(!--oa)throw Y=void 0,ea("infchng",x);ka.$apply(function(){for(var a=
+0,b=Y.length;a<b;++a)Y[a]();Y=void 0})}finally{oa++}}function Aa(a,b){if(b){var c=Object.keys(b),d,e,f;d=0;for(e=c.length;d<e;d++)f=c[d],this[f]=b[f]}else this.$attr={};this.$$element=a}function R(a,b,c){la.innerHTML="<span "+b+">";b=la.firstChild.attributes;var d=b[0];b.removeNamedItem(d.name);d.value=c;a.attributes.setNamedItem(d)}function N(a,b){try{a.addClass(b)}catch(c){}}function aa(a,b,c,d,e){a instanceof G||(a=G(a));for(var f=/\S+/,g=0,h=a.length;g<h;g++){var k=a[g];k.nodeType===Na&&k.nodeValue.match(f)&&
+Oc(k,a[g]=F.document.createElement("span"))}var l=s(a,b,a,c,d,e);aa.$$addScopeClass(a);var m=null;return function(b,c,d){sb(b,"scope");e&&e.needsNewScope&&(b=b.$parent.$new());d=d||{};var f=d.parentBoundTranscludeFn,g=d.transcludeControllers;d=d.futureParentElement;f&&f.$$boundTransclude&&(f=f.$$boundTransclude);m||(m=(d=d&&d[0])?"foreignobject"!==ta(d)&&ja.call(d).match(/SVG/)?"svg":"html":"html");d="html"!==m?G(ba(m,G("<div>").append(a).html())):c?Pa.clone.call(a):a;if(g)for(var h in g)d.data("$"+
+h+"Controller",g[h].instance);aa.$$addScopeInfo(d,b);c&&c(d,b);l&&l(b,d,d,f);return d}}function s(a,b,c,d,e,f){function g(a,c,d,e){var f,k,l,m,n,u,r;if(p)for(r=Array(c.length),m=0;m<h.length;m+=3)f=h[m],r[f]=c[f];else r=c;m=0;for(n=h.length;m<n;)k=r[h[m++]],c=h[m++],f=h[m++],c?(c.scope?(l=a.$new(),aa.$$addScopeInfo(G(k),l)):l=a,u=c.transcludeOnThisElement?va(a,c.transclude,e):!c.templateOnThisElement&&e?e:!e&&b?va(a,b):null,c(f,l,k,d,u)):f&&f(a,k.childNodes,void 0,e)}for(var h=[],k,l,m,n,p,u=0;u<
+a.length;u++){k=new Aa;l=$b(a[u],[],k,0===u?d:void 0,e);(f=l.length?Ta(l,a[u],k,b,c,null,[],[],f):null)&&f.scope&&aa.$$addScopeClass(k.$$element);k=f&&f.terminal||!(m=a[u].childNodes)||!m.length?null:s(m,f?(f.transcludeOnThisElement||!f.templateOnThisElement)&&f.transclude:b);if(f||k)h.push(u,f,k),n=!0,p=p||f;f=null}return n?g:null}function va(a,b,c){function d(e,f,g,h,k){e||(e=a.$new(!1,k),e.$$transcluded=!0);return b(e,f,{parentBoundTranscludeFn:c,transcludeControllers:g,futureParentElement:h})}
+var e=d.$$slots=S(),f;for(f in b.$$slots)e[f]=b.$$slots[f]?va(a,b.$$slots[f],c):null;return d}function $b(a,b,c,d,e){var f=c.$attr,k;switch(a.nodeType){case 1:Da(b,wa(ta(a)),"E",d,e);for(var l,m,n,p=a.attributes,u=0,r=p&&p.length;u<r;u++){var B=!1,x=!1;l=p[u];k=l.name;m=V(l.value);l=wa(k);if(n=xa.test(l))k=k.replace(Xc,"").substr(8).replace(/_(.)/g,function(a,b){return b.toUpperCase()});(l=l.match(za))&&Q(l[1])&&(B=k,x=k.substr(0,k.length-5)+"end",k=k.substr(0,k.length-6));l=wa(k.toLowerCase());f[l]=
+k;if(n||!c.hasOwnProperty(l))c[l]=m,Tc(a,l)&&(c[l]=!0);ha(a,b,m,l,n);Da(b,l,"A",d,e,B,x)}a=a.className;J(a)&&(a=a.animVal);if(I(a)&&""!==a)for(;k=h.exec(a);)l=wa(k[2]),Da(b,l,"C",d,e)&&(c[l]=V(k[3])),a=a.substr(k.index+k[0].length);break;case Na:if(11===Ba)for(;a.parentNode&&a.nextSibling&&a.nextSibling.nodeType===Na;)a.nodeValue+=a.nextSibling.nodeValue,a.parentNode.removeChild(a.nextSibling);$(b,a.nodeValue);break;case 8:try{if(k=g.exec(a.nodeValue))l=wa(k[1]),Da(b,l,"M",d,e)&&(c[l]=V(k[2]))}catch(A){}}b.sort(X);
+return b}function Yc(a,b,c){var d=[],e=0;if(b&&a.hasAttribute&&a.hasAttribute(b)){do{if(!a)throw ea("uterdir",b,c);1==a.nodeType&&(a.hasAttribute(b)&&e++,a.hasAttribute(c)&&e--);d.push(a);a=a.nextSibling}while(0<e)}else d.push(a);return G(d)}function O(a,b,c){return function(d,e,f,g,h){e=Yc(e[0],b,c);return a(d,e,f,g,h)}}function ac(a,b,c,d,e,f){var g;return a?aa(b,c,d,e,f):function(){g||(g=aa(b,c,d,e,f),b=c=f=null);return g.apply(this,arguments)}}function Ta(a,b,d,e,f,g,h,k,l){function m(a,b,c,d){if(a){c&&
+(a=O(a,c,d));a.require=t.require;a.directiveName=M;if(B===t||t.$$isolateScope)a=fa(a,{isolateScope:!0});h.push(a)}if(b){c&&(b=O(b,c,d));b.require=t.require;b.directiveName=M;if(B===t||t.$$isolateScope)b=fa(b,{isolateScope:!0});k.push(b)}}function n(a,c,e,f,g){function l(a,b,c,d){var e;Za(a)||(d=c,c=b,b=a,a=void 0);w&&(e=z);c||(c=w?D.parent():D);if(d){var f=g.$$slots[d];if(f)return f(a,b,e,c,Fb);if(y(f))throw ea("noslot",d,ua(D));}else return g(a,b,e,c,Fb)}var m,p,A,t,H,z,N,D;b===e?(f=d,D=d.$$element):
+(D=G(e),f=new Aa(D,d));H=c;B?t=c.$new(!0):u&&(H=c.$parent);g&&(N=l,N.$$boundTransclude=g,N.isSlotFilled=function(a){return!!g.$$slots[a]});r&&(z=$f(D,f,N,r,t,c,B));B&&(aa.$$addScopeInfo(D,t,!0,!(x&&(x===B||x===B.$$originalDirective))),aa.$$addScopeClass(D,!0),t.$$isolateBindings=B.$$isolateBindings,p=ga(c,f,t,t.$$isolateBindings,B),p.removeWatches&&t.$on("$destroy",p.removeWatches));for(m in z){p=r[m];A=z[m];var R=p.$$bindings.bindToController;A.bindingInfo=A.identifier&&R?ga(H,f,A.instance,R,p):
+{};var M=A();M!==A.instance&&(A.instance=M,D.data("$"+p.name+"Controller",M),A.bindingInfo.removeWatches&&A.bindingInfo.removeWatches(),A.bindingInfo=ga(H,f,A.instance,R,p))}q(r,function(a,b){var c=a.require;a.bindToController&&!K(c)&&J(c)&&P(z[b].instance,ib(b,c,D,z))});q(z,function(a){var b=a.instance;E(b.$onChanges)&&b.$onChanges(a.bindingInfo.initialChanges);E(b.$onInit)&&b.$onInit();E(b.$onDestroy)&&H.$on("$destroy",function(){b.$onDestroy()})});m=0;for(p=h.length;m<p;m++)A=h[m],ia(A,A.isolateScope?
+t:c,D,f,A.require&&ib(A.directiveName,A.require,D,z),N);var Fb=c;B&&(B.template||null===B.templateUrl)&&(Fb=t);a&&a(Fb,e.childNodes,void 0,g);for(m=k.length-1;0<=m;m--)A=k[m],ia(A,A.isolateScope?t:c,D,f,A.require&&ib(A.directiveName,A.require,D,z),N);q(z,function(a){a=a.instance;E(a.$postLink)&&a.$postLink()})}l=l||{};for(var p=-Number.MAX_VALUE,u=l.newScopeDirective,r=l.controllerDirectives,B=l.newIsolateScopeDirective,x=l.templateDirective,A=l.nonTlbTranscludeDirective,H=!1,z=!1,w=l.hasElementTranscludeDirective,
+N=d.$$element=G(b),t,M,R,ka=e,s,Ca=!1,va=!1,v,C=0,F=a.length;C<F;C++){t=a[C];var I=t.$$start,Ta=t.$$end;I&&(N=Yc(b,I,Ta));R=void 0;if(p>t.priority)break;if(v=t.scope)t.templateUrl||(J(v)?(W("new/isolated scope",B||u,t,N),B=t):W("new/isolated scope",B,t,N)),u=u||t;M=t.name;if(!Ca&&(t.replace&&(t.templateUrl||t.template)||t.transclude&&!t.$$tlb)){for(v=C+1;Ca=a[v++];)if(Ca.transclude&&!Ca.$$tlb||Ca.replace&&(Ca.templateUrl||Ca.template)){va=!0;break}Ca=!0}!t.templateUrl&&t.controller&&(v=t.controller,
+r=r||S(),W("'"+M+"' controller",r[M],t,N),r[M]=t);if(v=t.transclude)if(H=!0,t.$$tlb||(W("transclusion",A,t,N),A=t),"element"==v)w=!0,p=t.priority,R=N,N=d.$$element=G(aa.$$createComment(M,d[M])),b=N[0],ca(f,ya.call(R,0),b),R[0].$$parentNode=R[0].parentNode,ka=ac(va,R,e,p,g&&g.name,{nonTlbTranscludeDirective:A});else{var L=S();R=G(Yb(b)).contents();if(J(v)){R=[];var Q=S(),Da=S();q(v,function(a,b){var c="?"===a.charAt(0);a=c?a.substring(1):a;Q[a]=b;L[b]=null;Da[b]=c});q(N.contents(),function(a){var b=
+Q[wa(ta(a))];b?(Da[b]=!0,L[b]=L[b]||[],L[b].push(a)):R.push(a)});q(Da,function(a,b){if(!a)throw ea("reqslot",b);});for(var X in L)L[X]&&(L[X]=ac(va,L[X],e))}N.empty();ka=ac(va,R,e,void 0,void 0,{needsNewScope:t.$$isolateScope||t.$$newScope});ka.$$slots=L}if(t.template)if(z=!0,W("template",x,t,N),x=t,v=E(t.template)?t.template(N,d):t.template,v=ra(v),t.replace){g=t;R=Wb.test(v)?Zc(ba(t.templateNamespace,V(v))):[];b=R[0];if(1!=R.length||1!==b.nodeType)throw ea("tplrt",M,"");ca(f,N,b);F={$attr:{}};v=
+$b(b,[],F);var $=a.splice(C+1,a.length-(C+1));(B||u)&&$c(v,B,u);a=a.concat(v).concat($);T(d,F);F=a.length}else N.html(v);if(t.templateUrl)z=!0,W("template",x,t,N),x=t,t.replace&&(g=t),n=Z(a.splice(C,a.length-C),N,d,f,H&&ka,h,k,{controllerDirectives:r,newScopeDirective:u!==t&&u,newIsolateScopeDirective:B,templateDirective:x,nonTlbTranscludeDirective:A}),F=a.length;else if(t.compile)try{s=t.compile(N,d,ka);var Y=t.$$originalDirective||t;E(s)?m(null,bb(Y,s),I,Ta):s&&m(bb(Y,s.pre),bb(Y,s.post),I,Ta)}catch(da){c(da,
+ua(N))}t.terminal&&(n.terminal=!0,p=Math.max(p,t.priority))}n.scope=u&&!0===u.scope;n.transcludeOnThisElement=H;n.templateOnThisElement=z;n.transclude=ka;l.hasElementTranscludeDirective=w;return n}function ib(a,b,c,d){var e;if(I(b)){var f=b.match(l);b=b.substring(f[0].length);var g=f[1]||f[3],f="?"===f[2];"^^"===g?c=c.parent():e=(e=d&&d[b])&&e.instance;if(!e){var h="$"+b+"Controller";e=g?c.inheritedData(h):c.data(h)}if(!e&&!f)throw ea("ctreq",b,a);}else if(K(b))for(e=[],g=0,f=b.length;g<f;g++)e[g]=
+ib(a,b[g],c,d);else J(b)&&(e={},q(b,function(b,f){e[f]=ib(a,b,c,d)}));return e||null}function $f(a,b,c,d,e,f,g){var h=S(),k;for(k in d){var l=d[k],m={$scope:l===g||l.$$isolateScope?e:f,$element:a,$attrs:b,$transclude:c},n=l.controller;"@"==n&&(n=b[l.name]);m=w(n,m,!0,l.controllerAs);h[l.name]=m;a.data("$"+l.name+"Controller",m.instance)}return h}function $c(a,b,c){for(var d=0,e=a.length;d<e;d++)a[d]=Sb(a[d],{$$isolateScope:b,$$newScope:c})}function Da(b,e,g,h,k,l,m){if(e===k)return null;k=null;if(f.hasOwnProperty(e)){var n;
+e=a.get(e+"Directive");for(var p=0,u=e.length;p<u;p++)try{if(n=e[p],(y(h)||h>n.priority)&&-1!=n.restrict.indexOf(g)){l&&(n=Sb(n,{$$start:l,$$end:m}));if(!n.$$bindings){var r=n,B=n,A=n.name,x={isolateScope:null,bindToController:null};J(B.scope)&&(!0===B.bindToController?(x.bindToController=d(B.scope,A,!0),x.isolateScope={}):x.isolateScope=d(B.scope,A,!1));J(B.bindToController)&&(x.bindToController=d(B.bindToController,A,!0));if(J(x.bindToController)){var t=B.controller,H=B.controllerAs;if(!t)throw ea("noctrl",
+A);if(!Wc(t,H))throw ea("noident",A);}var N=r.$$bindings=x;J(N.isolateScope)&&(n.$$isolateBindings=N.isolateScope)}b.push(n);k=n}}catch(w){c(w)}}return k}function Q(b){if(f.hasOwnProperty(b))for(var c=a.get(b+"Directive"),d=0,e=c.length;d<e;d++)if(b=c[d],b.multiElement)return!0;return!1}function T(a,b){var c=b.$attr,d=a.$attr,e=a.$$element;q(a,function(d,e){"$"!=e.charAt(0)&&(b[e]&&b[e]!==d&&(d+=("style"===e?";":" ")+b[e]),a.$set(e,d,!0,c[e]))});q(b,function(b,f){"class"==f?(N(e,b),a["class"]=(a["class"]?
+a["class"]+" ":"")+b):"style"==f?(e.attr("style",e.attr("style")+";"+b),a.style=(a.style?a.style+";":"")+b):"$"==f.charAt(0)||a.hasOwnProperty(f)||(a[f]=b,d[f]=c[f])})}function Z(a,b,c,d,f,g,h,k){var l=[],m,n,p=b[0],B=a.shift(),r=Sb(B,{templateUrl:null,transclude:null,replace:null,$$originalDirective:B}),A=E(B.templateUrl)?B.templateUrl(b,c):B.templateUrl,x=B.templateNamespace;b.empty();e(A).then(function(e){var u,t;e=ra(e);if(B.replace){e=Wb.test(e)?Zc(ba(x,V(e))):[];u=e[0];if(1!=e.length||1!==u.nodeType)throw ea("tplrt",
+B.name,A);e={$attr:{}};ca(d,b,u);var H=$b(u,[],e);J(B.scope)&&$c(H,!0);a=H.concat(a);T(c,e)}else u=p,b.html(e);a.unshift(r);m=Ta(a,u,c,f,b,B,g,h,k);q(d,function(a,c){a==u&&(d[c]=b[0])});for(n=s(b[0].childNodes,f);l.length;){e=l.shift();t=l.shift();var z=l.shift(),D=l.shift(),H=b[0];if(!e.$$destroyed){if(t!==p){var w=t.className;k.hasElementTranscludeDirective&&B.replace||(H=Yb(u));ca(z,G(t),H);N(G(H),w)}t=m.transcludeOnThisElement?va(e,m.transclude,D):D;m(n,e,H,d,t)}}l=null});return function(a,b,
+c,d,e){a=e;b.$$destroyed||(l?l.push(b,c,d,a):(m.transcludeOnThisElement&&(a=va(b,m.transclude,e)),m(n,b,c,d,a)))}}function X(a,b){var c=b.priority-a.priority;return 0!==c?c:a.name!==b.name?a.name<b.name?-1:1:a.index-b.index}function W(a,b,c,d){function e(a){return a?" (module: "+a+")":""}if(b)throw ea("multidir",b.name,e(b.$$moduleName),c.name,e(c.$$moduleName),a,ua(d));}function $(a,c){var d=b(c,!0);d&&a.push({priority:0,compile:function(a){a=a.parent();var b=!!a.length;b&&aa.$$addBindingClass(a);
+return function(a,c){var e=c.parent();b||aa.$$addBindingClass(e);aa.$$addBindingInfo(e,d.expressions);a.$watch(d,function(a){c[0].nodeValue=a})}}})}function ba(a,b){a=L(a||"html");switch(a){case "svg":case "math":var c=F.document.createElement("div");c.innerHTML="<"+a+">"+b+"</"+a+">";return c.childNodes[0].childNodes;default:return b}}function da(a,b){if("srcdoc"==b)return B.HTML;var c=ta(a);if("xlinkHref"==b||"form"==c&&"action"==b||"img"!=c&&("src"==b||"ngSrc"==b))return B.RESOURCE_URL}function ha(a,
+c,d,e,f){var g=da(a,e);f=k[e]||f;var h=b(d,!0,g,f);if(h){if("multiple"===e&&"select"===ta(a))throw ea("selmulti",ua(a));c.push({priority:100,compile:function(){return{pre:function(a,c,k){c=k.$$observers||(k.$$observers=S());if(m.test(e))throw ea("nodomevents");var l=k[e];l!==d&&(h=l&&b(l,!0,g,f),d=l);h&&(k[e]=h(a),(c[e]||(c[e]=[])).$$inter=!0,(k.$$observers&&k.$$observers[e].$$scope||a).$watch(h,function(a,b){"class"===e&&a!=b?k.$updateClass(a,b):k.$set(e,a)}))}}}})}}function ca(a,b,c){var d=b[0],
+e=b.length,f=d.parentNode,g,h;if(a)for(g=0,h=a.length;g<h;g++)if(a[g]==d){a[g++]=c;h=g+e-1;for(var k=a.length;g<k;g++,h++)h<k?a[g]=a[h]:delete a[g];a.length-=e-1;a.context===d&&(a.context=c);break}f&&f.replaceChild(c,d);a=F.document.createDocumentFragment();for(g=0;g<e;g++)a.appendChild(b[g]);G.hasData(d)&&(G.data(c,G.data(d)),G(d).off("$destroy"));G.cleanData(a.querySelectorAll("*"));for(g=1;g<e;g++)delete b[g];b[0]=c;b.length=1}function fa(a,b){return P(function(){return a.apply(null,arguments)},
+a,b)}function ia(a,b,d,e,f,g){try{a(b,d,e,f,g)}catch(h){c(h,ua(d))}}function ga(a,c,d,e,f){function g(b,c,e){E(d.$onChanges)&&c!==e&&(Y||(a.$$postDigest(M),Y=[]),m||(m={},Y.push(h)),m[b]&&(e=m[b].previousValue),m[b]=new Gb(e,c))}function h(){d.$onChanges(m);m=void 0}var k=[],l={},m;q(e,function(e,h){var m=e.attrName,p=e.optional,u,B,A,x;switch(e.mode){case "@":p||sa.call(c,m)||(d[h]=c[m]=void 0);c.$observe(m,function(a){if(I(a)||Ea(a))g(h,a,d[h]),d[h]=a});c.$$observers[m].$$scope=a;u=c[m];I(u)?d[h]=
+b(u)(a):Ea(u)&&(d[h]=u);l[h]=new Gb(bc,d[h]);break;case "=":if(!sa.call(c,m)){if(p)break;c[m]=void 0}if(p&&!c[m])break;B=n(c[m]);x=B.literal?na:function(a,b){return a===b||a!==a&&b!==b};A=B.assign||function(){u=d[h]=B(a);throw ea("nonassign",c[m],m,f.name);};u=d[h]=B(a);p=function(b){x(b,d[h])||(x(b,u)?A(a,b=d[h]):d[h]=b);return u=b};p.$stateful=!0;p=e.collection?a.$watchCollection(c[m],p):a.$watch(n(c[m],p),null,B.literal);k.push(p);break;case "<":if(!sa.call(c,m)){if(p)break;c[m]=void 0}if(p&&!c[m])break;
+B=n(c[m]);var H=d[h]=B(a);l[h]=new Gb(bc,d[h]);p=a.$watch(B,function(a,b){if(b===a){if(b===H)return;b=H}g(h,a,b);d[h]=a},B.literal);k.push(p);break;case "&":B=c.hasOwnProperty(m)?n(c[m]):C;if(B===C&&p)break;d[h]=function(b){return B(a,b)}}});return{initialChanges:l,removeWatches:k.length&&function(){for(var a=0,b=k.length;a<b;++a)k[a]()}}}var ma=/^\w/,la=F.document.createElement("div"),oa=x,Y;Aa.prototype={$normalize:wa,$addClass:function(a){a&&0<a.length&&A.addClass(this.$$element,a)},$removeClass:function(a){a&&
+0<a.length&&A.removeClass(this.$$element,a)},$updateClass:function(a,b){var c=ad(a,b);c&&c.length&&A.addClass(this.$$element,c);(c=ad(b,a))&&c.length&&A.removeClass(this.$$element,c)},$set:function(a,b,d,e){var f=Tc(this.$$element[0],a),g=bd[a],h=a;f?(this.$$element.prop(a,b),e=f):g&&(this[g]=b,h=g);this[a]=b;e?this.$attr[a]=e:(e=this.$attr[a])||(this.$attr[a]=e=Bc(a,"-"));f=ta(this.$$element);if("a"===f&&("href"===a||"xlinkHref"===a)||"img"===f&&"src"===a)this[a]=b=H(b,"src"===a);else if("img"===
+f&&"srcset"===a&&v(b)){for(var f="",g=V(b),k=/(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/,k=/\s/.test(g)?k:/(,)/,g=g.split(k),k=Math.floor(g.length/2),l=0;l<k;l++)var m=2*l,f=f+H(V(g[m]),!0),f=f+(" "+V(g[m+1]));g=V(g[2*l]).split(/\s/);f+=H(V(g[0]),!0);2===g.length&&(f+=" "+V(g[1]));this[a]=b=f}!1!==d&&(null===b||y(b)?this.$$element.removeAttr(e):ma.test(e)?this.$$element.attr(e,b):R(this.$$element[0],e,b));(a=this.$$observers)&&q(a[h],function(a){try{a(b)}catch(d){c(d)}})},$observe:function(a,b){var c=this,
+d=c.$$observers||(c.$$observers=S()),e=d[a]||(d[a]=[]);e.push(b);ka.$evalAsync(function(){e.$$inter||!c.hasOwnProperty(a)||y(c[a])||b(c[a])});return function(){$a(e,b)}}};var pa=b.startSymbol(),qa=b.endSymbol(),ra="{{"==pa&&"}}"==qa?Ya:function(a){return a.replace(/\{\{/g,pa).replace(/}}/g,qa)},xa=/^ngAttr[A-Z]/,za=/^(.+)Start$/;aa.$$addBindingInfo=p?function(a,b){var c=a.data("$binding")||[];K(b)?c=c.concat(b):c.push(b);a.data("$binding",c)}:C;aa.$$addBindingClass=p?function(a){N(a,"ng-binding")}:
+C;aa.$$addScopeInfo=p?function(a,b,c,d){a.data(c?d?"$isolateScopeNoTemplate":"$isolateScope":"$scope",b)}:C;aa.$$addScopeClass=p?function(a,b){N(a,b?"ng-isolate-scope":"ng-scope")}:C;aa.$$createComment=function(a,b){var c="";p&&(c=" "+(a||"")+": ",b&&(c+=b+" "));return F.document.createComment(c)};return aa}]}function Gb(a,b){this.previousValue=a;this.currentValue=b}function wa(a){return eb(a.replace(Xc,""))}function ad(a,b){var d="",c=a.split(/\s+/),e=b.split(/\s+/),f=0;a:for(;f<c.length;f++){for(var g=
+c[f],h=0;h<e.length;h++)if(g==e[h])continue a;d+=(0<d.length?" ":"")+g}return d}function Zc(a){a=G(a);var b=a.length;if(1>=b)return a;for(;b--;)8===a[b].nodeType&&ag.call(a,b,1);return a}function Wc(a,b){if(b&&I(b))return b;if(I(a)){var d=cd.exec(a);if(d)return d[3]}}function ff(){var a={},b=!1;this.has=function(b){return a.hasOwnProperty(b)};this.register=function(b,c){Ra(b,"controller");J(b)?P(a,b):a[b]=c};this.allowGlobals=function(){b=!0};this.$get=["$injector","$window",function(d,c){function e(a,
+b,c,d){if(!a||!J(a.$scope))throw O("$controller")("noscp",d,b);a.$scope[b]=c}return function(f,g,h,k){var l,m,n;h=!0===h;k&&I(k)&&(n=k);if(I(f)){k=f.match(cd);if(!k)throw bg("ctrlfmt",f);m=k[1];n=n||k[3];f=a.hasOwnProperty(m)?a[m]:Dc(g.$scope,m,!0)||(b?Dc(c,m,!0):void 0);Qa(f,m,!0)}if(h)return h=(K(f)?f[f.length-1]:f).prototype,l=Object.create(h||null),n&&e(g,n,l,m||f.name),P(function(){var a=d.invoke(f,l,g,m);a!==l&&(J(a)||E(a))&&(l=a,n&&e(g,n,l,m||f.name));return l},{instance:l,identifier:n});l=
+d.instantiate(f,g,m);n&&e(g,n,l,m||f.name);return l}}]}function gf(){this.$get=["$window",function(a){return G(a.document)}]}function hf(){this.$get=["$log",function(a){return function(b,d){a.error.apply(a,arguments)}}]}function cc(a){return J(a)?ha(a)?a.toISOString():cb(a):a}function nf(){this.$get=function(){return function(a){if(!a)return"";var b=[];sc(a,function(a,c){null===a||y(a)||(K(a)?q(a,function(a){b.push(ia(c)+"="+ia(cc(a)))}):b.push(ia(c)+"="+ia(cc(a))))});return b.join("&")}}}function of(){this.$get=
+function(){return function(a){function b(a,e,f){null===a||y(a)||(K(a)?q(a,function(a,c){b(a,e+"["+(J(a)?c:"")+"]")}):J(a)&&!ha(a)?sc(a,function(a,c){b(a,e+(f?"":"[")+c+(f?"":"]"))}):d.push(ia(e)+"="+ia(cc(a))))}if(!a)return"";var d=[];b(a,"",!0);return d.join("&")}}}function dc(a,b){if(I(a)){var d=a.replace(cg,"").trim();if(d){var c=b("Content-Type");(c=c&&0===c.indexOf(dd))||(c=(c=d.match(dg))&&eg[c[0]].test(d));c&&(a=wc(d))}}return a}function ed(a){var b=S(),d;I(a)?q(a.split("\n"),function(a){d=
+a.indexOf(":");var e=L(V(a.substr(0,d)));a=V(a.substr(d+1));e&&(b[e]=b[e]?b[e]+", "+a:a)}):J(a)&&q(a,function(a,d){var f=L(d),g=V(a);f&&(b[f]=b[f]?b[f]+", "+g:g)});return b}function fd(a){var b;return function(d){b||(b=ed(a));return d?(d=b[L(d)],void 0===d&&(d=null),d):b}}function gd(a,b,d,c){if(E(c))return c(a,b,d);q(c,function(c){a=c(a,b,d)});return a}function mf(){var a=this.defaults={transformResponse:[dc],transformRequest:[function(a){return J(a)&&"[object File]"!==ja.call(a)&&"[object Blob]"!==
+ja.call(a)&&"[object FormData]"!==ja.call(a)?cb(a):a}],headers:{common:{Accept:"application/json, text/plain, */*"},post:fa(ec),put:fa(ec),patch:fa(ec)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",paramSerializer:"$httpParamSerializer"},b=!1;this.useApplyAsync=function(a){return v(a)?(b=!!a,this):b};var d=!0;this.useLegacyPromiseExtensions=function(a){return v(a)?(d=!!a,this):d};var c=this.interceptors=[];this.$get=["$httpBackend","$$cookieReader","$cacheFactory","$rootScope","$q","$injector",
+function(e,f,g,h,k,l){function m(b){function c(a){var b=P({},a);b.data=gd(a.data,a.headers,a.status,f.transformResponse);a=a.status;return 200<=a&&300>a?b:k.reject(b)}function e(a,b){var c,d={};q(a,function(a,e){E(a)?(c=a(b),null!=c&&(d[e]=c)):d[e]=a});return d}if(!J(b))throw O("$http")("badreq",b);if(!I(b.url))throw O("$http")("badreq",b.url);var f=P({method:"get",transformRequest:a.transformRequest,transformResponse:a.transformResponse,paramSerializer:a.paramSerializer},b);f.headers=function(b){var c=
+a.headers,d=P({},b.headers),f,g,h,c=P({},c.common,c[L(b.method)]);a:for(f in c){g=L(f);for(h in d)if(L(h)===g)continue a;d[f]=c[f]}return e(d,fa(b))}(b);f.method=ub(f.method);f.paramSerializer=I(f.paramSerializer)?l.get(f.paramSerializer):f.paramSerializer;var g=[function(b){var d=b.headers,e=gd(b.data,fd(d),void 0,b.transformRequest);y(e)&&q(d,function(a,b){"content-type"===L(b)&&delete d[b]});y(b.withCredentials)&&!y(a.withCredentials)&&(b.withCredentials=a.withCredentials);return n(b,e).then(c,
+c)},void 0],h=k.when(f);for(q(U,function(a){(a.request||a.requestError)&&g.unshift(a.request,a.requestError);(a.response||a.responseError)&&g.push(a.response,a.responseError)});g.length;){b=g.shift();var m=g.shift(),h=h.then(b,m)}d?(h.success=function(a){Qa(a,"fn");h.then(function(b){a(b.data,b.status,b.headers,f)});return h},h.error=function(a){Qa(a,"fn");h.then(null,function(b){a(b.data,b.status,b.headers,f)});return h}):(h.success=hd("success"),h.error=hd("error"));return h}function n(c,d){function g(a){if(a){var c=
+{};q(a,function(a,d){c[d]=function(c){function d(){a(c)}b?h.$applyAsync(d):h.$$phase?d():h.$apply(d)}});return c}}function l(a,c,d,e){function f(){n(c,a,d,e)}H&&(200<=a&&300>a?H.put(R,[a,c,ed(d),e]):H.remove(R));b?h.$applyAsync(f):(f(),h.$$phase||h.$apply())}function n(a,b,d,e){b=-1<=b?b:0;(200<=b&&300>b?B.resolve:B.reject)({data:a,status:b,headers:fd(d),config:c,statusText:e})}function w(a){n(a.data,a.status,fa(a.headers()),a.statusText)}function U(){var a=m.pendingRequests.indexOf(c);-1!==a&&m.pendingRequests.splice(a,
+1)}var B=k.defer(),A=B.promise,H,M,Aa=c.headers,R=p(c.url,c.paramSerializer(c.params));m.pendingRequests.push(c);A.then(U,U);!c.cache&&!a.cache||!1===c.cache||"GET"!==c.method&&"JSONP"!==c.method||(H=J(c.cache)?c.cache:J(a.cache)?a.cache:x);H&&(M=H.get(R),v(M)?M&&E(M.then)?M.then(w,w):K(M)?n(M[1],M[0],fa(M[2]),M[3]):n(M,200,{},"OK"):H.put(R,A));y(M)&&((M=id(c.url)?f()[c.xsrfCookieName||a.xsrfCookieName]:void 0)&&(Aa[c.xsrfHeaderName||a.xsrfHeaderName]=M),e(c.method,R,d,l,Aa,c.timeout,c.withCredentials,
+c.responseType,g(c.eventHandlers),g(c.uploadEventHandlers)));return A}function p(a,b){0<b.length&&(a+=(-1==a.indexOf("?")?"?":"&")+b);return a}var x=g("$http");a.paramSerializer=I(a.paramSerializer)?l.get(a.paramSerializer):a.paramSerializer;var U=[];q(c,function(a){U.unshift(I(a)?l.get(a):l.invoke(a))});m.pendingRequests=[];(function(a){q(arguments,function(a){m[a]=function(b,c){return m(P({},c||{},{method:a,url:b}))}})})("get","delete","head","jsonp");(function(a){q(arguments,function(a){m[a]=function(b,
+c,d){return m(P({},d||{},{method:a,url:b,data:c}))}})})("post","put","patch");m.defaults=a;return m}]}function qf(){this.$get=function(){return function(){return new F.XMLHttpRequest}}}function pf(){this.$get=["$browser","$window","$document","$xhrFactory",function(a,b,d,c){return fg(a,c,a.defer,b.angular.callbacks,d[0])}]}function fg(a,b,d,c,e){function f(a,b,d){var f=e.createElement("script"),m=null;f.type="text/javascript";f.src=a;f.async=!0;m=function(a){f.removeEventListener("load",m,!1);f.removeEventListener("error",
+m,!1);e.body.removeChild(f);f=null;var g=-1,x="unknown";a&&("load"!==a.type||c[b].called||(a={type:"error"}),x=a.type,g="error"===a.type?404:200);d&&d(g,x)};f.addEventListener("load",m,!1);f.addEventListener("error",m,!1);e.body.appendChild(f);return m}return function(e,h,k,l,m,n,p,x,U,z){function r(){t&&t();w&&w.abort()}function D(b,c,e,f,g){v(B)&&d.cancel(B);t=w=null;b(c,e,f,g);a.$$completeOutstandingRequest(C)}a.$$incOutstandingRequestCount();h=h||a.url();if("jsonp"==L(e)){var u="_"+(c.counter++).toString(36);
+c[u]=function(a){c[u].data=a;c[u].called=!0};var t=f(h.replace("JSON_CALLBACK","angular.callbacks."+u),u,function(a,b){D(l,a,c[u].data,"",b);c[u]=C})}else{var w=b(e,h);w.open(e,h,!0);q(m,function(a,b){v(a)&&w.setRequestHeader(b,a)});w.onload=function(){var a=w.statusText||"",b="response"in w?w.response:w.responseText,c=1223===w.status?204:w.status;0===c&&(c=b?200:"file"==pa(h).protocol?404:0);D(l,c,b,w.getAllResponseHeaders(),a)};e=function(){D(l,-1,null,null,"")};w.onerror=e;w.onabort=e;q(U,function(a,
+b){w.addEventListener(b,a)});q(z,function(a,b){w.upload.addEventListener(b,a)});p&&(w.withCredentials=!0);if(x)try{w.responseType=x}catch(ka){if("json"!==x)throw ka;}w.send(y(k)?null:k)}if(0<n)var B=d(r,n);else n&&E(n.then)&&n.then(r)}}function kf(){var a="{{",b="}}";this.startSymbol=function(b){return b?(a=b,this):a};this.endSymbol=function(a){return a?(b=a,this):b};this.$get=["$parse","$exceptionHandler","$sce",function(d,c,e){function f(a){return"\\\\\\"+a}function g(c){return c.replace(n,a).replace(p,
+b)}function h(a,b,c,d){var e;return e=a.$watch(function(a){e();return d(a)},b,c)}function k(f,k,n,p){function D(a){try{var b=a;a=n?e.getTrusted(n,b):e.valueOf(b);var d;if(p&&!v(a))d=a;else if(null==a)d="";else{switch(typeof a){case "string":break;case "number":a=""+a;break;default:a=cb(a)}d=a}return d}catch(g){c(Ka.interr(f,g))}}if(!f.length||-1===f.indexOf(a)){var u;k||(k=g(f),u=ca(k),u.exp=f,u.expressions=[],u.$$watchDelegate=h);return u}p=!!p;var t,w,q=0,B=[],A=[];u=f.length;for(var H=[],M=[];q<
+u;)if(-1!=(t=f.indexOf(a,q))&&-1!=(w=f.indexOf(b,t+l)))q!==t&&H.push(g(f.substring(q,t))),q=f.substring(t+l,w),B.push(q),A.push(d(q,D)),q=w+m,M.push(H.length),H.push("");else{q!==u&&H.push(g(f.substring(q)));break}n&&1<H.length&&Ka.throwNoconcat(f);if(!k||B.length){var Aa=function(a){for(var b=0,c=B.length;b<c;b++){if(p&&y(a[b]))return;H[M[b]]=a[b]}return H.join("")};return P(function(a){var b=0,d=B.length,e=Array(d);try{for(;b<d;b++)e[b]=A[b](a);return Aa(e)}catch(g){c(Ka.interr(f,g))}},{exp:f,expressions:B,
+$$watchDelegate:function(a,b){var c;return a.$watchGroup(A,function(d,e){var f=Aa(d);E(b)&&b.call(this,f,d!==e?c:f,a);c=f})}})}}var l=a.length,m=b.length,n=new RegExp(a.replace(/./g,f),"g"),p=new RegExp(b.replace(/./g,f),"g");k.startSymbol=function(){return a};k.endSymbol=function(){return b};return k}]}function lf(){this.$get=["$rootScope","$window","$q","$$q","$browser",function(a,b,d,c,e){function f(f,k,l,m){function n(){p?f.apply(null,x):f(r)}var p=4<arguments.length,x=p?ya.call(arguments,4):
+[],q=b.setInterval,z=b.clearInterval,r=0,D=v(m)&&!m,u=(D?c:d).defer(),t=u.promise;l=v(l)?l:0;t.$$intervalId=q(function(){D?e.defer(n):a.$evalAsync(n);u.notify(r++);0<l&&r>=l&&(u.resolve(r),z(t.$$intervalId),delete g[t.$$intervalId]);D||a.$apply()},k);g[t.$$intervalId]=u;return t}var g={};f.cancel=function(a){return a&&a.$$intervalId in g?(g[a.$$intervalId].reject("canceled"),b.clearInterval(a.$$intervalId),delete g[a.$$intervalId],!0):!1};return f}]}function fc(a){a=a.split("/");for(var b=a.length;b--;)a[b]=
+qb(a[b]);return a.join("/")}function jd(a,b){var d=pa(a);b.$$protocol=d.protocol;b.$$host=d.hostname;b.$$port=$(d.port)||gg[d.protocol]||null}function kd(a,b){var d="/"!==a.charAt(0);d&&(a="/"+a);var c=pa(a);b.$$path=decodeURIComponent(d&&"/"===c.pathname.charAt(0)?c.pathname.substring(1):c.pathname);b.$$search=zc(c.search);b.$$hash=decodeURIComponent(c.hash);b.$$path&&"/"!=b.$$path.charAt(0)&&(b.$$path="/"+b.$$path)}function la(a,b){if(0===b.lastIndexOf(a,0))return b.substr(a.length)}function Ja(a){var b=
+a.indexOf("#");return-1==b?a:a.substr(0,b)}function jb(a){return a.replace(/(#.+)|#$/,"$1")}function gc(a,b,d){this.$$html5=!0;d=d||"";jd(a,this);this.$$parse=function(a){var d=la(b,a);if(!I(d))throw Hb("ipthprfx",a,b);kd(d,this);this.$$path||(this.$$path="/");this.$$compose()};this.$$compose=function(){var a=Ub(this.$$search),d=this.$$hash?"#"+qb(this.$$hash):"";this.$$url=fc(this.$$path)+(a?"?"+a:"")+d;this.$$absUrl=b+this.$$url.substr(1)};this.$$parseLinkUrl=function(c,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),
+!0;var f,g;v(f=la(a,c))?(g=f,g=v(f=la(d,f))?b+(la("/",f)||f):a+g):v(f=la(b,c))?g=b+f:b==c+"/"&&(g=b);g&&this.$$parse(g);return!!g}}function hc(a,b,d){jd(a,this);this.$$parse=function(c){var e=la(a,c)||la(b,c),f;y(e)||"#"!==e.charAt(0)?this.$$html5?f=e:(f="",y(e)&&(a=c,this.replace())):(f=la(d,e),y(f)&&(f=e));kd(f,this);c=this.$$path;var e=a,g=/^\/[A-Z]:(\/.*)/;0===f.lastIndexOf(e,0)&&(f=f.replace(e,""));g.exec(f)||(c=(f=g.exec(c))?f[1]:c);this.$$path=c;this.$$compose()};this.$$compose=function(){var b=
+Ub(this.$$search),e=this.$$hash?"#"+qb(this.$$hash):"";this.$$url=fc(this.$$path)+(b?"?"+b:"")+e;this.$$absUrl=a+(this.$$url?d+this.$$url:"")};this.$$parseLinkUrl=function(b,d){return Ja(a)==Ja(b)?(this.$$parse(b),!0):!1}}function ld(a,b,d){this.$$html5=!0;hc.apply(this,arguments);this.$$parseLinkUrl=function(c,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;a==Ja(c)?f=c:(g=la(b,c))?f=a+d+g:b===c+"/"&&(f=b);f&&this.$$parse(f);return!!f};this.$$compose=function(){var b=Ub(this.$$search),
+e=this.$$hash?"#"+qb(this.$$hash):"";this.$$url=fc(this.$$path)+(b?"?"+b:"")+e;this.$$absUrl=a+d+this.$$url}}function Ib(a){return function(){return this[a]}}function md(a,b){return function(d){if(y(d))return this[a];this[a]=b(d);this.$$compose();return this}}function rf(){var a="",b={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(b){return v(b)?(a=b,this):a};this.html5Mode=function(a){return Ea(a)?(b.enabled=a,this):J(a)?(Ea(a.enabled)&&(b.enabled=a.enabled),Ea(a.requireBase)&&
+(b.requireBase=a.requireBase),Ea(a.rewriteLinks)&&(b.rewriteLinks=a.rewriteLinks),this):b};this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function(d,c,e,f,g){function h(a,b,d){var e=l.url(),f=l.$$state;try{c.url(a,b,d),l.$$state=c.state()}catch(g){throw l.url(e),l.$$state=f,g;}}function k(a,b){d.$broadcast("$locationChangeSuccess",l.absUrl(),a,l.$$state,b)}var l,m;m=c.baseHref();var n=c.url(),p;if(b.enabled){if(!m&&b.requireBase)throw Hb("nobase");p=n.substring(0,n.indexOf("/",
+n.indexOf("//")+2))+(m||"/");m=e.history?gc:ld}else p=Ja(n),m=hc;var x=p.substr(0,Ja(p).lastIndexOf("/")+1);l=new m(p,x,"#"+a);l.$$parseLinkUrl(n,n);l.$$state=c.state();var q=/^\s*(javascript|mailto):/i;f.on("click",function(a){if(b.rewriteLinks&&!a.ctrlKey&&!a.metaKey&&!a.shiftKey&&2!=a.which&&2!=a.button){for(var e=G(a.target);"a"!==ta(e[0]);)if(e[0]===f[0]||!(e=e.parent())[0])return;var h=e.prop("href"),k=e.attr("href")||e.attr("xlink:href");J(h)&&"[object SVGAnimatedString]"===h.toString()&&(h=
+pa(h.animVal).href);q.test(h)||!h||e.attr("target")||a.isDefaultPrevented()||!l.$$parseLinkUrl(h,k)||(a.preventDefault(),l.absUrl()!=c.url()&&(d.$apply(),g.angular["ff-684208-preventDefault"]=!0))}});jb(l.absUrl())!=jb(n)&&c.url(l.absUrl(),!0);var z=!0;c.onUrlChange(function(a,b){y(la(x,a))?g.location.href=a:(d.$evalAsync(function(){var c=l.absUrl(),e=l.$$state,f;a=jb(a);l.$$parse(a);l.$$state=b;f=d.$broadcast("$locationChangeStart",a,c,b,e).defaultPrevented;l.absUrl()===a&&(f?(l.$$parse(c),l.$$state=
+e,h(c,!1,e)):(z=!1,k(c,e)))}),d.$$phase||d.$digest())});d.$watch(function(){var a=jb(c.url()),b=jb(l.absUrl()),f=c.state(),g=l.$$replace,m=a!==b||l.$$html5&&e.history&&f!==l.$$state;if(z||m)z=!1,d.$evalAsync(function(){var b=l.absUrl(),c=d.$broadcast("$locationChangeStart",b,a,l.$$state,f).defaultPrevented;l.absUrl()===b&&(c?(l.$$parse(a),l.$$state=f):(m&&h(b,g,f===l.$$state?null:l.$$state),k(a,f)))});l.$$replace=!1});return l}]}function sf(){var a=!0,b=this;this.debugEnabled=function(b){return v(b)?
+(a=b,this):a};this.$get=["$window",function(d){function c(a){a instanceof Error&&(a.stack?a=a.message&&-1===a.stack.indexOf(a.message)?"Error: "+a.message+"\n"+a.stack:a.stack:a.sourceURL&&(a=a.message+"\n"+a.sourceURL+":"+a.line));return a}function e(a){var b=d.console||{},e=b[a]||b.log||C;a=!1;try{a=!!e.apply}catch(k){}return a?function(){var a=[];q(arguments,function(b){a.push(c(b))});return e.apply(b,a)}:function(a,b){e(a,null==b?"":b)}}return{log:e("log"),info:e("info"),warn:e("warn"),error:e("error"),
+debug:function(){var c=e("debug");return function(){a&&c.apply(b,arguments)}}()}}]}function Ua(a,b){if("__defineGetter__"===a||"__defineSetter__"===a||"__lookupGetter__"===a||"__lookupSetter__"===a||"__proto__"===a)throw ba("isecfld",b);return a}function hg(a){return a+""}function qa(a,b){if(a){if(a.constructor===a)throw ba("isecfn",b);if(a.window===a)throw ba("isecwindow",b);if(a.children&&(a.nodeName||a.prop&&a.attr&&a.find))throw ba("isecdom",b);if(a===Object)throw ba("isecobj",b);}return a}function nd(a,
+b){if(a){if(a.constructor===a)throw ba("isecfn",b);if(a===ig||a===jg||a===kg)throw ba("isecff",b);}}function Jb(a,b){if(a&&(a===(0).constructor||a===(!1).constructor||a==="".constructor||a==={}.constructor||a===[].constructor||a===Function.constructor))throw ba("isecaf",b);}function lg(a,b){return"undefined"!==typeof a?a:b}function od(a,b){return"undefined"===typeof a?b:"undefined"===typeof b?a:a+b}function Z(a,b){var d,c;switch(a.type){case s.Program:d=!0;q(a.body,function(a){Z(a.expression,b);d=
+d&&a.expression.constant});a.constant=d;break;case s.Literal:a.constant=!0;a.toWatch=[];break;case s.UnaryExpression:Z(a.argument,b);a.constant=a.argument.constant;a.toWatch=a.argument.toWatch;break;case s.BinaryExpression:Z(a.left,b);Z(a.right,b);a.constant=a.left.constant&&a.right.constant;a.toWatch=a.left.toWatch.concat(a.right.toWatch);break;case s.LogicalExpression:Z(a.left,b);Z(a.right,b);a.constant=a.left.constant&&a.right.constant;a.toWatch=a.constant?[]:[a];break;case s.ConditionalExpression:Z(a.test,
+b);Z(a.alternate,b);Z(a.consequent,b);a.constant=a.test.constant&&a.alternate.constant&&a.consequent.constant;a.toWatch=a.constant?[]:[a];break;case s.Identifier:a.constant=!1;a.toWatch=[a];break;case s.MemberExpression:Z(a.object,b);a.computed&&Z(a.property,b);a.constant=a.object.constant&&(!a.computed||a.property.constant);a.toWatch=[a];break;case s.CallExpression:d=a.filter?!b(a.callee.name).$stateful:!1;c=[];q(a.arguments,function(a){Z(a,b);d=d&&a.constant;a.constant||c.push.apply(c,a.toWatch)});
+a.constant=d;a.toWatch=a.filter&&!b(a.callee.name).$stateful?c:[a];break;case s.AssignmentExpression:Z(a.left,b);Z(a.right,b);a.constant=a.left.constant&&a.right.constant;a.toWatch=[a];break;case s.ArrayExpression:d=!0;c=[];q(a.elements,function(a){Z(a,b);d=d&&a.constant;a.constant||c.push.apply(c,a.toWatch)});a.constant=d;a.toWatch=c;break;case s.ObjectExpression:d=!0;c=[];q(a.properties,function(a){Z(a.value,b);d=d&&a.value.constant&&!a.computed;a.value.constant||c.push.apply(c,a.value.toWatch)});
+a.constant=d;a.toWatch=c;break;case s.ThisExpression:a.constant=!1;a.toWatch=[];break;case s.LocalsExpression:a.constant=!1,a.toWatch=[]}}function pd(a){if(1==a.length){a=a[0].expression;var b=a.toWatch;return 1!==b.length?b:b[0]!==a?b:void 0}}function qd(a){return a.type===s.Identifier||a.type===s.MemberExpression}function rd(a){if(1===a.body.length&&qd(a.body[0].expression))return{type:s.AssignmentExpression,left:a.body[0].expression,right:{type:s.NGValueParameter},operator:"="}}function sd(a){return 0===
+a.body.length||1===a.body.length&&(a.body[0].expression.type===s.Literal||a.body[0].expression.type===s.ArrayExpression||a.body[0].expression.type===s.ObjectExpression)}function td(a,b){this.astBuilder=a;this.$filter=b}function ud(a,b){this.astBuilder=a;this.$filter=b}function Kb(a){return"constructor"==a}function ic(a){return E(a.valueOf)?a.valueOf():mg.call(a)}function tf(){var a=S(),b=S(),d={"true":!0,"false":!1,"null":null,undefined:void 0},c,e;this.addLiteral=function(a,b){d[a]=b};this.setIdentifierFns=
+function(a,b){c=a;e=b;return this};this.$get=["$filter",function(f){function g(c,d,e){var g,k,A;e=e||D;switch(typeof c){case "string":A=c=c.trim();var H=e?b:a;g=H[A];if(!g){":"===c.charAt(0)&&":"===c.charAt(1)&&(k=!0,c=c.substring(2));g=e?r:z;var q=new jc(g);g=(new kc(q,f,g)).parse(c);g.constant?g.$$watchDelegate=p:k?g.$$watchDelegate=g.literal?n:m:g.inputs&&(g.$$watchDelegate=l);e&&(g=h(g));H[A]=g}return x(g,d);case "function":return x(c,d);default:return x(C,d)}}function h(a){function b(c,d,e,f){var g=
+D;D=!0;try{return a(c,d,e,f)}finally{D=g}}if(!a)return a;b.$$watchDelegate=a.$$watchDelegate;b.assign=h(a.assign);b.constant=a.constant;b.literal=a.literal;for(var c=0;a.inputs&&c<a.inputs.length;++c)a.inputs[c]=h(a.inputs[c]);b.inputs=a.inputs;return b}function k(a,b){return null==a||null==b?a===b:"object"===typeof a&&(a=ic(a),"object"===typeof a)?!1:a===b||a!==a&&b!==b}function l(a,b,c,d,e){var f=d.inputs,g;if(1===f.length){var h=k,f=f[0];return a.$watch(function(a){var b=f(a);k(b,h)||(g=d(a,void 0,
+void 0,[b]),h=b&&ic(b));return g},b,c,e)}for(var l=[],m=[],n=0,p=f.length;n<p;n++)l[n]=k,m[n]=null;return a.$watch(function(a){for(var b=!1,c=0,e=f.length;c<e;c++){var h=f[c](a);if(b||(b=!k(h,l[c])))m[c]=h,l[c]=h&&ic(h)}b&&(g=d(a,void 0,void 0,m));return g},b,c,e)}function m(a,b,c,d){var e,f;return e=a.$watch(function(a){return d(a)},function(a,c,d){f=a;E(b)&&b.apply(this,arguments);v(a)&&d.$$postDigest(function(){v(f)&&e()})},c)}function n(a,b,c,d){function e(a){var b=!0;q(a,function(a){v(a)||(b=
+!1)});return b}var f,g;return f=a.$watch(function(a){return d(a)},function(a,c,d){g=a;E(b)&&b.call(this,a,c,d);e(a)&&d.$$postDigest(function(){e(g)&&f()})},c)}function p(a,b,c,d){var e;return e=a.$watch(function(a){e();return d(a)},b,c)}function x(a,b){if(!b)return a;var c=a.$$watchDelegate,d=!1,c=c!==n&&c!==m?function(c,e,f,g){f=d&&g?g[0]:a(c,e,f,g);return b(f,c,e)}:function(c,d,e,f){e=a(c,d,e,f);c=b(e,c,d);return v(e)?c:e};a.$$watchDelegate&&a.$$watchDelegate!==l?c.$$watchDelegate=a.$$watchDelegate:
+b.$stateful||(c.$$watchDelegate=l,d=!a.inputs,c.inputs=a.inputs?a.inputs:[a]);return c}var U=Fa().noUnsafeEval,z={csp:U,expensiveChecks:!1,literals:oa(d),isIdentifierStart:E(c)&&c,isIdentifierContinue:E(e)&&e},r={csp:U,expensiveChecks:!0,literals:oa(d),isIdentifierStart:E(c)&&c,isIdentifierContinue:E(e)&&e},D=!1;g.$$runningExpensiveChecks=function(){return D};return g}]}function vf(){this.$get=["$rootScope","$exceptionHandler",function(a,b){return vd(function(b){a.$evalAsync(b)},b)}]}function wf(){this.$get=
+["$browser","$exceptionHandler",function(a,b){return vd(function(b){a.defer(b)},b)}]}function vd(a,b){function d(){this.$$state={status:0}}function c(a,b){return function(c){b.call(a,c)}}function e(c){!c.processScheduled&&c.pending&&(c.processScheduled=!0,a(function(){var a,d,e;e=c.pending;c.processScheduled=!1;c.pending=void 0;for(var f=0,g=e.length;f<g;++f){d=e[f][0];a=e[f][c.status];try{E(a)?d.resolve(a(c.value)):1===c.status?d.resolve(c.value):d.reject(c.value)}catch(h){d.reject(h),b(h)}}}))}
+function f(){this.promise=new d}var g=O("$q",TypeError);P(d.prototype,{then:function(a,b,c){if(y(a)&&y(b)&&y(c))return this;var d=new f;this.$$state.pending=this.$$state.pending||[];this.$$state.pending.push([d,a,b,c]);0<this.$$state.status&&e(this.$$state);return d.promise},"catch":function(a){return this.then(null,a)},"finally":function(a,b){return this.then(function(b){return k(b,!0,a)},function(b){return k(b,!1,a)},b)}});P(f.prototype,{resolve:function(a){this.promise.$$state.status||(a===this.promise?
+this.$$reject(g("qcycle",a)):this.$$resolve(a))},$$resolve:function(a){function d(a){k||(k=!0,h.$$resolve(a))}function f(a){k||(k=!0,h.$$reject(a))}var g,h=this,k=!1;try{if(J(a)||E(a))g=a&&a.then;E(g)?(this.promise.$$state.status=-1,g.call(a,d,f,c(this,this.notify))):(this.promise.$$state.value=a,this.promise.$$state.status=1,e(this.promise.$$state))}catch(l){f(l),b(l)}},reject:function(a){this.promise.$$state.status||this.$$reject(a)},$$reject:function(a){this.promise.$$state.value=a;this.promise.$$state.status=
+2;e(this.promise.$$state)},notify:function(c){var d=this.promise.$$state.pending;0>=this.promise.$$state.status&&d&&d.length&&a(function(){for(var a,e,f=0,g=d.length;f<g;f++){e=d[f][0];a=d[f][3];try{e.notify(E(a)?a(c):c)}catch(h){b(h)}}})}});var h=function(a,b){var c=new f;b?c.resolve(a):c.reject(a);return c.promise},k=function(a,b,c){var d=null;try{E(c)&&(d=c())}catch(e){return h(e,!1)}return d&&E(d.then)?d.then(function(){return h(a,b)},function(a){return h(a,!1)}):h(a,b)},l=function(a,b,c,d){var e=
+new f;e.resolve(a);return e.promise.then(b,c,d)},m=function(a){if(!E(a))throw g("norslvr",a);var b=new f;a(function(a){b.resolve(a)},function(a){b.reject(a)});return b.promise};m.prototype=d.prototype;m.defer=function(){var a=new f;a.resolve=c(a,a.resolve);a.reject=c(a,a.reject);a.notify=c(a,a.notify);return a};m.reject=function(a){var b=new f;b.reject(a);return b.promise};m.when=l;m.resolve=l;m.all=function(a){var b=new f,c=0,d=K(a)?[]:{};q(a,function(a,e){c++;l(a).then(function(a){d.hasOwnProperty(e)||
+(d[e]=a,--c||b.resolve(d))},function(a){d.hasOwnProperty(e)||b.reject(a)})});0===c&&b.resolve(d);return b.promise};return m}function Ff(){this.$get=["$window","$timeout",function(a,b){var d=a.requestAnimationFrame||a.webkitRequestAnimationFrame,c=a.cancelAnimationFrame||a.webkitCancelAnimationFrame||a.webkitCancelRequestAnimationFrame,e=!!d,f=e?function(a){var b=d(a);return function(){c(b)}}:function(a){var c=b(a,16.66,!1);return function(){b.cancel(c)}};f.supported=e;return f}]}function uf(){function a(a){function b(){this.$$watchers=
+this.$$nextSibling=this.$$childHead=this.$$childTail=null;this.$$listeners={};this.$$listenerCount={};this.$$watchersCount=0;this.$id=++pb;this.$$ChildScope=null}b.prototype=a;return b}var b=10,d=O("$rootScope"),c=null,e=null;this.digestTtl=function(a){arguments.length&&(b=a);return b};this.$get=["$exceptionHandler","$parse","$browser",function(f,g,h){function k(a){a.currentScope.$$destroyed=!0}function l(a){9===Ba&&(a.$$childHead&&l(a.$$childHead),a.$$nextSibling&&l(a.$$nextSibling));a.$parent=a.$$nextSibling=
+a.$$prevSibling=a.$$childHead=a.$$childTail=a.$root=a.$$watchers=null}function m(){this.$id=++pb;this.$$phase=this.$parent=this.$$watchers=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=null;this.$root=this;this.$$destroyed=!1;this.$$listeners={};this.$$listenerCount={};this.$$watchersCount=0;this.$$isolateBindings=null}function n(a){if(D.$$phase)throw d("inprog",D.$$phase);D.$$phase=a}function p(a,b){do a.$$watchersCount+=b;while(a=a.$parent)}function x(a,b,c){do a.$$listenerCount[c]-=
+b,0===a.$$listenerCount[c]&&delete a.$$listenerCount[c];while(a=a.$parent)}function s(){}function z(){for(;w.length;)try{w.shift()()}catch(a){f(a)}e=null}function r(){null===e&&(e=h.defer(function(){D.$apply(z)}))}m.prototype={constructor:m,$new:function(b,c){var d;c=c||this;b?(d=new m,d.$root=this.$root):(this.$$ChildScope||(this.$$ChildScope=a(this)),d=new this.$$ChildScope);d.$parent=c;d.$$prevSibling=c.$$childTail;c.$$childHead?(c.$$childTail.$$nextSibling=d,c.$$childTail=d):c.$$childHead=c.$$childTail=
+d;(b||c!=this)&&d.$on("$destroy",k);return d},$watch:function(a,b,d,e){var f=g(a);if(f.$$watchDelegate)return f.$$watchDelegate(this,b,d,f,a);var h=this,k=h.$$watchers,l={fn:b,last:s,get:f,exp:e||a,eq:!!d};c=null;E(b)||(l.fn=C);k||(k=h.$$watchers=[]);k.unshift(l);p(this,1);return function(){0<=$a(k,l)&&p(h,-1);c=null}},$watchGroup:function(a,b){function c(){h=!1;k?(k=!1,b(e,e,g)):b(e,d,g)}var d=Array(a.length),e=Array(a.length),f=[],g=this,h=!1,k=!0;if(!a.length){var l=!0;g.$evalAsync(function(){l&&
+b(e,e,g)});return function(){l=!1}}if(1===a.length)return this.$watch(a[0],function(a,c,f){e[0]=a;d[0]=c;b(e,a===c?e:d,f)});q(a,function(a,b){var k=g.$watch(a,function(a,f){e[b]=a;d[b]=f;h||(h=!0,g.$evalAsync(c))});f.push(k)});return function(){for(;f.length;)f.shift()()}},$watchCollection:function(a,b){function c(a){e=a;var b,d,g,h;if(!y(e)){if(J(e))if(xa(e))for(f!==n&&(f=n,u=f.length=0,l++),a=e.length,u!==a&&(l++,f.length=u=a),b=0;b<a;b++)h=f[b],g=e[b],d=h!==h&&g!==g,d||h===g||(l++,f[b]=g);else{f!==
+p&&(f=p={},u=0,l++);a=0;for(b in e)sa.call(e,b)&&(a++,g=e[b],h=f[b],b in f?(d=h!==h&&g!==g,d||h===g||(l++,f[b]=g)):(u++,f[b]=g,l++));if(u>a)for(b in l++,f)sa.call(e,b)||(u--,delete f[b])}else f!==e&&(f=e,l++);return l}}c.$stateful=!0;var d=this,e,f,h,k=1<b.length,l=0,m=g(a,c),n=[],p={},r=!0,u=0;return this.$watch(m,function(){r?(r=!1,b(e,e,d)):b(e,h,d);if(k)if(J(e))if(xa(e)){h=Array(e.length);for(var a=0;a<e.length;a++)h[a]=e[a]}else for(a in h={},e)sa.call(e,a)&&(h[a]=e[a]);else h=e})},$digest:function(){var a,
+g,k,l,m,p,r,x,q=b,w,y=[],C,F;n("$digest");h.$$checkUrlChange();this===D&&null!==e&&(h.defer.cancel(e),z());c=null;do{x=!1;w=this;for(p=0;p<u.length;p++){try{F=u[p],F.scope.$eval(F.expression,F.locals)}catch(G){f(G)}c=null}u.length=0;a:do{if(p=w.$$watchers)for(r=p.length;r--;)try{if(a=p[r])if(m=a.get,(g=m(w))!==(k=a.last)&&!(a.eq?na(g,k):"number"===typeof g&&"number"===typeof k&&isNaN(g)&&isNaN(k)))x=!0,c=a,a.last=a.eq?oa(g,null):g,l=a.fn,l(g,k===s?g:k,w),5>q&&(C=4-q,y[C]||(y[C]=[]),y[C].push({msg:E(a.exp)?
+"fn: "+(a.exp.name||a.exp.toString()):a.exp,newVal:g,oldVal:k}));else if(a===c){x=!1;break a}}catch(I){f(I)}if(!(p=w.$$watchersCount&&w.$$childHead||w!==this&&w.$$nextSibling))for(;w!==this&&!(p=w.$$nextSibling);)w=w.$parent}while(w=p);if((x||u.length)&&!q--)throw D.$$phase=null,d("infdig",b,y);}while(x||u.length);for(D.$$phase=null;v<t.length;)try{t[v++]()}catch(J){f(J)}t.length=v=0},$destroy:function(){if(!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy");this.$$destroyed=!0;this===
+D&&h.$$applicationDestroyed();p(this,-this.$$watchersCount);for(var b in this.$$listenerCount)x(this,this.$$listenerCount[b],b);a&&a.$$childHead==this&&(a.$$childHead=this.$$nextSibling);a&&a.$$childTail==this&&(a.$$childTail=this.$$prevSibling);this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling);this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling);this.$destroy=this.$digest=this.$apply=this.$evalAsync=this.$applyAsync=C;this.$on=this.$watch=this.$watchGroup=
+function(){return C};this.$$listeners={};this.$$nextSibling=null;l(this)}},$eval:function(a,b){return g(a)(this,b)},$evalAsync:function(a,b){D.$$phase||u.length||h.defer(function(){u.length&&D.$digest()});u.push({scope:this,expression:g(a),locals:b})},$$postDigest:function(a){t.push(a)},$apply:function(a){try{n("$apply");try{return this.$eval(a)}finally{D.$$phase=null}}catch(b){f(b)}finally{try{D.$digest()}catch(c){throw f(c),c;}}},$applyAsync:function(a){function b(){c.$eval(a)}var c=this;a&&w.push(b);
+a=g(a);r()},$on:function(a,b){var c=this.$$listeners[a];c||(this.$$listeners[a]=c=[]);c.push(b);var d=this;do d.$$listenerCount[a]||(d.$$listenerCount[a]=0),d.$$listenerCount[a]++;while(d=d.$parent);var e=this;return function(){var d=c.indexOf(b);-1!==d&&(c[d]=null,x(e,1,a))}},$emit:function(a,b){var c=[],d,e=this,g=!1,h={name:a,targetScope:e,stopPropagation:function(){g=!0},preventDefault:function(){h.defaultPrevented=!0},defaultPrevented:!1},k=ab([h],arguments,1),l,m;do{d=e.$$listeners[a]||c;h.currentScope=
+e;l=0;for(m=d.length;l<m;l++)if(d[l])try{d[l].apply(null,k)}catch(n){f(n)}else d.splice(l,1),l--,m--;if(g)return h.currentScope=null,h;e=e.$parent}while(e);h.currentScope=null;return h},$broadcast:function(a,b){var c=this,d=this,e={name:a,targetScope:this,preventDefault:function(){e.defaultPrevented=!0},defaultPrevented:!1};if(!this.$$listenerCount[a])return e;for(var g=ab([e],arguments,1),h,k;c=d;){e.currentScope=c;d=c.$$listeners[a]||[];h=0;for(k=d.length;h<k;h++)if(d[h])try{d[h].apply(null,g)}catch(l){f(l)}else d.splice(h,
+1),h--,k--;if(!(d=c.$$listenerCount[a]&&c.$$childHead||c!==this&&c.$$nextSibling))for(;c!==this&&!(d=c.$$nextSibling);)c=c.$parent}e.currentScope=null;return e}};var D=new m,u=D.$$asyncQueue=[],t=D.$$postDigestQueue=[],w=D.$$applyAsyncQueue=[],v=0;return D}]}function ne(){var a=/^\s*(https?|ftp|mailto|tel|file):/,b=/^\s*((https?|ftp|file|blob):|data:image\/)/;this.aHrefSanitizationWhitelist=function(b){return v(b)?(a=b,this):a};this.imgSrcSanitizationWhitelist=function(a){return v(a)?(b=a,this):b};
+this.$get=function(){return function(d,c){var e=c?b:a,f;f=pa(d).href;return""===f||f.match(e)?d:"unsafe:"+f}}}function ng(a){if("self"===a)return a;if(I(a)){if(-1<a.indexOf("***"))throw ra("iwcard",a);a=wd(a).replace("\\*\\*",".*").replace("\\*","[^:/.?&;]*");return new RegExp("^"+a+"$")}if(Xa(a))return new RegExp("^"+a.source+"$");throw ra("imatcher");}function xd(a){var b=[];v(a)&&q(a,function(a){b.push(ng(a))});return b}function yf(){this.SCE_CONTEXTS=ma;var a=["self"],b=[];this.resourceUrlWhitelist=
+function(b){arguments.length&&(a=xd(b));return a};this.resourceUrlBlacklist=function(a){arguments.length&&(b=xd(a));return b};this.$get=["$injector",function(d){function c(a,b){return"self"===a?id(b):!!a.exec(b.href)}function e(a){var b=function(a){this.$$unwrapTrustedValue=function(){return a}};a&&(b.prototype=new a);b.prototype.valueOf=function(){return this.$$unwrapTrustedValue()};b.prototype.toString=function(){return this.$$unwrapTrustedValue().toString()};return b}var f=function(a){throw ra("unsafe");
+};d.has("$sanitize")&&(f=d.get("$sanitize"));var g=e(),h={};h[ma.HTML]=e(g);h[ma.CSS]=e(g);h[ma.URL]=e(g);h[ma.JS]=e(g);h[ma.RESOURCE_URL]=e(h[ma.URL]);return{trustAs:function(a,b){var c=h.hasOwnProperty(a)?h[a]:null;if(!c)throw ra("icontext",a,b);if(null===b||y(b)||""===b)return b;if("string"!==typeof b)throw ra("itype",a);return new c(b)},getTrusted:function(d,e){if(null===e||y(e)||""===e)return e;var g=h.hasOwnProperty(d)?h[d]:null;if(g&&e instanceof g)return e.$$unwrapTrustedValue();if(d===ma.RESOURCE_URL){var g=
+pa(e.toString()),n,p,x=!1;n=0;for(p=a.length;n<p;n++)if(c(a[n],g)){x=!0;break}if(x)for(n=0,p=b.length;n<p;n++)if(c(b[n],g)){x=!1;break}if(x)return e;throw ra("insecurl",e.toString());}if(d===ma.HTML)return f(e);throw ra("unsafe");},valueOf:function(a){return a instanceof g?a.$$unwrapTrustedValue():a}}}]}function xf(){var a=!0;this.enabled=function(b){arguments.length&&(a=!!b);return a};this.$get=["$parse","$sceDelegate",function(b,d){if(a&&8>Ba)throw ra("iequirks");var c=fa(ma);c.isEnabled=function(){return a};
+c.trustAs=d.trustAs;c.getTrusted=d.getTrusted;c.valueOf=d.valueOf;a||(c.trustAs=c.getTrusted=function(a,b){return b},c.valueOf=Ya);c.parseAs=function(a,d){var e=b(d);return e.literal&&e.constant?e:b(d,function(b){return c.getTrusted(a,b)})};var e=c.parseAs,f=c.getTrusted,g=c.trustAs;q(ma,function(a,b){var d=L(b);c[eb("parse_as_"+d)]=function(b){return e(a,b)};c[eb("get_trusted_"+d)]=function(b){return f(a,b)};c[eb("trust_as_"+d)]=function(b){return g(a,b)}});return c}]}function zf(){this.$get=["$window",
+"$document",function(a,b){var d={},c=!(a.chrome&&a.chrome.app&&a.chrome.app.runtime)&&a.history&&a.history.pushState,e=$((/android (\d+)/.exec(L((a.navigator||{}).userAgent))||[])[1]),f=/Boxee/i.test((a.navigator||{}).userAgent),g=b[0]||{},h,k=/^(Moz|webkit|ms)(?=[A-Z])/,l=g.body&&g.body.style,m=!1,n=!1;if(l){for(var p in l)if(m=k.exec(p)){h=m[0];h=h[0].toUpperCase()+h.substr(1);break}h||(h="WebkitOpacity"in l&&"webkit");m=!!("transition"in l||h+"Transition"in l);n=!!("animation"in l||h+"Animation"in
+l);!e||m&&n||(m=I(l.webkitTransition),n=I(l.webkitAnimation))}return{history:!(!c||4>e||f),hasEvent:function(a){if("input"===a&&11>=Ba)return!1;if(y(d[a])){var b=g.createElement("div");d[a]="on"+a in b}return d[a]},csp:Fa(),vendorPrefix:h,transitions:m,animations:n,android:e}}]}function Bf(){var a;this.httpOptions=function(b){return b?(a=b,this):a};this.$get=["$templateCache","$http","$q","$sce",function(b,d,c,e){function f(g,h){f.totalPendingRequests++;if(!I(g)||y(b.get(g)))g=e.getTrustedResourceUrl(g);
+var k=d.defaults&&d.defaults.transformResponse;K(k)?k=k.filter(function(a){return a!==dc}):k===dc&&(k=null);return d.get(g,P({cache:b,transformResponse:k},a))["finally"](function(){f.totalPendingRequests--}).then(function(a){b.put(g,a.data);return a.data},function(a){if(!h)throw og("tpload",g,a.status,a.statusText);return c.reject(a)})}f.totalPendingRequests=0;return f}]}function Cf(){this.$get=["$rootScope","$browser","$location",function(a,b,d){return{findBindings:function(a,b,d){a=a.getElementsByClassName("ng-binding");
+var g=[];q(a,function(a){var c=da.element(a).data("$binding");c&&q(c,function(c){d?(new RegExp("(^|\\s)"+wd(b)+"(\\s|\\||$)")).test(c)&&g.push(a):-1!=c.indexOf(b)&&g.push(a)})});return g},findModels:function(a,b,d){for(var g=["ng-","data-ng-","ng\\:"],h=0;h<g.length;++h){var k=a.querySelectorAll("["+g[h]+"model"+(d?"=":"*=")+'"'+b+'"]');if(k.length)return k}},getLocation:function(){return d.url()},setLocation:function(b){b!==d.url()&&(d.url(b),a.$digest())},whenStable:function(a){b.notifyWhenNoOutstandingRequests(a)}}}]}
+function Df(){this.$get=["$rootScope","$browser","$q","$$q","$exceptionHandler",function(a,b,d,c,e){function f(f,k,l){E(f)||(l=k,k=f,f=C);var m=ya.call(arguments,3),n=v(l)&&!l,p=(n?c:d).defer(),x=p.promise,q;q=b.defer(function(){try{p.resolve(f.apply(null,m))}catch(b){p.reject(b),e(b)}finally{delete g[x.$$timeoutId]}n||a.$apply()},k);x.$$timeoutId=q;g[q]=p;return x}var g={};f.cancel=function(a){return a&&a.$$timeoutId in g?(g[a.$$timeoutId].reject("canceled"),delete g[a.$$timeoutId],b.defer.cancel(a.$$timeoutId)):
+!1};return f}]}function pa(a){Ba&&(X.setAttribute("href",a),a=X.href);X.setAttribute("href",a);return{href:X.href,protocol:X.protocol?X.protocol.replace(/:$/,""):"",host:X.host,search:X.search?X.search.replace(/^\?/,""):"",hash:X.hash?X.hash.replace(/^#/,""):"",hostname:X.hostname,port:X.port,pathname:"/"===X.pathname.charAt(0)?X.pathname:"/"+X.pathname}}function id(a){a=I(a)?pa(a):a;return a.protocol===yd.protocol&&a.host===yd.host}function Ef(){this.$get=ca(F)}function zd(a){function b(a){try{return decodeURIComponent(a)}catch(b){return a}}
+var d=a[0]||{},c={},e="";return function(){var a,g,h,k,l;a=d.cookie||"";if(a!==e)for(e=a,a=e.split("; "),c={},h=0;h<a.length;h++)g=a[h],k=g.indexOf("="),0<k&&(l=b(g.substring(0,k)),y(c[l])&&(c[l]=b(g.substring(k+1))));return c}}function If(){this.$get=zd}function Lc(a){function b(d,c){if(J(d)){var e={};q(d,function(a,c){e[c]=b(c,a)});return e}return a.factory(d+"Filter",c)}this.register=b;this.$get=["$injector",function(a){return function(b){return a.get(b+"Filter")}}];b("currency",Ad);b("date",Bd);
+b("filter",pg);b("json",qg);b("limitTo",rg);b("lowercase",sg);b("number",Cd);b("orderBy",Dd);b("uppercase",tg)}function pg(){return function(a,b,d){if(!xa(a)){if(null==a)return a;throw O("filter")("notarray",a);}var c;switch(lc(b)){case "function":break;case "boolean":case "null":case "number":case "string":c=!0;case "object":b=ug(b,d,c);break;default:return a}return Array.prototype.filter.call(a,b)}}function ug(a,b,d){var c=J(a)&&"$"in a;!0===b?b=na:E(b)||(b=function(a,b){if(y(a))return!1;if(null===
+a||null===b)return a===b;if(J(b)||J(a)&&!uc(a))return!1;a=L(""+a);b=L(""+b);return-1!==a.indexOf(b)});return function(e){return c&&!J(e)?La(e,a.$,b,!1):La(e,a,b,d)}}function La(a,b,d,c,e){var f=lc(a),g=lc(b);if("string"===g&&"!"===b.charAt(0))return!La(a,b.substring(1),d,c);if(K(a))return a.some(function(a){return La(a,b,d,c)});switch(f){case "object":var h;if(c){for(h in a)if("$"!==h.charAt(0)&&La(a[h],b,d,!0))return!0;return e?!1:La(a,b,d,!1)}if("object"===g){for(h in b)if(e=b[h],!E(e)&&!y(e)&&
+(f="$"===h,!La(f?a:a[h],e,d,f,f)))return!1;return!0}return d(a,b);case "function":return!1;default:return d(a,b)}}function lc(a){return null===a?"null":typeof a}function Ad(a){var b=a.NUMBER_FORMATS;return function(a,c,e){y(c)&&(c=b.CURRENCY_SYM);y(e)&&(e=b.PATTERNS[1].maxFrac);return null==a?a:Ed(a,b.PATTERNS[1],b.GROUP_SEP,b.DECIMAL_SEP,e).replace(/\u00A4/g,c)}}function Cd(a){var b=a.NUMBER_FORMATS;return function(a,c){return null==a?a:Ed(a,b.PATTERNS[0],b.GROUP_SEP,b.DECIMAL_SEP,c)}}function vg(a){var b=
+0,d,c,e,f,g;-1<(c=a.indexOf(Fd))&&(a=a.replace(Fd,""));0<(e=a.search(/e/i))?(0>c&&(c=e),c+=+a.slice(e+1),a=a.substring(0,e)):0>c&&(c=a.length);for(e=0;a.charAt(e)==mc;e++);if(e==(g=a.length))d=[0],c=1;else{for(g--;a.charAt(g)==mc;)g--;c-=e;d=[];for(f=0;e<=g;e++,f++)d[f]=+a.charAt(e)}c>Gd&&(d=d.splice(0,Gd-1),b=c-1,c=1);return{d:d,e:b,i:c}}function wg(a,b,d,c){var e=a.d,f=e.length-a.i;b=y(b)?Math.min(Math.max(d,f),c):+b;d=b+a.i;c=e[d];if(0<d){e.splice(Math.max(a.i,d));for(var g=d;g<e.length;g++)e[g]=
+0}else for(f=Math.max(0,f),a.i=1,e.length=Math.max(1,d=b+1),e[0]=0,g=1;g<d;g++)e[g]=0;if(5<=c)if(0>d-1){for(c=0;c>d;c--)e.unshift(0),a.i++;e.unshift(1);a.i++}else e[d-1]++;for(;f<Math.max(0,b);f++)e.push(0);if(b=e.reduceRight(function(a,b,c,d){b+=a;d[c]=b%10;return Math.floor(b/10)},0))e.unshift(b),a.i++}function Ed(a,b,d,c,e){if(!I(a)&&!Q(a)||isNaN(a))return"";var f=!isFinite(a),g=!1,h=Math.abs(a)+"",k="";if(f)k="\u221e";else{g=vg(h);wg(g,e,b.minFrac,b.maxFrac);k=g.d;h=g.i;e=g.e;f=[];for(g=k.reduce(function(a,
+b){return a&&!b},!0);0>h;)k.unshift(0),h++;0<h?f=k.splice(h,k.length):(f=k,k=[0]);h=[];for(k.length>=b.lgSize&&h.unshift(k.splice(-b.lgSize,k.length).join(""));k.length>b.gSize;)h.unshift(k.splice(-b.gSize,k.length).join(""));k.length&&h.unshift(k.join(""));k=h.join(d);f.length&&(k+=c+f.join(""));e&&(k+="e+"+e)}return 0>a&&!g?b.negPre+k+b.negSuf:b.posPre+k+b.posSuf}function Lb(a,b,d,c){var e="";if(0>a||c&&0>=a)c?a=-a+1:(a=-a,e="-");for(a=""+a;a.length<b;)a=mc+a;d&&(a=a.substr(a.length-b));return e+
+a}function W(a,b,d,c,e){d=d||0;return function(f){f=f["get"+a]();if(0<d||f>-d)f+=d;0===f&&-12==d&&(f=12);return Lb(f,b,c,e)}}function kb(a,b,d){return function(c,e){var f=c["get"+a](),g=ub((d?"STANDALONE":"")+(b?"SHORT":"")+a);return e[g][f]}}function Hd(a){var b=(new Date(a,0,1)).getDay();return new Date(a,0,(4>=b?5:12)-b)}function Id(a){return function(b){var d=Hd(b.getFullYear());b=+new Date(b.getFullYear(),b.getMonth(),b.getDate()+(4-b.getDay()))-+d;b=1+Math.round(b/6048E5);return Lb(b,a)}}function nc(a,
+b){return 0>=a.getFullYear()?b.ERAS[0]:b.ERAS[1]}function Bd(a){function b(a){var b;if(b=a.match(d)){a=new Date(0);var f=0,g=0,h=b[8]?a.setUTCFullYear:a.setFullYear,k=b[8]?a.setUTCHours:a.setHours;b[9]&&(f=$(b[9]+b[10]),g=$(b[9]+b[11]));h.call(a,$(b[1]),$(b[2])-1,$(b[3]));f=$(b[4]||0)-f;g=$(b[5]||0)-g;h=$(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));k.call(a,f,g,h,b)}return a}var d=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(c,
+d,f){var g="",h=[],k,l;d=d||"mediumDate";d=a.DATETIME_FORMATS[d]||d;I(c)&&(c=xg.test(c)?$(c):b(c));Q(c)&&(c=new Date(c));if(!ha(c)||!isFinite(c.getTime()))return c;for(;d;)(l=yg.exec(d))?(h=ab(h,l,1),d=h.pop()):(h.push(d),d=null);var m=c.getTimezoneOffset();f&&(m=xc(f,m),c=Tb(c,f,!0));q(h,function(b){k=zg[b];g+=k?k(c,a.DATETIME_FORMATS,m):"''"===b?"'":b.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return g}}function qg(){return function(a,b){y(b)&&(b=2);return cb(a,b)}}function rg(){return function(a,
+b,d){b=Infinity===Math.abs(Number(b))?Number(b):$(b);if(isNaN(b))return a;Q(a)&&(a=a.toString());if(!K(a)&&!I(a))return a;d=!d||isNaN(d)?0:$(d);d=0>d?Math.max(0,a.length+d):d;return 0<=b?a.slice(d,d+b):0===d?a.slice(b,a.length):a.slice(Math.max(0,d+b),d)}}function Dd(a){function b(b,d){d=d?-1:1;return b.map(function(b){var c=1,h=Ya;if(E(b))h=b;else if(I(b)){if("+"==b.charAt(0)||"-"==b.charAt(0))c="-"==b.charAt(0)?-1:1,b=b.substring(1);if(""!==b&&(h=a(b),h.constant))var k=h(),h=function(a){return a[k]}}return{get:h,
+descending:c*d}})}function d(a){switch(typeof a){case "number":case "boolean":case "string":return!0;default:return!1}}return function(a,e,f){if(null==a)return a;if(!xa(a))throw O("orderBy")("notarray",a);K(e)||(e=[e]);0===e.length&&(e=["+"]);var g=b(e,f);g.push({get:function(){return{}},descending:f?-1:1});a=Array.prototype.map.call(a,function(a,b){return{value:a,predicateValues:g.map(function(c){var e=c.get(a);c=typeof e;if(null===e)c="string",e="null";else if("string"===c)e=e.toLowerCase();else if("object"===
+c)a:{if("function"===typeof e.valueOf&&(e=e.valueOf(),d(e)))break a;if(uc(e)&&(e=e.toString(),d(e)))break a;e=b}return{value:e,type:c}})}});a.sort(function(a,b){for(var c=0,d=0,e=g.length;d<e;++d){var c=a.predicateValues[d],f=b.predicateValues[d],x=0;c.type===f.type?c.value!==f.value&&(x=c.value<f.value?-1:1):x=c.type<f.type?-1:1;if(c=x*g[d].descending)break}return c});return a=a.map(function(a){return a.value})}}function Ma(a){E(a)&&(a={link:a});a.restrict=a.restrict||"AC";return ca(a)}function Jd(a,
+b,d,c,e){var f=this,g=[];f.$error={};f.$$success={};f.$pending=void 0;f.$name=e(b.name||b.ngForm||"")(d);f.$dirty=!1;f.$pristine=!0;f.$valid=!0;f.$invalid=!1;f.$submitted=!1;f.$$parentForm=Mb;f.$rollbackViewValue=function(){q(g,function(a){a.$rollbackViewValue()})};f.$commitViewValue=function(){q(g,function(a){a.$commitViewValue()})};f.$addControl=function(a){Ra(a.$name,"input");g.push(a);a.$name&&(f[a.$name]=a);a.$$parentForm=f};f.$$renameControl=function(a,b){var c=a.$name;f[c]===a&&delete f[c];
+f[b]=a;a.$name=b};f.$removeControl=function(a){a.$name&&f[a.$name]===a&&delete f[a.$name];q(f.$pending,function(b,c){f.$setValidity(c,null,a)});q(f.$error,function(b,c){f.$setValidity(c,null,a)});q(f.$$success,function(b,c){f.$setValidity(c,null,a)});$a(g,a);a.$$parentForm=Mb};Kd({ctrl:this,$element:a,set:function(a,b,c){var d=a[b];d?-1===d.indexOf(c)&&d.push(c):a[b]=[c]},unset:function(a,b,c){var d=a[b];d&&($a(d,c),0===d.length&&delete a[b])},$animate:c});f.$setDirty=function(){c.removeClass(a,Va);
+c.addClass(a,Nb);f.$dirty=!0;f.$pristine=!1;f.$$parentForm.$setDirty()};f.$setPristine=function(){c.setClass(a,Va,Nb+" ng-submitted");f.$dirty=!1;f.$pristine=!0;f.$submitted=!1;q(g,function(a){a.$setPristine()})};f.$setUntouched=function(){q(g,function(a){a.$setUntouched()})};f.$setSubmitted=function(){c.addClass(a,"ng-submitted");f.$submitted=!0;f.$$parentForm.$setSubmitted()}}function oc(a){a.$formatters.push(function(b){return a.$isEmpty(b)?b:b.toString()})}function lb(a,b,d,c,e,f){var g=L(b[0].type);
+if(!e.android){var h=!1;b.on("compositionstart",function(){h=!0});b.on("compositionend",function(){h=!1;l()})}var k,l=function(a){k&&(f.defer.cancel(k),k=null);if(!h){var e=b.val();a=a&&a.type;"password"===g||d.ngTrim&&"false"===d.ngTrim||(e=V(e));(c.$viewValue!==e||""===e&&c.$$hasNativeValidators)&&c.$setViewValue(e,a)}};if(e.hasEvent("input"))b.on("input",l);else{var m=function(a,b,c){k||(k=f.defer(function(){k=null;b&&b.value===c||l(a)}))};b.on("keydown",function(a){var b=a.keyCode;91===b||15<
+b&&19>b||37<=b&&40>=b||m(a,this,this.value)});if(e.hasEvent("paste"))b.on("paste cut",m)}b.on("change",l);if(Ld[g]&&c.$$hasNativeValidators&&g===d.type)b.on("keydown wheel mousedown",function(a){if(!k){var b=this.validity,c=b.badInput,d=b.typeMismatch;k=f.defer(function(){k=null;b.badInput===c&&b.typeMismatch===d||l(a)})}});c.$render=function(){var a=c.$isEmpty(c.$viewValue)?"":c.$viewValue;b.val()!==a&&b.val(a)}}function Ob(a,b){return function(d,c){var e,f;if(ha(d))return d;if(I(d)){'"'==d.charAt(0)&&
+'"'==d.charAt(d.length-1)&&(d=d.substring(1,d.length-1));if(Ag.test(d))return new Date(d);a.lastIndex=0;if(e=a.exec(d))return e.shift(),f=c?{yyyy:c.getFullYear(),MM:c.getMonth()+1,dd:c.getDate(),HH:c.getHours(),mm:c.getMinutes(),ss:c.getSeconds(),sss:c.getMilliseconds()/1E3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0},q(e,function(a,c){c<b.length&&(f[b[c]]=+a)}),new Date(f.yyyy,f.MM-1,f.dd,f.HH,f.mm,f.ss||0,1E3*f.sss||0)}return NaN}}function mb(a,b,d,c){return function(e,f,g,h,k,l,m){function n(a){return a&&
+!(a.getTime&&a.getTime()!==a.getTime())}function p(a){return v(a)&&!ha(a)?d(a)||void 0:a}Md(e,f,g,h);lb(e,f,g,h,k,l);var q=h&&h.$options&&h.$options.t

<TRUNCATED>