File "jquery.dataTables.min.js"

Full Path: /var/www/bvnghean.vn/save_bvnghean.vn/wp-content/plugins/wpDataTables_v1.6.1/assets/js/jquery-datatables/jquery.dataTables.min.js
File size: 127.98 KB
MIME-type: text/plain
Charset: utf-8

!function (t, e, n) {
    !function (t) {
        "use strict";
        "function" == typeof define && define.amd ? define("datatables", ["jquery"], t) : "object" == typeof exports ? module.exports = t(require("jquery")) : jQuery && !jQuery.fn.dataTable && t(jQuery)
    }(function (a) {
        "use strict";
        function r(t) {
            var e, n, o = "a aa ai ao as b fn i m o s ", i = {};
            a.each(t, function (a) {
                e = a.match(/^([^A-Z]+?)([A-Z])/), e && -1 !== o.indexOf(e[1] + " ") && (n = a.replace(e[0], e[2].toLowerCase()), i[n] = a, "o" === e[1] && r(t[a]))
            }), t._hungarianMap = i
        }

        function o(t, e, i) {
            t._hungarianMap || r(t);
            var s;
            a.each(e, function (r) {
                s = t._hungarianMap[r], s === n || !i && e[s] !== n || ("o" === s.charAt(0) ? (e[s] || (e[s] = {}), a.extend(!0, e[s], e[r]), o(t[s], e[s], i)) : e[s] = e[r])
            })
        }

        function i(t) {
            var e = qe.defaults.oLanguage, n = t.sZeroRecords;
            !t.sEmptyTable && n && "No data available in table" === e.sEmptyTable && Ne(t, t, "sZeroRecords", "sEmptyTable"), !t.sLoadingRecords && n && "Loading..." === e.sLoadingRecords && Ne(t, t, "sZeroRecords", "sLoadingRecords"), t.sInfoThousands && (t.sThousands = t.sInfoThousands);
            var a = t.sDecimal;
            a && Xe(a)
        }

        function s(t) {
            vn(t, "ordering", "bSort"), vn(t, "orderMulti", "bSortMulti"), vn(t, "orderClasses", "bSortClasses"), vn(t, "orderCellsTop", "bSortCellsTop"), vn(t, "order", "aaSorting"), vn(t, "orderFixed", "aaSortingFixed"), vn(t, "paging", "bPaginate"), vn(t, "pagingType", "sPaginationType"), vn(t, "pageLength", "iDisplayLength"), vn(t, "searching", "bFilter"), "boolean" == typeof t.sScrollX && (t.sScrollX = t.sScrollX ? "100%" : "");
            var e = t.aoSearchCols;
            if (e)for (var n = 0, a = e.length; a > n; n++)e[n] && o(qe.models.oSearch, e[n])
        }

        function l(t) {
            vn(t, "orderable", "bSortable"), vn(t, "orderData", "aDataSort"), vn(t, "orderSequence", "asSorting"), vn(t, "orderDataType", "sortDataType");
            var e = t.aDataSort;
            e && !a.isArray(e) && (t.aDataSort = [e])
        }

        function u(t) {
            if (!qe.__browser) {
                var e = {};
                qe.__browser = e;
                var n = a("<div/>").css({
                    position: "fixed",
                    top: 0,
                    left: 0,
                    height: 1,
                    width: 1,
                    overflow: "hidden"
                }).append(a("<div/>").css({
                    position: "absolute",
                    top: 1,
                    left: 1,
                    width: 100,
                    overflow: "scroll"
                }).append(a("<div/>").css({
                    width: "100%",
                    height: 10
                }))).appendTo("body"), r = n.children(), o = r.children();
                e.barWidth = r[0].offsetWidth - r[0].clientWidth, e.bScrollOversize = 100 === o[0].offsetWidth && 100 !== r[0].clientWidth, e.bScrollbarLeft = 1 !== Math.round(o.offset().left), e.bBounding = n[0].getBoundingClientRect().width ? !0 : !1, n.remove()
            }
            a.extend(t.oBrowser, qe.__browser), t.oScroll.iBarWidth = qe.__browser.barWidth
        }

        function c(t, e, a, r, o, i) {
            var s, l = r, u = !1;
            for (a !== n && (s = a, u = !0); l !== o;)t.hasOwnProperty(l) && (s = u ? e(s, t[l], l, t) : t[l], u = !0, l += i);
            return s
        }

        function f(t, n) {
            var r = qe.defaults.column, o = t.aoColumns.length, i = a.extend({}, qe.models.oColumn, r, {
                nTh: n ? n : e.createElement("th"),
                sTitle: r.sTitle ? r.sTitle : n ? n.innerHTML : "",
                aDataSort: r.aDataSort ? r.aDataSort : [o],
                mData: r.mData ? r.mData : o,
                idx: o
            });
            t.aoColumns.push(i);
            var s = t.aoPreSearchCols;
            s[o] = a.extend({}, qe.models.oSearch, s[o]), d(t, o, a(n).data())
        }

        function d(t, e, r) {
            var i = t.aoColumns[e], s = t.oClasses, u = a(i.nTh);
            if (!i.sWidthOrig) {
                i.sWidthOrig = u.attr("width") || null;
                var c = (u.attr("style") || "").match(/width:\s*(\d+[pxem%]+)/);
                c && (i.sWidthOrig = c[1])
            }
            r !== n && null !== r && (l(r), o(qe.defaults.column, r), r.mDataProp === n || r.mData || (r.mData = r.mDataProp), r.sType && (i._sManualType = r.sType), r.className && !r.sClass && (r.sClass = r.className), a.extend(i, r), Ne(i, r, "sWidth", "sWidthOrig"), r.iDataSort !== n && (i.aDataSort = [r.iDataSort]), Ne(i, r, "aDataSort"));
            var f = i.mData, d = I(f), h = i.mRender ? I(i.mRender) : null, p = function (t) {
                return "string" == typeof t && -1 !== t.indexOf("@")
            };
            i._bAttrSrc = a.isPlainObject(f) && (p(f.sort) || p(f.type) || p(f.filter)), i.fnGetData = function (t, e, a) {
                var r = d(t, e, n, a);
                return h && e ? h(r, e, t, a) : r
            }, i.fnSetData = function (t, e, n) {
                return A(f)(t, e, n)
            }, "number" != typeof f && (t._rowReadObject = !0), t.oFeatures.bSort || (i.bSortable = !1, u.addClass(s.sSortableNone));
            var g = -1 !== a.inArray("asc", i.asSorting), b = -1 !== a.inArray("desc", i.asSorting);
            i.bSortable && (g || b) ? g && !b ? (i.sSortingClass = s.sSortableAsc, i.sSortingClassJUI = s.sSortJUIAscAllowed) : !g && b ? (i.sSortingClass = s.sSortableDesc, i.sSortingClassJUI = s.sSortJUIDescAllowed) : (i.sSortingClass = s.sSortable, i.sSortingClassJUI = s.sSortJUI) : (i.sSortingClass = s.sSortableNone, i.sSortingClassJUI = "")
        }

        function h(t) {
            if (t.oFeatures.bAutoWidth !== !1) {
                var e = t.aoColumns;
                Se(t);
                for (var n = 0, a = e.length; a > n; n++)e[n].nTh.style.width = e[n].sWidth
            }
            var r = t.oScroll;
            ("" !== r.sY || "" !== r.sX) && be(t), We(t, null, "column-sizing", [t])
        }

        function p(t, e) {
            var n = v(t, "bVisible");
            return "number" == typeof n[e] ? n[e] : null
        }

        function g(t, e) {
            var n = v(t, "bVisible"), r = a.inArray(e, n);
            return -1 !== r ? r : null
        }

        function b(t) {
            return v(t, "bVisible").length
        }

        function v(t, e) {
            var n = [];
            return a.map(t.aoColumns, function (t, a) {
                t[e] && n.push(a)
            }), n
        }

        function S(t) {
            var e, a, r, o, i, s, l, u, c, f = t.aoColumns, d = t.aoData, h = qe.ext.type.detect;
            for (e = 0, a = f.length; a > e; e++)if (l = f[e], c = [], !l.sType && l._sManualType)l.sType = l._sManualType; else if (!l.sType) {
                for (r = 0, o = h.length; o > r; r++) {
                    for (i = 0, s = d.length; s > i && (c[i] === n && (c[i] = T(t, i, e, "type")), u = h[r](c[i], t), u || r === h.length - 1) && "html" !== u; i++);
                    if (u) {
                        l.sType = u;
                        break
                    }
                }
                l.sType || (l.sType = "string")
            }
        }

        function m(t, e, r, o) {
            var i, s, l, u, c, d, h, p = t.aoColumns;
            if (e)for (i = e.length - 1; i >= 0; i--) {
                h = e[i];
                var g = h.targets !== n ? h.targets : h.aTargets;
                for (a.isArray(g) || (g = [g]), l = 0, u = g.length; u > l; l++)if ("number" == typeof g[l] && g[l] >= 0) {
                    for (; p.length <= g[l];)f(t);
                    o(g[l], h)
                } else if ("number" == typeof g[l] && g[l] < 0)o(p.length + g[l], h); else if ("string" == typeof g[l])for (c = 0, d = p.length; d > c; c++)("_all" == g[l] || a(p[c].nTh).hasClass(g[l])) && o(c, h)
            }
            if (r)for (i = 0, s = r.length; s > i; i++)o(i, r[i])
        }

        function D(t, e, r, o) {
            var i = t.aoData.length, s = a.extend(!0, {}, qe.models.oRow, {src: r ? "dom" : "data", idx: i});
            s._aData = e, t.aoData.push(s);
            for (var l = t.aoColumns, u = 0, c = l.length; c > u; u++)l[u].sType = null;
            t.aiDisplayMaster.push(i);
            var f = t.rowIdFn(e);
            return f !== n && (t.aIds[f] = s), (r || !t.oFeatures.bDeferRender) && H(t, i, r, o), i
        }

        function y(t, e) {
            var n;
            return e instanceof a || (e = a(e)), e.map(function (e, a) {
                return n = j(t, a), D(t, n.data, a, n.cells)
            })
        }

        function _(t, e) {
            return e._DT_RowIndex !== n ? e._DT_RowIndex : null
        }

        function C(t, e, n) {
            return a.inArray(n, t.aoData[e].anCells)
        }

        function T(t, e, a, r) {
            var o = t.iDraw, i = t.aoColumns[a], s = t.aoData[e]._aData, l = i.sDefaultContent, u = i.fnGetData(s, r, {
                settings: t,
                row: e,
                col: a
            });
            if (u === n)return t.iDrawError != o && null === l && (He(t, 0, "Requested unknown parameter " + ("function" == typeof i.mData ? "{function}" : "'" + i.mData + "'") + " for row " + e, 4), t.iDrawError = o), l;
            if (u !== s && null !== u || null === l) {
                if ("function" == typeof u)return u.call(s)
            } else u = l;
            return null === u && "display" == r ? "" : u
        }

        function w(t, e, n, a) {
            var r = t.aoColumns[n], o = t.aoData[e]._aData;
            r.fnSetData(o, a, {settings: t, row: e, col: n})
        }

        function x(t) {
            return a.map(t.match(/(\\.|[^\.])+/g) || [""], function (t) {
                return t.replace(/\\./g, ".")
            })
        }

        function I(t) {
            if (a.isPlainObject(t)) {
                var e = {};
                return a.each(t, function (t, n) {
                    n && (e[t] = I(n))
                }), function (t, a, r, o) {
                    var i = e[a] || e._;
                    return i !== n ? i(t, a, r, o) : t
                }
            }
            if (null === t)return function (t) {
                return t
            };
            if ("function" == typeof t)return function (e, n, a, r) {
                return t(e, n, a, r)
            };
            if ("string" != typeof t || -1 === t.indexOf(".") && -1 === t.indexOf("[") && -1 === t.indexOf("("))return function (e) {
                return e[t]
            };
            var r = function (t, e, o) {
                var i, s, l, u;
                if ("" !== o)for (var c = x(o), f = 0, d = c.length; d > f; f++) {
                    if (i = c[f].match(Sn), s = c[f].match(mn), i) {
                        if (c[f] = c[f].replace(Sn, ""), "" !== c[f] && (t = t[c[f]]), l = [], c.splice(0, f + 1), u = c.join("."), a.isArray(t))for (var h = 0, p = t.length; p > h; h++)l.push(r(t[h], e, u));
                        var g = i[0].substring(1, i[0].length - 1);
                        t = "" === g ? l : l.join(g);
                        break
                    }
                    if (s)c[f] = c[f].replace(mn, ""), t = t[c[f]](); else {
                        if (null === t || t[c[f]] === n)return n;
                        t = t[c[f]]
                    }
                }
                return t
            };
            return function (e, n) {
                return r(e, n, t)
            }
        }

        function A(t) {
            if (a.isPlainObject(t))return A(t._);
            if (null === t)return function () {
            };
            if ("function" == typeof t)return function (e, n, a) {
                t(e, "set", n, a)
            };
            if ("string" != typeof t || -1 === t.indexOf(".") && -1 === t.indexOf("[") && -1 === t.indexOf("("))return function (e, n) {
                e[t] = n
            };
            var e = function (t, r, o) {
                for (var i, s, l, u, c, f = x(o), d = f[f.length - 1], h = 0, p = f.length - 1; p > h; h++) {
                    if (s = f[h].match(Sn), l = f[h].match(mn), s) {
                        if (f[h] = f[h].replace(Sn, ""), t[f[h]] = [], i = f.slice(), i.splice(0, h + 1), c = i.join("."), a.isArray(r))for (var g = 0, b = r.length; b > g; g++)u = {}, e(u, r[g], c), t[f[h]].push(u); else t[f[h]] = r;
                        return
                    }
                    l && (f[h] = f[h].replace(mn, ""), t = t[f[h]](r)), (null === t[f[h]] || t[f[h]] === n) && (t[f[h]] = {}), t = t[f[h]]
                }
                d.match(mn) ? t = t[d.replace(mn, "")](r) : t[d.replace(Sn, "")] = r
            };
            return function (n, a) {
                return e(n, a, t)
            }
        }

        function F(t) {
            return fn(t.aoData, "_aData")
        }

        function L(t) {
            t.aoData.length = 0, t.aiDisplayMaster.length = 0, t.aiDisplay.length = 0, t.aIds = {}
        }

        function P(t, e, a) {
            for (var r = -1, o = 0, i = t.length; i > o; o++)t[o] == e ? r = o : t[o] > e && t[o]--;
            -1 != r && a === n && t.splice(r, 1)
        }

        function R(t, e, a, r) {
            var o, i, s = t.aoData[e], l = function (n, a) {
                for (; n.childNodes.length;)n.removeChild(n.firstChild);
                n.innerHTML = T(t, e, a, "display")
            };
            if ("dom" !== a && (a && "auto" !== a || "dom" !== s.src)) {
                var u = s.anCells;
                if (u)if (r !== n)l(u[r], r); else for (o = 0, i = u.length; i > o; o++)l(u[o], o)
            } else s._aData = j(t, s, r, r === n ? n : s._aData).data;
            s._aSortData = null, s._aFilterData = null;
            var c = t.aoColumns;
            if (r !== n)c[r].sType = null; else {
                for (o = 0, i = c.length; i > o; o++)c[o].sType = null;
                N(t, s)
            }
        }

        function j(t, e, r, o) {
            var i, s, l, u = [], c = e.firstChild, f = 0, d = t.aoColumns, h = t._rowReadObject;
            o = o !== n ? o : h ? {} : [];
            var p = function (t, e) {
                if ("string" == typeof t) {
                    var n = t.indexOf("@");
                    if (-1 !== n) {
                        var a = t.substring(n + 1), r = A(t);
                        r(o, e.getAttribute(a))
                    }
                }
            }, g = function (t) {
                if (r === n || r === f)if (s = d[f], l = a.trim(t.innerHTML), s && s._bAttrSrc) {
                    var e = A(s.mData._);
                    e(o, l), p(s.mData.sort, t), p(s.mData.type, t), p(s.mData.filter, t)
                } else h ? (s._setter || (s._setter = A(s.mData)), s._setter(o, l)) : o[f] = l;
                f++
            };
            if (c)for (; c;)i = c.nodeName.toUpperCase(), ("TD" == i || "TH" == i) && (g(c), u.push(c)), c = c.nextSibling; else {
                u = e.anCells;
                for (var b = 0, v = u.length; v > b; b++)g(u[b])
            }
            var S = c ? e : e.nTr;
            if (S) {
                var m = S.getAttribute("id");
                m && A(t.rowId)(o, m)
            }
            return {data: o, cells: u}
        }

        function H(t, n, a, r) {
            var o, i, s, l, u, c = t.aoData[n], f = c._aData, d = [];
            if (null === c.nTr) {
                for (o = a || e.createElement("tr"), c.nTr = o, c.anCells = d, o._DT_RowIndex = n, N(t, c), l = 0, u = t.aoColumns.length; u > l; l++)s = t.aoColumns[l], i = a ? r[l] : e.createElement(s.sCellType), d.push(i), (!a || s.mRender || s.mData !== l) && (i.innerHTML = T(t, n, l, "display")), s.sClass && (i.className += " " + s.sClass), s.bVisible && !a ? o.appendChild(i) : !s.bVisible && a && i.parentNode.removeChild(i), s.fnCreatedCell && s.fnCreatedCell.call(t.oInstance, i, T(t, n, l), f, n, l);
                We(t, "aoRowCreatedCallback", null, [o, f, n])
            }
            c.nTr.setAttribute("role", "row")
        }

        function N(t, e) {
            var n = e.nTr, r = e._aData;
            if (n) {
                var o = t.rowIdFn(r);
                if (o && (n.id = o), r.DT_RowClass) {
                    var i = r.DT_RowClass.split(" ");
                    e.__rowc = e.__rowc ? bn(e.__rowc.concat(i)) : i, a(n).removeClass(e.__rowc.join(" ")).addClass(r.DT_RowClass)
                }
                r.DT_RowAttr && a(n).attr(r.DT_RowAttr), r.DT_RowData && a(n).data(r.DT_RowData)
            }
        }

        function O(t) {
            var e, n, r, o, i, s = t.nTHead, l = t.nTFoot, u = 0 === a("th, td", s).length, c = t.oClasses, f = t.aoColumns;
            for (u && (o = a("<tr/>").appendTo(s)), e = 0, n = f.length; n > e; e++)i = f[e], r = a(i.nTh).addClass(i.sClass), u && r.appendTo(o), t.oFeatures.bSort && (r.addClass(i.sSortingClass), i.bSortable !== !1 && (r.attr("tabindex", t.iTabIndex).attr("aria-controls", t.sTableId), Ae(t, i.nTh, e))), i.sTitle != r[0].innerHTML && r.html(i.sTitle), Ee(t, "header")(t, r, i, c);
            if (u && E(t.aoHeader, s), a(s).find(">tr").attr("role", "row"), a(s).find(">tr>th, >tr>td").addClass(c.sHeaderTH), a(l).find(">tr>th, >tr>td").addClass(c.sFooterTH), null !== l) {
                var d = t.aoFooter[0];
                for (e = 0, n = d.length; n > e; e++)i = f[e], i.nTf = d[e].cell, i.sClass && a(i.nTf).addClass(i.sClass)
            }
        }

        function k(t, e, r) {
            var o, i, s, l, u, c, f, d, h, p = [], g = [], b = t.aoColumns.length;
            if (e) {
                for (r === n && (r = !1), o = 0, i = e.length; i > o; o++) {
                    for (p[o] = e[o].slice(), p[o].nTr = e[o].nTr, s = b - 1; s >= 0; s--)t.aoColumns[s].bVisible || r || p[o].splice(s, 1);
                    g.push([])
                }
                for (o = 0, i = p.length; i > o; o++) {
                    if (f = p[o].nTr)for (; c = f.firstChild;)f.removeChild(c);
                    for (s = 0, l = p[o].length; l > s; s++)if (d = 1, h = 1, g[o][s] === n) {
                        for (f.appendChild(p[o][s].cell), g[o][s] = 1; p[o + d] !== n && p[o][s].cell == p[o + d][s].cell;)g[o + d][s] = 1, d++;
                        for (; p[o][s + h] !== n && p[o][s].cell == p[o][s + h].cell;) {
                            for (u = 0; d > u; u++)g[o + u][s + h] = 1;
                            h++
                        }
                        a(p[o][s].cell).attr("rowspan", d).attr("colspan", h)
                    }
                }
            }
        }

        function M(t) {
            var e = We(t, "aoPreDrawCallback", "preDraw", [t]);
            if (-1 !== a.inArray(!1, e))return void pe(t, !1);
            var r = [], o = 0, i = t.asStripeClasses, s = i.length, l = (t.aoOpenRows.length, t.oLanguage), u = t.iInitDisplayStart, c = "ssp" == Be(t), f = t.aiDisplay;
            t.bDrawing = !0, u !== n && -1 !== u && (t._iDisplayStart = c ? u : u >= t.fnRecordsDisplay() ? 0 : u, t.iInitDisplayStart = -1);
            var d = t._iDisplayStart, h = t.fnDisplayEnd();
            if (t.bDeferLoading)t.bDeferLoading = !1, t.iDraw++, pe(t, !1); else if (c) {
                if (!t.bDestroying && !X(t))return
            } else t.iDraw++;
            if (0 !== f.length)for (var p = c ? 0 : d, g = c ? t.aoData.length : h, v = p; g > v; v++) {
                var S = f[v], m = t.aoData[S];
                null === m.nTr && H(t, S);
                var D = m.nTr;
                if (0 !== s) {
                    var y = i[o % s];
                    m._sRowStripe != y && (a(D).removeClass(m._sRowStripe).addClass(y), m._sRowStripe = y)
                }
                We(t, "aoRowCallback", null, [D, m._aData, o, v]), r.push(D), o++
            } else {
                var _ = l.sZeroRecords;
                1 == t.iDraw && "ajax" == Be(t) ? _ = l.sLoadingRecords : l.sEmptyTable && 0 === t.fnRecordsTotal() && (_ = l.sEmptyTable), r[0] = a("<tr/>", {"class": s ? i[0] : ""}).append(a("<td />", {
                    valign: "top",
                    colSpan: b(t),
                    "class": t.oClasses.sRowEmpty
                }).html(_))[0]
            }
            We(t, "aoHeaderCallback", "header", [a(t.nTHead).children("tr")[0], F(t), d, h, f]), We(t, "aoFooterCallback", "footer", [a(t.nTFoot).children("tr")[0], F(t), d, h, f]);
            var C = a(t.nTBody);
            C.children().detach(), C.append(a(r)), We(t, "aoDrawCallback", "draw", [t]), t.bSorted = !1, t.bFiltered = !1, t.bDrawing = !1
        }

        function W(t, e) {
            var n = t.oFeatures, a = n.bSort, r = n.bFilter;
            a && we(t), r ? z(t, t.oPreviousSearch) : t.aiDisplay = t.aiDisplayMaster.slice(), e !== !0 && (t._iDisplayStart = 0), t._drawHold = e, M(t), t._drawHold = !1
        }

        function U(t) {
            var e = t.oClasses, n = a(t.nTable), r = a("<div/>").insertBefore(n), o = t.oFeatures, i = a("<div/>", {
                id: t.sTableId + "_wrapper",
                "class": e.sWrapper + (t.nTFoot ? "" : " " + e.sNoFooter)
            });
            t.nHolding = r[0], t.nTableWrapper = i[0], t.nTableReinsertBefore = t.nTable.nextSibling;
            for (var s, l, u, c, f, d, h = t.sDom.split(""), p = 0; p < h.length; p++) {
                if (s = null, l = h[p], "<" == l) {
                    if (u = a("<div/>")[0], c = h[p + 1], "'" == c || '"' == c) {
                        for (f = "", d = 2; h[p + d] != c;)f += h[p + d], d++;
                        if ("H" == f ? f = e.sJUIHeader : "F" == f && (f = e.sJUIFooter), -1 != f.indexOf(".")) {
                            var g = f.split(".");
                            u.id = g[0].substr(1, g[0].length - 1), u.className = g[1]
                        } else"#" == f.charAt(0) ? u.id = f.substr(1, f.length - 1) : u.className = f;
                        p += d
                    }
                    i.append(u), i = a(u)
                } else if (">" == l)i = i.parent(); else if ("l" == l && o.bPaginate && o.bLengthChange)s = ce(t); else if ("f" == l && o.bFilter)s = $(t); else if ("r" == l && o.bProcessing)s = he(t); else if ("t" == l)s = ge(t); else if ("i" == l && o.bInfo)s = re(t); else if ("p" == l && o.bPaginate)s = fe(t); else if (0 !== qe.ext.feature.length)for (var b = qe.ext.feature, v = 0, S = b.length; S > v; v++)if (l == b[v].cFeature) {
                    s = b[v].fnInit(t);
                    break
                }
                if (s) {
                    var m = t.aanFeatures;
                    m[l] || (m[l] = []), m[l].push(s), i.append(s)
                }
            }
            r.replaceWith(i), t.nHolding = null
        }

        function E(t, e) {
            var n, r, o, i, s, l, u, c, f, d, h, p = a(e).children("tr"), g = function (t, e, n) {
                for (var a = t[e]; a[n];)n++;
                return n
            };
            for (t.splice(0, t.length), o = 0, l = p.length; l > o; o++)t.push([]);
            for (o = 0, l = p.length; l > o; o++)for (n = p[o], c = 0, r = n.firstChild; r;) {
                if ("TD" == r.nodeName.toUpperCase() || "TH" == r.nodeName.toUpperCase())for (f = 1 * r.getAttribute("colspan"), d = 1 * r.getAttribute("rowspan"), f = f && 0 !== f && 1 !== f ? f : 1, d = d && 0 !== d && 1 !== d ? d : 1, u = g(t, o, c), h = 1 === f ? !0 : !1, s = 0; f > s; s++)for (i = 0; d > i; i++)t[o + i][u + s] = {
                    cell: r,
                    unique: h
                }, t[o + i].nTr = n;
                r = r.nextSibling
            }
        }

        function B(t, e, n) {
            var a = [];
            n || (n = t.aoHeader, e && (n = [], E(n, e)));
            for (var r = 0, o = n.length; o > r; r++)for (var i = 0, s = n[r].length; s > i; i++)!n[r][i].unique || a[i] && t.bSortCellsTop || (a[i] = n[r][i].cell);
            return a
        }

        function J(t, e, n) {
            if (We(t, "aoServerParams", "serverParams", [e]), e && a.isArray(e)) {
                var r = {}, o = /(.*?)\[\]$/;
                a.each(e, function (t, e) {
                    var n = e.name.match(o);
                    if (n) {
                        var a = n[0];
                        r[a] || (r[a] = []), r[a].push(e.value)
                    } else r[e.name] = e.value
                }), e = r
            }
            var i, s = t.ajax, l = t.oInstance, u = function (e) {
                We(t, null, "xhr", [t, e, t.jqXHR]), n(e)
            };
            if (a.isPlainObject(s) && s.data) {
                i = s.data;
                var c = a.isFunction(i) ? i(e, t) : i;
                e = a.isFunction(i) && c ? c : a.extend(!0, e, c), delete s.data
            }
            var f = {
                data: e, success: function (e) {
                    var n = e.error || e.sError;
                    n && He(t, 0, n), t.json = e, u(e)
                }, dataType: "json", cache: !1, type: t.sServerMethod, error: function (e, n) {
                    var r = We(t, null, "xhr", [t, null, t.jqXHR]);
                    -1 === a.inArray(!0, r) && ("parsererror" == n ? He(t, 0, "Invalid JSON response", 1) : 4 === e.readyState && He(t, 0, "Ajax error", 7)), pe(t, !1)
                }
            };
            t.oAjaxData = e, We(t, null, "preXhr", [t, e]), t.fnServerData ? t.fnServerData.call(l, t.sAjaxSource, a.map(e, function (t, e) {
                return {name: e, value: t}
            }), u, t) : t.sAjaxSource || "string" == typeof s ? t.jqXHR = a.ajax(a.extend(f, {url: s || t.sAjaxSource})) : a.isFunction(s) ? t.jqXHR = s.call(l, e, u, t) : (t.jqXHR = a.ajax(a.extend(f, s)), s.data = i)
        }

        function X(t) {
            return t.bAjaxDataGet ? (t.iDraw++, pe(t, !0), J(t, V(t), function (e) {
                q(t, e)
            }), !1) : !0
        }

        function V(t) {
            var e, n, r, o, i = t.aoColumns, s = i.length, l = t.oFeatures, u = t.oPreviousSearch, c = t.aoPreSearchCols, f = [], d = Te(t), h = t._iDisplayStart, p = l.bPaginate !== !1 ? t._iDisplayLength : -1, g = function (t, e) {
                f.push({name: t, value: e})
            };
            g("sEcho", t.iDraw), g("iColumns", s), g("sColumns", fn(i, "sName").join(",")), g("iDisplayStart", h), g("iDisplayLength", p);
            var b = {
                draw: t.iDraw,
                columns: [],
                order: [],
                start: h,
                length: p,
                search: {value: u.sSearch, regex: u.bRegex}
            };
            for (e = 0; s > e; e++)r = i[e], o = c[e], n = "function" == typeof r.mData ? "function" : r.mData, b.columns.push({
                data: n,
                name: r.sName,
                searchable: r.bSearchable,
                orderable: r.bSortable,
                search: {value: o.sSearch, regex: o.bRegex}
            }), g("mDataProp_" + e, n), l.bFilter && (g("sSearch_" + e, o.sSearch), g("bRegex_" + e, o.bRegex), g("bSearchable_" + e, r.bSearchable)), l.bSort && g("bSortable_" + e, r.bSortable);
            l.bFilter && (g("sSearch", u.sSearch), g("bRegex", u.bRegex)), l.bSort && (a.each(d, function (t, e) {
                b.order.push({column: e.col, dir: e.dir}), g("iSortCol_" + t, e.col), g("sSortDir_" + t, e.dir)
            }), g("iSortingCols", d.length));
            var v = qe.ext.legacy.ajax;
            return null === v ? t.sAjaxSource ? f : b : v ? f : b
        }

        function q(t, e) {
            var a = function (t, a) {
                return e[t] !== n ? e[t] : e[a]
            }, r = G(t, e), o = a("sEcho", "draw"), i = a("iTotalRecords", "recordsTotal"), s = a("iTotalDisplayRecords", "recordsFiltered");
            if (o) {
                if (1 * o < t.iDraw)return;
                t.iDraw = 1 * o
            }
            L(t), t._iRecordsTotal = parseInt(i, 10), t._iRecordsDisplay = parseInt(s, 10);
            for (var l = 0, u = r.length; u > l; l++)D(t, r[l]);
            t.aiDisplay = t.aiDisplayMaster.slice(), t.bAjaxDataGet = !1, M(t), t._bInitComplete || le(t, e), t.bAjaxDataGet = !0, pe(t, !1)
        }

        function G(t, e) {
            var r = a.isPlainObject(t.ajax) && t.ajax.dataSrc !== n ? t.ajax.dataSrc : t.sAjaxDataProp;
            return "data" === r ? e.aaData || e[r] : "" !== r ? I(r)(e) : e
        }

        function $(t) {
            var n = t.oClasses, r = t.sTableId, o = t.oLanguage, i = t.oPreviousSearch, s = t.aanFeatures, l = '<input type="search" class="' + n.sFilterInput + '"/>', u = o.sSearch;
            u = u.match(/_INPUT_/) ? u.replace("_INPUT_", l) : u + l;
            var c = a("<div/>", {
                id: s.f ? null : r + "_filter",
                "class": n.sFilter
            }).append(a("<label/>").append(u)), f = function () {
                var e = (s.f, this.value ? this.value : "");
                e != i.sSearch && (z(t, {
                    sSearch: e,
                    bRegex: i.bRegex,
                    bSmart: i.bSmart,
                    bCaseInsensitive: i.bCaseInsensitive
                }), t._iDisplayStart = 0, M(t))
            }, d = null !== t.searchDelay ? t.searchDelay : "ssp" === Be(t) ? 400 : 0, h = a("input", c).val(i.sSearch).attr("placeholder", o.sSearchPlaceholder).bind("keyup.DT search.DT input.DT paste.DT cut.DT", d ? me(f, d) : f).bind("keypress.DT", function (t) {
                return 13 == t.keyCode ? !1 : void 0
            }).attr("aria-controls", r);
            return a(t.nTable).on("search.dt.DT", function (n, a) {
                if (t === a)try {
                    h[0] !== e.activeElement && h.val(i.sSearch)
                } catch (r) {
                }
            }), c[0]
        }

        function z(t, e, a) {
            var r = t.oPreviousSearch, o = t.aoPreSearchCols, i = function (t) {
                r.sSearch = t.sSearch, r.bRegex = t.bRegex, r.bSmart = t.bSmart, r.bCaseInsensitive = t.bCaseInsensitive
            }, s = function (t) {
                return t.bEscapeRegex !== n ? !t.bEscapeRegex : t.bRegex
            };
            if (S(t), "ssp" != Be(t)) {
                Z(t, e.sSearch, a, s(e), e.bSmart, e.bCaseInsensitive), i(e);
                for (var l = 0; l < o.length; l++)Q(t, o[l].sSearch, l, s(o[l]), o[l].bSmart, o[l].bCaseInsensitive);
                Y(t)
            } else i(e);
            t.bFiltered = !0, We(t, null, "search", [t])
        }

        function Y(t) {
            for (var e, n, r = qe.ext.search, o = t.aiDisplay, i = 0, s = r.length; s > i; i++) {
                for (var l = [], u = 0, c = o.length; c > u; u++)n = o[u], e = t.aoData[n], r[i](t, e._aFilterData, n, e._aData, u) && l.push(n);
                o.length = 0, a.merge(o, l)
            }
        }

        function Q(t, e, n, a, r, o) {
            if ("" !== e)for (var i, s = t.aiDisplay, l = K(e, a, r, o), u = s.length - 1; u >= 0; u--)i = t.aoData[s[u]]._aFilterData[n], l.test(i) || s.splice(u, 1)
        }

        function Z(t, e, n, a, r, o) {
            var i, s, l, u = K(e, a, r, o), c = t.oPreviousSearch.sSearch, f = t.aiDisplayMaster;
            if (0 !== qe.ext.search.length && (n = !0), s = ee(t), e.length <= 0)t.aiDisplay = f.slice(); else for ((s || n || c.length > e.length || 0 !== e.indexOf(c) || t.bSorted) && (t.aiDisplay = f.slice()), i = t.aiDisplay, l = i.length - 1; l >= 0; l--)u.test(t.aoData[i[l]]._sFilterRow) || i.splice(l, 1)
        }

        function K(t, e, n, r) {
            if (t = e ? t : te(t), n) {
                var o = a.map(t.match(/"[^"]+"|[^ ]+/g) || [""], function (t) {
                    if ('"' === t.charAt(0)) {
                        var e = t.match(/^"(.*)"$/);
                        t = e ? e[1] : t
                    }
                    return t.replace('"', "")
                });
                t = "^(?=.*?" + o.join(")(?=.*?") + ").*$"
            }
            return new RegExp(t, r ? "i" : "")
        }

        function te(t) {
            return t.replace(nn, "\\$1")
        }

        function ee(t) {
            var e, n, a, r, o, i, s, l, u = t.aoColumns, c = qe.ext.type.search, f = !1;
            for (n = 0, r = t.aoData.length; r > n; n++)if (l = t.aoData[n], !l._aFilterData) {
                for (i = [], a = 0, o = u.length; o > a; a++)e = u[a], e.bSearchable ? (s = T(t, n, a, "filter"), c[e.sType] && (s = c[e.sType](s)), null === s && (s = ""), "string" != typeof s && s.toString && (s = s.toString())) : s = "", s.indexOf && -1 !== s.indexOf("&") && (Dn.innerHTML = s, s = yn ? Dn.textContent : Dn.innerText), s.replace && (s = s.replace(/[\r\n]/g, "")), i.push(s);
                l._aFilterData = i, l._sFilterRow = i.join("  "), f = !0
            }
            return f
        }

        function ne(t) {
            return {search: t.sSearch, smart: t.bSmart, regex: t.bRegex, caseInsensitive: t.bCaseInsensitive}
        }

        function ae(t) {
            return {sSearch: t.search, bSmart: t.smart, bRegex: t.regex, bCaseInsensitive: t.caseInsensitive}
        }

        function re(t) {
            var e = t.sTableId, n = t.aanFeatures.i, r = a("<div/>", {
                "class": t.oClasses.sInfo,
                id: n ? null : e + "_info"
            });
            return n || (t.aoDrawCallback.push({
                fn: oe,
                sName: "information"
            }), r.attr("role", "status").attr("aria-live", "polite"), a(t.nTable).attr("aria-describedby", e + "_info")), r[0]
        }

        function oe(t) {
            var e = t.aanFeatures.i;
            if (0 !== e.length) {
                var n = t.oLanguage, r = t._iDisplayStart + 1, o = t.fnDisplayEnd(), i = t.fnRecordsTotal(), s = t.fnRecordsDisplay(), l = s ? n.sInfo : n.sInfoEmpty;
                s !== i && (l += " " + n.sInfoFiltered), l += n.sInfoPostFix, l = ie(t, l);
                var u = n.fnInfoCallback;
                null !== u && (l = u.call(t.oInstance, t, r, o, i, s, l)), a(e).html(l)
            }
        }

        function ie(t, e) {
            var n = t.fnFormatNumber, a = t._iDisplayStart + 1, r = t._iDisplayLength, o = t.fnRecordsDisplay(), i = -1 === r;
            return e.replace(/_START_/g, n.call(t, a)).replace(/_END_/g, n.call(t, t.fnDisplayEnd())).replace(/_MAX_/g, n.call(t, t.fnRecordsTotal())).replace(/_TOTAL_/g, n.call(t, o)).replace(/_PAGE_/g, n.call(t, i ? 1 : Math.ceil(a / r))).replace(/_PAGES_/g, n.call(t, i ? 1 : Math.ceil(o / r)))
        }

        function se(t) {
            var e, n, a, r = t.iInitDisplayStart, o = t.aoColumns, i = t.oFeatures, s = t.bDeferLoading;
            if (!t.bInitialised)return void setTimeout(function () {
                se(t)
            }, 200);
            for (U(t), O(t), k(t, t.aoHeader), k(t, t.aoFooter), pe(t, !0), i.bAutoWidth && Se(t), e = 0, n = o.length; n > e; e++)a = o[e], a.sWidth && (a.nTh.style.width = Ce(a.sWidth));
            We(t, null, "preInit", [t]), W(t);
            var l = Be(t);
            ("ssp" != l || s) && ("ajax" == l ? J(t, [], function (n) {
                var a = G(t, n);
                for (e = 0; e < a.length; e++)D(t, a[e]);
                t.iInitDisplayStart = r, W(t), pe(t, !1), le(t, n)
            }, t) : (pe(t, !1), le(t)))
        }

        function le(t, e) {
            t._bInitComplete = !0, (e || t.oInit.aaData) && h(t), We(t, "aoInitComplete", "init", [t, e])
        }

        function ue(t, e) {
            var n = parseInt(e, 10);
            t._iDisplayLength = n, Ue(t), We(t, null, "length", [t, n])
        }

        function ce(t) {
            for (var e = t.oClasses, n = t.sTableId, r = t.aLengthMenu, o = a.isArray(r[0]), i = o ? r[0] : r, s = o ? r[1] : r, l = a("<select/>", {
                name: n + "_length",
                "aria-controls": n,
                "class": e.sLengthSelect
            }), u = 0, c = i.length; c > u; u++)l[0][u] = new Option(s[u], i[u]);
            var f = a("<div><label/></div>").addClass(e.sLength);
            return t.aanFeatures.l || (f[0].id = n + "_length"), f.children().append(t.oLanguage.sLengthMenu.replace("_MENU_", l[0].outerHTML)), a("select", f).val(t._iDisplayLength).bind("change.DT", function () {
                ue(t, a(this).val()), M(t)
            }), a(t.nTable).bind("length.dt.DT", function (e, n, r) {
                t === n && a("select", f).val(r)
            }), f[0]
        }

        function fe(t) {
            var e = t.sPaginationType, n = qe.ext.pager[e], r = "function" == typeof n, o = function (t) {
                M(t)
            }, i = a("<div/>").addClass(t.oClasses.sPaging + e)[0], s = t.aanFeatures;
            return r || n.fnInit(t, i, o), s.p || (i.id = t.sTableId + "_paginate", t.aoDrawCallback.push({
                fn: function (t) {
                    if (r) {
                        var e, a, i = t._iDisplayStart, l = t._iDisplayLength, u = t.fnRecordsDisplay(), c = -1 === l, f = c ? 0 : Math.ceil(i / l), d = c ? 1 : Math.ceil(u / l), h = n(f, d);
                        for (e = 0, a = s.p.length; a > e; e++)Ee(t, "pageButton")(t, s.p[e], e, h, f, d)
                    } else n.fnUpdate(t, o)
                }, sName: "pagination"
            })), i
        }

        function de(t, e, n) {
            var a = t._iDisplayStart, r = t._iDisplayLength, o = t.fnRecordsDisplay();
            0 === o || -1 === r ? a = 0 : "number" == typeof e ? (a = e * r, a > o && (a = 0)) : "first" == e ? a = 0 : "previous" == e ? (a = r >= 0 ? a - r : 0, 0 > a && (a = 0)) : "next" == e ? o > a + r && (a += r) : "last" == e ? a = Math.floor((o - 1) / r) * r : He(t, 0, "Unknown paging action: " + e, 5);
            var i = t._iDisplayStart !== a;
            return t._iDisplayStart = a, i && (We(t, null, "page", [t]), n && M(t)), i
        }

        function he(t) {
            return a("<div/>", {
                id: t.aanFeatures.r ? null : t.sTableId + "_processing",
                "class": t.oClasses.sProcessing
            }).html(t.oLanguage.sProcessing).insertBefore(t.nTable)[0]
        }

        function pe(t, e) {
            t.oFeatures.bProcessing && a(t.aanFeatures.r).css("display", e ? "block" : "none"), We(t, null, "processing", [t, e])
        }

        function ge(t) {
            var e = a(t.nTable);
            e.attr("role", "grid");
            var n = t.oScroll;
            if ("" === n.sX && "" === n.sY)return t.nTable;
            var r = n.sX, o = n.sY, i = t.oClasses, s = e.children("caption"), l = s.length ? s[0]._captionSide : null, u = a(e[0].cloneNode(!1)), c = a(e[0].cloneNode(!1)), f = e.children("tfoot"), d = "<div/>", h = function (t) {
                return t ? Ce(t) : null
            };
            n.sX && "100%" === e.attr("width") && e.removeAttr("width"), f.length || (f = null);
            var p = a(d, {"class": i.sScrollWrapper}).append(a(d, {"class": i.sScrollHead}).css({
                overflow: "hidden",
                position: "relative",
                border: 0,
                width: r ? h(r) : "100%"
            }).append(a(d, {"class": i.sScrollHeadInner}).css({
                "box-sizing": "content-box",
                width: n.sXInner || "100%"
            }).append(u.removeAttr("id").css("margin-left", 0).append("top" === l ? s : null).append(e.children("thead"))))).append(a(d, {"class": i.sScrollBody}).css({
                position: "relative",
                overflow: "auto",
                width: h(r)
            }).append(e));
            f && p.append(a(d, {"class": i.sScrollFoot}).css({
                overflow: "hidden",
                border: 0,
                width: r ? h(r) : "100%"
            }).append(a(d, {"class": i.sScrollFootInner}).append(c.removeAttr("id").css("margin-left", 0).append("bottom" === l ? s : null).append(e.children("tfoot")))));
            var g = p.children(), b = g[0], v = g[1], S = f ? g[2] : null;
            return r && a(v).on("scroll.DT", function () {
                var t = this.scrollLeft;
                b.scrollLeft = t, f && (S.scrollLeft = t)
            }), a(v).css(o && n.bCollapse ? "max-height" : "height", o), t.nScrollHead = b, t.nScrollBody = v, t.nScrollFoot = S, t.aoDrawCallback.push({
                fn: be,
                sName: "scrolling"
            }), p[0]
        }

        function be(t) {
            var e, n, r, o, i, s, l, u, c, f = t.oScroll, d = f.sX, h = f.sXInner, g = f.sY, b = f.iBarWidth, v = a(t.nScrollHead), S = v[0].style, m = v.children("div"), D = m[0].style, y = m.children("table"), _ = t.nScrollBody, C = a(_), T = _.style, w = a(t.nScrollFoot), x = w.children("div"), I = x.children("table"), A = a(t.nTHead), F = a(t.nTable), L = F[0], P = L.style, R = t.nTFoot ? a(t.nTFoot) : null, j = t.oBrowser, H = j.bScrollOversize, N = [], O = [], k = [], M = function (t) {
                var e = t.style;
                e.paddingTop = "0", e.paddingBottom = "0", e.borderTopWidth = "0", e.borderBottomWidth = "0", e.height = 0
            };
            F.children("thead, tfoot").remove(), i = A.clone().prependTo(F), e = A.find("tr"), r = i.find("tr"), i.find("th, td").removeAttr("tabindex"), R && (s = R.clone().prependTo(F), n = R.find("tr"), o = s.find("tr")), d || (T.width = "100%", v[0].style.width = "100%"), a.each(B(t, i), function (e, n) {
                l = p(t, e), n.style.width = t.aoColumns[l].sWidth
            }), R && ve(function (t) {
                t.style.width = ""
            }, o), c = F.outerWidth(), "" === d ? (P.width = "100%", H && (F.find("tbody").height() > _.offsetHeight || "scroll" == C.css("overflow-y")) && (P.width = Ce(F.outerWidth() - b)), c = F.outerWidth()) : "" !== h && (P.width = Ce(h), c = F.outerWidth()), ve(M, r), ve(function (t) {
                k.push(t.innerHTML), N.push(Ce(a(t).css("width")))
            }, r), ve(function (t, e) {
                t.style.width = N[e]
            }, e), a(r).height(0), R && (ve(M, o), ve(function (t) {
                O.push(Ce(a(t).css("width")))
            }, o), ve(function (t, e) {
                t.style.width = O[e]
            }, n), a(o).height(0)), ve(function (t, e) {
                t.innerHTML = '<div class="dataTables_sizing" style="height:0;overflow:hidden;">' + k[e] + "</div>", t.style.width = N[e]
            }, r), R && ve(function (t, e) {
                t.innerHTML = "", t.style.width = O[e]
            }, o), F.outerWidth() < c ? (u = _.scrollHeight > _.offsetHeight || "scroll" == C.css("overflow-y") ? c + b : c, H && (_.scrollHeight > _.offsetHeight || "scroll" == C.css("overflow-y")) && (P.width = Ce(u - b)), ("" === d || "" !== h) && He(t, 1, "Possible column misalignment", 6)) : u = "100%", T.width = Ce(u), S.width = Ce(u), R && (t.nScrollFoot.style.width = Ce(u)), g || H && (T.height = Ce(L.offsetHeight + b));
            var W = F.outerWidth();
            y[0].style.width = Ce(W), D.width = Ce(W);
            var U = F.height() > _.clientHeight || "scroll" == C.css("overflow-y"), E = "padding" + (j.bScrollbarLeft ? "Left" : "Right");
            D[E] = U ? b + "px" : "0px", R && (I[0].style.width = Ce(W), x[0].style.width = Ce(W), x[0].style[E] = U ? b + "px" : "0px"), C.scroll(), !t.bSorted && !t.bFiltered || t._drawHold || (_.scrollTop = 0)
        }

        function ve(t, e, n) {
            for (var a, r, o = 0, i = 0, s = e.length; s > i;) {
                for (a = e[i].firstChild, r = n ? n[i].firstChild : null; a;)1 === a.nodeType && (n ? t(a, r, o) : t(a, o), o++), a = a.nextSibling, r = n ? r.nextSibling : null;
                i++
            }
        }

        function Se(e) {
            var n, r, o, i, s, l = e.nTable, u = e.aoColumns, c = e.oScroll, f = c.sY, d = c.sX, g = c.sXInner, S = u.length, m = v(e, "bVisible"), D = a("th", e.nTHead), y = l.getAttribute("width"), _ = l.parentNode, C = !1, T = e.oBrowser, w = T.bScrollOversize, x = l.style.width;
            for (x && -1 !== x.indexOf("%") && (y = x), n = 0; n < m.length; n++)r = u[m[n]], null !== r.sWidth && (r.sWidth = De(r.sWidthOrig, _), C = !0);
            if (w || !C && !d && !f && S == b(e) && S == D.length)for (n = 0; S > n; n++) {
                var I = p(e, n);
                I && (u[I].sWidth = Ce(D.eq(n).width()))
            } else {
                var A = a(l).clone().css("visibility", "hidden").removeAttr("id");
                A.find("tbody tr").remove();
                var F = a("<tr/>").appendTo(A.find("tbody"));
                for (A.find("thead, tfoot").remove(), A.append(a(e.nTHead).clone()).append(a(e.nTFoot).clone()), A.find("tfoot th, tfoot td").css("width", ""), D = B(e, A.find("thead")[0]), n = 0; n < m.length; n++)r = u[m[n]], D[n].style.width = null !== r.sWidthOrig && "" !== r.sWidthOrig ? Ce(r.sWidthOrig) : "";
                if (e.aoData.length)for (n = 0; n < m.length; n++)o = m[n], r = u[o], a(ye(e, o)).clone(!1).append(r.sContentPadding).appendTo(F);
                var L = a("<div/>").css(d || f ? {
                    position: "absolute",
                    top: 0,
                    left: 0,
                    height: 1,
                    right: 0,
                    overflow: "hidden"
                } : {}).append(A).appendTo(_);
                if (d && g ? A.width(g) : d ? (A.css("width", "auto"), A.width() < _.clientWidth && A.width(_.clientWidth)) : f ? A.width(_.clientWidth) : y && A.width(y), d) {
                    var P = 0;
                    for (n = 0; n < m.length; n++)r = u[m[n]], s = T.bBounding ? D[n].getBoundingClientRect().width : a(D[n]).outerWidth(), P += null === r.sWidthOrig ? s : parseInt(r.sWidth, 10) + s - a(D[n]).width();
                    A.width(Ce(P)), l.style.width = Ce(P)
                }
                for (n = 0; n < m.length; n++)r = u[m[n]], i = a(D[n]).width(), i && (r.sWidth = Ce(i));
                l.style.width = Ce(A.css("width")), L.remove()
            }
            if (y && (l.style.width = Ce(y)), (y || d) && !e._reszEvt) {
                var R = function () {
                    a(t).bind("resize.DT-" + e.sInstance, me(function () {
                        h(e)
                    }))
                };
                w ? setTimeout(R, 1e3) : R(), e._reszEvt = !0
            }
        }

        function me(t, e) {
            var a, r, o = e !== n ? e : 200;
            return function () {
                var e = this, i = +new Date, s = arguments;
                a && a + o > i ? (clearTimeout(r), r = setTimeout(function () {
                    a = n, t.apply(e, s)
                }, o)) : (a = i, t.apply(e, s))
            }
        }

        function De(t, n) {
            if (!t)return 0;
            var r = a("<div/>").css("width", Ce(t)).appendTo(n || e.body), o = r[0].offsetWidth;
            return r.remove(), o
        }

        function ye(t, e) {
            var n = _e(t, e);
            if (0 > n)return null;
            var r = t.aoData[n];
            return r.nTr ? r.anCells[e] : a("<td/>").html(T(t, n, e, "display"))[0]
        }

        function _e(t, e) {
            for (var n, a = -1, r = -1, o = 0, i = t.aoData.length; i > o; o++)n = T(t, o, e, "display") + "", n = n.replace(_n, ""), n.length > a && (a = n.length, r = o);
            return r
        }

        function Ce(t) {
            return null === t ? "0px" : "number" == typeof t ? 0 > t ? "0px" : t + "px" : t.match(/\d$/) ? t + "px" : t
        }

        function Te(t) {
            var e, r, o, i, s, l, u, c = [], f = t.aoColumns, d = t.aaSortingFixed, h = a.isPlainObject(d), p = [], g = function (t) {
                t.length && !a.isArray(t[0]) ? p.push(t) : a.merge(p, t)
            };
            for (a.isArray(d) && g(d), h && d.pre && g(d.pre), g(t.aaSorting), h && d.post && g(d.post), e = 0; e < p.length; e++)for (u = p[e][0], i = f[u].aDataSort, r = 0, o = i.length; o > r; r++)s = i[r], l = f[s].sType || "string", p[e]._idx === n && (p[e]._idx = a.inArray(p[e][1], f[s].asSorting)), c.push({
                src: u,
                col: s,
                dir: p[e][1],
                index: p[e]._idx,
                type: l,
                formatter: qe.ext.type.order[l + "-pre"]
            });
            return c
        }

        function we(t) {
            var e, n, a, r, o, i = [], s = qe.ext.type.order, l = t.aoData, u = (t.aoColumns, 0), c = t.aiDisplayMaster;
            for (S(t), o = Te(t), e = 0, n = o.length; n > e; e++)r = o[e], r.formatter && u++, Le(t, r.col);
            if ("ssp" != Be(t) && 0 !== o.length) {
                for (e = 0, a = c.length; a > e; e++)i[c[e]] = e;
                c.sort(u === o.length ? function (t, e) {
                    var n, a, r, s, u, c = o.length, f = l[t]._aSortData, d = l[e]._aSortData;
                    for (r = 0; c > r; r++)if (u = o[r], n = f[u.col], a = d[u.col], s = a > n ? -1 : n > a ? 1 : 0, 0 !== s)return "asc" === u.dir ? s : -s;
                    return n = i[t], a = i[e], a > n ? -1 : n > a ? 1 : 0
                } : function (t, e) {
                    var n, a, r, u, c, f, d = o.length, h = l[t]._aSortData, p = l[e]._aSortData;
                    for (r = 0; d > r; r++)if (c = o[r], n = h[c.col], a = p[c.col], f = s[c.type + "-" + c.dir] || s["string-" + c.dir], u = f(n, a), 0 !== u)return u;
                    return n = i[t], a = i[e], a > n ? -1 : n > a ? 1 : 0
                })
            }
            t.bSorted = !0
        }

        function xe(t) {
            for (var e, n, a = t.aoColumns, r = Te(t), o = t.oLanguage.oAria, i = 0, s = a.length; s > i; i++) {
                var l = a[i], u = l.asSorting, c = l.sTitle.replace(/<.*?>/g, ""), f = l.nTh;
                f.removeAttribute("aria-sort"), l.bSortable ? (r.length > 0 && r[0].col == i ? (f.setAttribute("aria-sort", "asc" == r[0].dir ? "ascending" : "descending"), n = u[r[0].index + 1] || u[0]) : n = u[0], e = c + ("asc" === n ? o.sSortAscending : o.sSortDescending)) : e = c, f.setAttribute("aria-label", e)
            }
        }

        function Ie(t, e, r, o) {
            var i, s = t.aoColumns[e], l = t.aaSorting, u = s.asSorting, c = function (t, e) {
                var r = t._idx;
                return r === n && (r = a.inArray(t[1], u)), r + 1 < u.length ? r + 1 : e ? null : 0
            };
            if ("number" == typeof l[0] && (l = t.aaSorting = [l]), r && t.oFeatures.bSortMulti) {
                var f = a.inArray(e, fn(l, "0"));
                -1 !== f ? (i = c(l[f], !0), null === i && 1 === l.length && (i = 0), null === i ? l.splice(f, 1) : (l[f][1] = u[i], l[f]._idx = i)) : (l.push([e, u[0], 0]), l[l.length - 1]._idx = 0)
            } else l.length && l[0][0] == e ? (i = c(l[0]), l.length = 1, l[0][1] = u[i], l[0]._idx = i) : (l.length = 0, l.push([e, u[0]]), l[0]._idx = 0);
            W(t), "function" == typeof o && o(t)
        }

        function Ae(t, e, n, a) {
            var r = t.aoColumns[n];
            ke(e, {}, function (e) {
                r.bSortable !== !1 && (t.oFeatures.bProcessing ? (pe(t, !0), setTimeout(function () {
                    Ie(t, n, e.shiftKey, a), "ssp" !== Be(t) && pe(t, !1)
                }, 0)) : Ie(t, n, e.shiftKey, a))
            })
        }

        function Fe(t) {
            var e, n, r, o = t.aLastSort, i = t.oClasses.sSortColumn, s = Te(t), l = t.oFeatures;
            if (l.bSort && l.bSortClasses) {
                for (e = 0, n = o.length; n > e; e++)r = o[e].src, a(fn(t.aoData, "anCells", r)).removeClass(i + (2 > e ? e + 1 : 3));
                for (e = 0, n = s.length; n > e; e++)r = s[e].src, a(fn(t.aoData, "anCells", r)).addClass(i + (2 > e ? e + 1 : 3))
            }
            t.aLastSort = s
        }

        function Le(t, e) {
            var n, a = t.aoColumns[e], r = qe.ext.order[a.sSortDataType];
            r && (n = r.call(t.oInstance, t, e, g(t, e)));
            for (var o, i, s = qe.ext.type.order[a.sType + "-pre"], l = 0, u = t.aoData.length; u > l; l++)o = t.aoData[l], o._aSortData || (o._aSortData = []), (!o._aSortData[e] || r) && (i = r ? n[l] : T(t, l, e, "sort"), o._aSortData[e] = s ? s(i) : i)
        }

        function Pe(t) {
            if (t.oFeatures.bStateSave && !t.bDestroying) {
                var e = {
                    time: +new Date,
                    start: t._iDisplayStart,
                    length: t._iDisplayLength,
                    order: a.extend(!0, [], t.aaSorting),
                    search: ne(t.oPreviousSearch),
                    columns: a.map(t.aoColumns, function (e, n) {
                        return {visible: e.bVisible, search: ne(t.aoPreSearchCols[n])}
                    })
                };
                We(t, "aoStateSaveParams", "stateSaveParams", [t, e]), t.oSavedState = e, t.fnStateSaveCallback.call(t.oInstance, t, e)
            }
        }

        function Re(t) {
            var e, r, o = t.aoColumns;
            if (t.oFeatures.bStateSave) {
                var i = t.fnStateLoadCallback.call(t.oInstance, t);
                if (i && i.time) {
                    var s = We(t, "aoStateLoadParams", "stateLoadParams", [t, i]);
                    if (-1 === a.inArray(!1, s)) {
                        var l = t.iStateDuration;
                        if (!(l > 0 && i.time < +new Date - 1e3 * l) && o.length === i.columns.length) {
                            for (t.oLoadedState = a.extend(!0, {}, i), i.start !== n && (t._iDisplayStart = i.start, t.iInitDisplayStart = i.start), i.length !== n && (t._iDisplayLength = i.length), i.order !== n && (t.aaSorting = [], a.each(i.order, function (e, n) {
                                t.aaSorting.push(n[0] >= o.length ? [0, n[1]] : n)
                            })), i.search !== n && a.extend(t.oPreviousSearch, ae(i.search)), e = 0, r = i.columns.length; r > e; e++) {
                                var u = i.columns[e];
                                u.visible !== n && (o[e].bVisible = u.visible), u.search !== n && a.extend(t.aoPreSearchCols[e], ae(u.search))
                            }
                            We(t, "aoStateLoaded", "stateLoaded", [t, i])
                        }
                    }
                }
            }
        }

        function je(t) {
            var e = qe.settings, n = a.inArray(t, fn(e, "nTable"));
            return -1 !== n ? e[n] : null
        }

        function He(e, n, a, r) {
            if (a = "DataTables warning: " + (e ? "table id=" + e.sTableId + " - " : "") + a, r && (a += ". For more information about this error, please see http://datatables.net/tn/" + r), n)t.console && console.log && console.log(a); else {
                var o = qe.ext, i = o.sErrMode || o.errMode;
                if (e && We(e, null, "error", [e, r, a]), "alert" == i)alert(a); else {
                    if ("throw" == i)throw new Error(a);
                    "function" == typeof i && i(e, r, a)
                }
            }
        }

        function Ne(t, e, r, o) {
            return a.isArray(r) ? void a.each(r, function (n, r) {
                a.isArray(r) ? Ne(t, e, r[0], r[1]) : Ne(t, e, r)
            }) : (o === n && (o = r), void(e[r] !== n && (t[o] = e[r])))
        }

        function Oe(t, e, n) {
            var r;
            for (var o in e)e.hasOwnProperty(o) && (r = e[o], a.isPlainObject(r) ? (a.isPlainObject(t[o]) || (t[o] = {}), a.extend(!0, t[o], r)) : t[o] = n && "data" !== o && "aaData" !== o && a.isArray(r) ? r.slice() : r);
            return t
        }

        function ke(t, e, n) {
            a(t).bind("click.DT", e, function (e) {
                t.blur(), n(e)
            }).bind("keypress.DT", e, function (t) {
                13 === t.which && (t.preventDefault(), n(t))
            }).bind("selectstart.DT", function () {
                return !1
            })
        }

        function Me(t, e, n, a) {
            n && t[e].push({fn: n, sName: a})
        }

        function We(t, e, n, r) {
            var o = [];
            if (e && (o = a.map(t[e].slice().reverse(), function (e) {
                    return e.fn.apply(t.oInstance, r)
                })), null !== n) {
                var i = a.Event(n + ".dt");
                a(t.nTable).trigger(i, r), o.push(i.result)
            }
            return o
        }

        function Ue(t) {
            var e = t._iDisplayStart, n = t.fnDisplayEnd(), a = t._iDisplayLength;
            e >= n && (e = n - a), e -= e % a, (-1 === a || 0 > e) && (e = 0), t._iDisplayStart = e
        }

        function Ee(t, e) {
            var n = t.renderer, r = qe.ext.renderer[e];
            return a.isPlainObject(n) && n[e] ? r[n[e]] || r._ : "string" == typeof n ? r[n] || r._ : r._
        }

        function Be(t) {
            return t.oFeatures.bServerSide ? "ssp" : t.ajax || t.sAjaxSource ? "ajax" : "dom"
        }

        function Je(t, e) {
            var n = [], a = Vn.numbers_length, r = Math.floor(a / 2);
            return a >= e ? n = hn(0, e) : r >= t ? (n = hn(0, a - 2), n.push("ellipsis"), n.push(e - 1)) : t >= e - 1 - r ? (n = hn(e - (a - 2), e), n.splice(0, 0, "ellipsis"), n.splice(0, 0, 0)) : (n = hn(t - r + 2, t + r - 1), n.push("ellipsis"), n.push(e - 1), n.splice(0, 0, "ellipsis"), n.splice(0, 0, 0)), n.DT_el = "span", n
        }

        function Xe(t) {
            a.each({
                num: function (e) {
                    return qn(e, t)
                }, "num-fmt": function (e) {
                    return qn(e, t, an)
                }, "html-num": function (e) {
                    return qn(e, t, Ke)
                }, "html-num-fmt": function (e) {
                    return qn(e, t, Ke, an)
                }
            }, function (e, n) {
                Ge.type.order[e + t + "-pre"] = n, e.match(/^html\-/) && (Ge.type.search[e + t] = Ge.type.search.html)
            })
        }

        function Ve(t) {
            return function () {
                var e = [je(this[qe.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));
                return qe.ext.internal[t].apply(this, e)
            }
        }

        var qe, Ge, $e, ze, Ye, Qe = {}, Ze = /[\r\n]/g, Ke = /<.*?>/g, tn = /^[\w\+\-]/, en = /[\w\+\-]$/, nn = new RegExp("(\\" + ["/", ".", "*", "+", "?", "|", "(", ")", "[", "]", "{", "}", "\\", "$", "^", "-"].join("|\\") + ")", "g"), an = /[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfk]/gi, rn = function (t) {
            return t && t !== !0 && "-" !== t ? !1 : !0
        }, on = function (t) {
            var e = parseInt(t, 10);
            return !isNaN(e) && isFinite(t) ? e : null
        }, sn = function (t, e) {
            return Qe[e] || (Qe[e] = new RegExp(te(e), "g")), "string" == typeof t && "." !== e ? t.replace(/\./g, "").replace(Qe[e], ".") : t
        }, ln = function (t, e, n) {
            var a = "string" == typeof t;
            return rn(t) ? !0 : (e && a && (t = sn(t, e)), n && a && (t = t.replace(an, "")), !isNaN(parseFloat(t)) && isFinite(t))
        }, un = function (t) {
            return rn(t) || "string" == typeof t
        }, cn = function (t, e, n) {
            if (rn(t))return !0;
            var a = un(t);
            return a && ln(gn(t), e, n) ? !0 : null
        }, fn = function (t, e, a) {
            var r = [], o = 0, i = t.length;
            if (a !== n)for (; i > o; o++)t[o] && t[o][e] && r.push(t[o][e][a]); else for (; i > o; o++)t[o] && r.push(t[o][e]);
            return r
        }, dn = function (t, e, a, r) {
            var o = [], i = 0, s = e.length;
            if (r !== n)for (; s > i; i++)t[e[i]][a] && o.push(t[e[i]][a][r]); else for (; s > i; i++)o.push(t[e[i]][a]);
            return o
        }, hn = function (t, e) {
            var a, r = [];
            e === n ? (e = 0, a = t) : (a = e, e = t);
            for (var o = e; a > o; o++)r.push(o);
            return r
        }, pn = function (t) {
            for (var e = [], n = 0, a = t.length; a > n; n++)t[n] && e.push(t[n]);
            return e
        }, gn = function (t) {
            return t.replace(Ke, "")
        }, bn = function (t) {
            var e, n, a, r = [], o = t.length, i = 0;
            t:for (n = 0; o > n; n++) {
                for (e = t[n], a = 0; i > a; a++)if (r[a] === e)continue t;
                r.push(e), i++
            }
            return r
        }, vn = function (t, e, a) {
            t[e] !== n && (t[a] = t[e])
        }, Sn = /\[.*?\]$/, mn = /\(\)$/, Dn = a("<div>")[0], yn = Dn.textContent !== n, _n = /<.*?>/g;
        qe = function (t) {
            this.$ = function (t, e) {
                return this.api(!0).$(t, e)
            }, this._ = function (t, e) {
                return this.api(!0).rows(t, e).data()
            }, this.api = function (t) {
                return new $e(t ? je(this[Ge.iApiIndex]) : this)
            }, this.fnAddData = function (t, e) {
                var r = this.api(!0), o = a.isArray(t) && (a.isArray(t[0]) || a.isPlainObject(t[0])) ? r.rows.add(t) : r.row.add(t);
                return (e === n || e) && r.draw(), o.flatten().toArray()
            }, this.fnAdjustColumnSizing = function (t) {
                var e = this.api(!0).columns.adjust(), a = e.settings()[0], r = a.oScroll;
                t === n || t ? e.draw(!1) : ("" !== r.sX || "" !== r.sY) && be(a)
            }, this.fnClearTable = function (t) {
                var e = this.api(!0).clear();
                (t === n || t) && e.draw()
            }, this.fnClose = function (t) {
                this.api(!0).row(t).child.hide()
            }, this.fnDeleteRow = function (t, e, a) {
                var r = this.api(!0), o = r.rows(t), i = o.settings()[0], s = i.aoData[o[0][0]];
                return o.remove(), e && e.call(this, i, s), (a === n || a) && r.draw(), s
            }, this.fnDestroy = function (t) {
                this.api(!0).destroy(t)
            }, this.fnDraw = function (t) {
                this.api(!0).draw(t)
            }, this.fnFilter = function (t, e, a, r, o, i) {
                var s = this.api(!0);
                null === e || e === n ? s.search(t, a, r, i) : s.column(e).search(t, a, r, i), s.draw()
            }, this.fnGetData = function (t, e) {
                var a = this.api(!0);
                if (t !== n) {
                    var r = t.nodeName ? t.nodeName.toLowerCase() : "";
                    return e !== n || "td" == r || "th" == r ? a.cell(t, e).data() : a.row(t).data() || null
                }
                return a.data().toArray()
            }, this.fnGetNodes = function (t) {
                var e = this.api(!0);
                return t !== n ? e.row(t).node() : e.rows().nodes().flatten().toArray()
            }, this.fnGetPosition = function (t) {
                var e = this.api(!0), n = t.nodeName.toUpperCase();
                if ("TR" == n)return e.row(t).index();
                if ("TD" == n || "TH" == n) {
                    var a = e.cell(t).index();
                    return [a.row, a.columnVisible, a.column]
                }
                return null
            }, this.fnIsOpen = function (t) {
                return this.api(!0).row(t).child.isShown()
            }, this.fnOpen = function (t, e, n) {
                return this.api(!0).row(t).child(e, n).show().child()[0]
            }, this.fnPageChange = function (t, e) {
                var a = this.api(!0).page(t);
                (e === n || e) && a.draw(!1)
            }, this.fnSetColumnVis = function (t, e, a) {
                var r = this.api(!0).column(t).visible(e);
                (a === n || a) && r.columns.adjust().draw()
            }, this.fnSettings = function () {
                return je(this[Ge.iApiIndex])
            }, this.fnSort = function (t) {
                this.api(!0).order(t).draw()
            }, this.fnSortListener = function (t, e, n) {
                this.api(!0).order.listener(t, e, n)
            }, this.fnUpdate = function (t, e, a, r, o) {
                var i = this.api(!0);
                return a === n || null === a ? i.row(e).data(t) : i.cell(e, a).data(t), (o === n || o) && i.columns.adjust(), (r === n || r) && i.draw(), 0
            }, this.fnVersionCheck = Ge.fnVersionCheck;
            var e = this, r = t === n, c = this.length;
            r && (t = {}), this.oApi = this.internal = Ge.internal;
            for (var h in qe.ext.internal)h && (this[h] = Ve(h));
            return this.each(function () {
                var h, p = {}, g = c > 1 ? Oe(p, t, !0) : t, b = 0, v = this.getAttribute("id"), S = !1, _ = qe.defaults, C = a(this);
                if ("table" != this.nodeName.toLowerCase())return void He(null, 0, "Non-table node initialisation (" + this.nodeName + ")", 2);
                s(_), l(_.column), o(_, _, !0), o(_.column, _.column, !0), o(_, a.extend(g, C.data()));
                var T = qe.settings;
                for (b = 0, h = T.length; h > b; b++) {
                    var w = T[b];
                    if (w.nTable == this || w.nTHead.parentNode == this || w.nTFoot && w.nTFoot.parentNode == this) {
                        var x = g.bRetrieve !== n ? g.bRetrieve : _.bRetrieve, A = g.bDestroy !== n ? g.bDestroy : _.bDestroy;
                        if (r || x)return w.oInstance;
                        if (A) {
                            w.oInstance.fnDestroy();
                            break
                        }
                        return void He(w, 0, "Cannot reinitialise DataTable", 3)
                    }
                    if (w.sTableId == this.id) {
                        T.splice(b, 1);
                        break
                    }
                }
                (null === v || "" === v) && (v = "DataTables_Table_" + qe.ext._unique++, this.id = v);
                var F = a.extend(!0, {}, qe.models.oSettings, {
                    sDestroyWidth: C[0].style.width,
                    sInstance: v,
                    sTableId: v
                });
                F.nTable = this, F.oApi = e.internal, F.oInit = g, T.push(F), F.oInstance = 1 === e.length ? e : C.dataTable(), s(g), g.oLanguage && i(g.oLanguage), g.aLengthMenu && !g.iDisplayLength && (g.iDisplayLength = a.isArray(g.aLengthMenu[0]) ? g.aLengthMenu[0][0] : g.aLengthMenu[0]), g = Oe(a.extend(!0, {}, _), g), Ne(F.oFeatures, g, ["bPaginate", "bLengthChange", "bFilter", "bSort", "bSortMulti", "bInfo", "bProcessing", "bAutoWidth", "bSortClasses", "bServerSide", "bDeferRender"]), Ne(F, g, ["asStripeClasses", "ajax", "fnServerData", "fnFormatNumber", "sServerMethod", "aaSorting", "aaSortingFixed", "aLengthMenu", "sPaginationType", "sAjaxSource", "sAjaxDataProp", "iStateDuration", "sDom", "bSortCellsTop", "iTabIndex", "fnStateLoadCallback", "fnStateSaveCallback", "renderer", "searchDelay", "rowId", ["iCookieDuration", "iStateDuration"], ["oSearch", "oPreviousSearch"], ["aoSearchCols", "aoPreSearchCols"], ["iDisplayLength", "_iDisplayLength"], ["bJQueryUI", "bJUI"]]), Ne(F.oScroll, g, [["sScrollX", "sX"], ["sScrollXInner", "sXInner"], ["sScrollY", "sY"], ["bScrollCollapse", "bCollapse"]]), Ne(F.oLanguage, g, "fnInfoCallback"), Me(F, "aoDrawCallback", g.fnDrawCallback, "user"), Me(F, "aoServerParams", g.fnServerParams, "user"), Me(F, "aoStateSaveParams", g.fnStateSaveParams, "user"), Me(F, "aoStateLoadParams", g.fnStateLoadParams, "user"), Me(F, "aoStateLoaded", g.fnStateLoaded, "user"), Me(F, "aoRowCallback", g.fnRowCallback, "user"), Me(F, "aoRowCreatedCallback", g.fnCreatedRow, "user"), Me(F, "aoHeaderCallback", g.fnHeaderCallback, "user"), Me(F, "aoFooterCallback", g.fnFooterCallback, "user"), Me(F, "aoInitComplete", g.fnInitComplete, "user"), Me(F, "aoPreDrawCallback", g.fnPreDrawCallback, "user"), F.rowIdFn = I(g.rowId), u(F);
                var L = F.oClasses;
                if (g.bJQueryUI ? (a.extend(L, qe.ext.oJUIClasses, g.oClasses), g.sDom === _.sDom && "lfrtip" === _.sDom && (F.sDom = '<"H"lfr>t<"F"ip>'), F.renderer ? a.isPlainObject(F.renderer) && !F.renderer.header && (F.renderer.header = "jqueryui") : F.renderer = "jqueryui") : a.extend(L, qe.ext.classes, g.oClasses), C.addClass(L.sTable), F.iInitDisplayStart === n && (F.iInitDisplayStart = g.iDisplayStart, F._iDisplayStart = g.iDisplayStart), null !== g.iDeferLoading) {
                    F.bDeferLoading = !0;
                    var P = a.isArray(g.iDeferLoading);
                    F._iRecordsDisplay = P ? g.iDeferLoading[0] : g.iDeferLoading, F._iRecordsTotal = P ? g.iDeferLoading[1] : g.iDeferLoading
                }
                var R = F.oLanguage;
                a.extend(!0, R, g.oLanguage), "" !== R.sUrl && (a.ajax({
                    dataType: "json",
                    url: R.sUrl,
                    success: function (t) {
                        i(t), o(_.oLanguage, t), a.extend(!0, R, t), se(F)
                    },
                    error: function () {
                        se(F)
                    }
                }), S = !0), null === g.asStripeClasses && (F.asStripeClasses = [L.sStripeOdd, L.sStripeEven]);
                var j = F.asStripeClasses, H = C.children("tbody").find("tr").eq(0);
                -1 !== a.inArray(!0, a.map(j, function (t) {
                    return H.hasClass(t)
                })) && (a("tbody tr", this).removeClass(j.join(" ")), F.asDestroyStripes = j.slice());
                var N, O = [], k = this.getElementsByTagName("thead");
                if (0 !== k.length && (E(F.aoHeader, k[0]), O = B(F)), null === g.aoColumns)for (N = [], b = 0, h = O.length; h > b; b++)N.push(null); else N = g.aoColumns;
                for (b = 0, h = N.length; h > b; b++)f(F, O ? O[b] : null);
                if (m(F, g.aoColumnDefs, N, function (t, e) {
                        d(F, t, e)
                    }), H.length) {
                    var M = function (t, e) {
                        return null !== t.getAttribute("data-" + e) ? e : null
                    };
                    a(H[0]).children("th, td").each(function (t, e) {
                        var a = F.aoColumns[t];
                        if (a.mData === t) {
                            var r = M(e, "sort") || M(e, "order"), o = M(e, "filter") || M(e, "search");
                            (null !== r || null !== o) && (a.mData = {
                                _: t + ".display",
                                sort: null !== r ? t + ".@data-" + r : n,
                                type: null !== r ? t + ".@data-" + r : n,
                                filter: null !== o ? t + ".@data-" + o : n
                            }, d(F, t))
                        }
                    })
                }
                var W = F.oFeatures;
                if (g.bStateSave && (W.bStateSave = !0, Re(F, g), Me(F, "aoDrawCallback", Pe, "state_save")), g.aaSorting === n) {
                    var U = F.aaSorting;
                    for (b = 0, h = U.length; h > b; b++)U[b][1] = F.aoColumns[b].asSorting[0]
                }
                Fe(F), W.bSort && Me(F, "aoDrawCallback", function () {
                    if (F.bSorted) {
                        var t = Te(F), e = {};
                        a.each(t, function (t, n) {
                            e[n.src] = n.dir
                        }), We(F, null, "order", [F, t, e]), xe(F)
                    }
                }), Me(F, "aoDrawCallback", function () {
                    (F.bSorted || "ssp" === Be(F) || W.bDeferRender) && Fe(F)
                }, "sc");
                var J = C.children("caption").each(function () {
                    this._captionSide = C.css("caption-side")
                }), X = C.children("thead");
                0 === X.length && (X = a("<thead/>").appendTo(this)), F.nTHead = X[0];
                var V = C.children("tbody");
                0 === V.length && (V = a("<tbody/>").appendTo(this)), F.nTBody = V[0];
                var q = C.children("tfoot");
                if (0 === q.length && J.length > 0 && ("" !== F.oScroll.sX || "" !== F.oScroll.sY) && (q = a("<tfoot/>").appendTo(this)), 0 === q.length || 0 === q.children().length ? C.addClass(L.sNoFooter) : q.length > 0 && (F.nTFoot = q[0], E(F.aoFooter, F.nTFoot)), g.aaData)for (b = 0; b < g.aaData.length; b++)D(F, g.aaData[b]); else(F.bDeferLoading || "dom" == Be(F)) && y(F, a(F.nTBody).children("tr"));
                F.aiDisplay = F.aiDisplayMaster.slice(), F.bInitialised = !0, S === !1 && se(F)
            }), e = null, this
        };
        var Cn = [], Tn = Array.prototype, wn = function (t) {
            var e, n, r = qe.settings, o = a.map(r, function (t) {
                return t.nTable
            });
            return t ? t.nTable && t.oApi ? [t] : t.nodeName && "table" === t.nodeName.toLowerCase() ? (e = a.inArray(t, o), -1 !== e ? [r[e]] : null) : t && "function" == typeof t.settings ? t.settings().toArray() : ("string" == typeof t ? n = a(t) : t instanceof a && (n = t), n ? n.map(function () {
                return e = a.inArray(this, o), -1 !== e ? r[e] : null
            }).toArray() : void 0) : []
        };
        $e = function (t, e) {
            if (!(this instanceof $e))return new $e(t, e);
            var n = [], r = function (t) {
                var e = wn(t);
                e && (n = n.concat(e))
            };
            if (a.isArray(t))for (var o = 0, i = t.length; i > o; o++)r(t[o]); else r(t);
            this.context = bn(n), e && a.merge(this, e), this.selector = {
                rows: null,
                cols: null,
                opts: null
            }, $e.extend(this, this, Cn)
        }, qe.Api = $e, a.extend($e.prototype, {
            any: function () {
                return 0 !== this.count()
            },
            concat: Tn.concat,
            context: [],
            count: function () {
                return this.flatten().length
            },
            each: function (t) {
                for (var e = 0, n = this.length; n > e; e++)t.call(this, this[e], e, this);
                return this
            },
            eq: function (t) {
                var e = this.context;
                return e.length > t ? new $e(e[t], this[t]) : null
            },
            filter: function (t) {
                var e = [];
                if (Tn.filter)e = Tn.filter.call(this, t, this); else for (var n = 0, a = this.length; a > n; n++)t.call(this, this[n], n, this) && e.push(this[n]);
                return new $e(this.context, e)
            },
            flatten: function () {
                var t = [];
                return new $e(this.context, t.concat.apply(t, this.toArray()))
            },
            join: Tn.join,
            indexOf: Tn.indexOf || function (t, e) {
                for (var n = e || 0, a = this.length; a > n; n++)if (this[n] === t)return n;
                return -1
            },
            iterator: function (t, e, a, r) {
                var o, i, s, l, u, c, f, d, h = [], p = this.context, g = this.selector;
                for ("string" == typeof t && (r = a, a = e, e = t, t = !1), i = 0, s = p.length; s > i; i++) {
                    var b = new $e(p[i]);
                    if ("table" === e)o = a.call(b, p[i], i), o !== n && h.push(o); else if ("columns" === e || "rows" === e)o = a.call(b, p[i], this[i], i), o !== n && h.push(o); else if ("column" === e || "column-rows" === e || "row" === e || "cell" === e)for (f = this[i], "column-rows" === e && (c = Pn(p[i], g.opts)), l = 0, u = f.length; u > l; l++)d = f[l], o = "cell" === e ? a.call(b, p[i], d.row, d.column, i, l) : a.call(b, p[i], d, i, l, c), o !== n && h.push(o)
                }
                if (h.length || r) {
                    var v = new $e(p, t ? h.concat.apply([], h) : h), S = v.selector;
                    return S.rows = g.rows, S.cols = g.cols, S.opts = g.opts, v
                }
                return this
            },
            lastIndexOf: Tn.lastIndexOf || function () {
                return this.indexOf.apply(this.toArray.reverse(), arguments)
            },
            length: 0,
            map: function (t) {
                var e = [];
                if (Tn.map)e = Tn.map.call(this, t, this); else for (var n = 0, a = this.length; a > n; n++)e.push(t.call(this, this[n], n));
                return new $e(this.context, e)
            },
            pluck: function (t) {
                return this.map(function (e) {
                    return e[t]
                })
            },
            pop: Tn.pop,
            push: Tn.push,
            reduce: Tn.reduce || function (t, e) {
                return c(this, t, e, 0, this.length, 1)
            },
            reduceRight: Tn.reduceRight || function (t, e) {
                return c(this, t, e, this.length - 1, -1, -1)
            },
            reverse: Tn.reverse,
            selector: null,
            shift: Tn.shift,
            sort: Tn.sort,
            splice: Tn.splice,
            toArray: function () {
                return Tn.slice.call(this)
            },
            to$: function () {
                return a(this)
            },
            toJQuery: function () {
                return a(this)
            },
            unique: function () {
                return new $e(this.context, bn(this))
            },
            unshift: Tn.unshift
        }), $e.extend = function (t, e, n) {
            if (n.length && e && (e instanceof $e || e.__dt_wrapper)) {
                var r, o, i, s = function (t, e, n) {
                    return function () {
                        var a = e.apply(t, arguments);
                        return $e.extend(a, a, n.methodExt), a
                    }
                };
                for (r = 0, o = n.length; o > r; r++)i = n[r], e[i.name] = "function" == typeof i.val ? s(t, i.val, i) : a.isPlainObject(i.val) ? {} : i.val, e[i.name].__dt_wrapper = !0, $e.extend(t, e[i.name], i.propExt)
            }
        }, $e.register = ze = function (t, e) {
            if (a.isArray(t))for (var n = 0, r = t.length; r > n; n++)$e.register(t[n], e); else {
                var o, i, s, l, u = t.split("."), c = Cn, f = function (t, e) {
                    for (var n = 0, a = t.length; a > n; n++)if (t[n].name === e)return t[n];
                    return null
                };
                for (o = 0, i = u.length; i > o; o++) {
                    l = -1 !== u[o].indexOf("()"), s = l ? u[o].replace("()", "") : u[o];
                    var d = f(c, s);
                    d || (d = {
                        name: s,
                        val: {},
                        methodExt: [],
                        propExt: []
                    }, c.push(d)), o === i - 1 ? d.val = e : c = l ? d.methodExt : d.propExt
                }
            }
        }, $e.registerPlural = Ye = function (t, e, r) {
            $e.register(t, r), $e.register(e, function () {
                var t = r.apply(this, arguments);
                return t === this ? this : t instanceof $e ? t.length ? a.isArray(t[0]) ? new $e(t.context, t[0]) : t[0] : n : t
            })
        };
        var xn = function (t, e) {
            if ("number" == typeof t)return [e[t]];
            var n = a.map(e, function (t) {
                return t.nTable
            });
            return a(n).filter(t).map(function () {
                var t = a.inArray(this, n);
                return e[t]
            }).toArray()
        };
        ze("tables()", function (t) {
            return t ? new $e(xn(t, this.context)) : this
        }), ze("table()", function (t) {
            var e = this.tables(t), n = e.context;
            return n.length ? new $e(n[0]) : e
        }), Ye("tables().nodes()", "table().node()", function () {
            return this.iterator("table", function (t) {
                return t.nTable
            }, 1)
        }), Ye("tables().body()", "table().body()", function () {
            return this.iterator("table", function (t) {
                return t.nTBody
            }, 1)
        }), Ye("tables().header()", "table().header()", function () {
            return this.iterator("table", function (t) {
                return t.nTHead
            }, 1)
        }), Ye("tables().footer()", "table().footer()", function () {
            return this.iterator("table", function (t) {
                return t.nTFoot
            }, 1)
        }), Ye("tables().containers()", "table().container()", function () {
            return this.iterator("table", function (t) {
                return t.nTableWrapper
            }, 1)
        }), ze("draw()", function (t) {
            return this.iterator("table", function (e) {
                "page" === t ? M(e) : ("string" == typeof t && (t = "full-hold" === t ? !1 : !0), W(e, t === !1))
            })
        }), ze("page()", function (t) {
            return t === n ? this.page.info().page : this.iterator("table", function (e) {
                de(e, t)
            })
        }), ze("page.info()", function () {
            if (0 === this.context.length)return n;
            var t = this.context[0], e = t._iDisplayStart, a = t._iDisplayLength, r = t.fnRecordsDisplay(), o = -1 === a;
            return {
                page: o ? 0 : Math.floor(e / a),
                pages: o ? 1 : Math.ceil(r / a),
                start: e,
                end: t.fnDisplayEnd(),
                length: a,
                recordsTotal: t.fnRecordsTotal(),
                recordsDisplay: r,
                serverSide: "ssp" === Be(t)
            }
        }), ze("page.len()", function (t) {
            return t === n ? 0 !== this.context.length ? this.context[0]._iDisplayLength : n : this.iterator("table", function (e) {
                ue(e, t)
            })
        });
        var In = function (t, e, n) {
            if (n) {
                var a = new $e(t);
                a.one("draw", function () {
                    n(a.ajax.json())
                })
            }
            if ("ssp" == Be(t))W(t, e); else {
                pe(t, !0);
                var r = t.jqXHR;
                r && 4 !== r.readyState && r.abort(), J(t, [], function (n) {
                    L(t);
                    for (var a = G(t, n), r = 0, o = a.length; o > r; r++)D(t, a[r]);
                    W(t, e), pe(t, !1)
                })
            }
        };
        ze("ajax.json()", function () {
            var t = this.context;
            return t.length > 0 ? t[0].json : void 0
        }), ze("ajax.params()", function () {
            var t = this.context;
            return t.length > 0 ? t[0].oAjaxData : void 0
        }), ze("ajax.reload()", function (t, e) {
            return this.iterator("table", function (n) {
                In(n, e === !1, t)
            })
        }), ze("ajax.url()", function (t) {
            var e = this.context;
            return t === n ? 0 === e.length ? n : (e = e[0], e.ajax ? a.isPlainObject(e.ajax) ? e.ajax.url : e.ajax : e.sAjaxSource) : this.iterator("table", function (e) {
                a.isPlainObject(e.ajax) ? e.ajax.url = t : e.ajax = t
            })
        }), ze("ajax.url().load()", function (t, e) {
            return this.iterator("table", function (n) {
                In(n, e === !1, t)
            })
        });
        var An = function (t, e, r, o, i) {
            var s, l, u, c, f, d, h = [], p = typeof e;
            for (e && "string" !== p && "function" !== p && e.length !== n || (e = [e]), u = 0, c = e.length; c > u; u++)for (l = e[u] && e[u].split ? e[u].split(",") : [e[u]], f = 0, d = l.length; d > f; f++)s = r("string" == typeof l[f] ? a.trim(l[f]) : l[f]), s && s.length && (h = h.concat(s));
            var g = Ge.selector[t];
            if (g.length)for (u = 0, c = g.length; c > u; u++)h = g[u](o, i, h);
            return bn(h)
        }, Fn = function (t) {
            return t || (t = {}), t.filter && t.search === n && (t.search = t.filter), a.extend({
                search: "none",
                order: "current",
                page: "all"
            }, t)
        }, Ln = function (t) {
            for (var e = 0, n = t.length; n > e; e++)if (t[e].length > 0)return t[0] = t[e], t[0].length = 1, t.length = 1, t.context = [t.context[e]], t;
            return t.length = 0, t
        }, Pn = function (t, e) {
            var n, r, o, i = [], s = t.aiDisplay, l = t.aiDisplayMaster, u = e.search, c = e.order, f = e.page;
            if ("ssp" == Be(t))return "removed" === u ? [] : hn(0, l.length);
            if ("current" == f)for (n = t._iDisplayStart, r = t.fnDisplayEnd(); r > n; n++)i.push(s[n]); else if ("current" == c || "applied" == c)i = "none" == u ? l.slice() : "applied" == u ? s.slice() : a.map(l, function (t) {
                return -1 === a.inArray(t, s) ? t : null
            }); else if ("index" == c || "original" == c)for (n = 0, r = t.aoData.length; r > n; n++)"none" == u ? i.push(n) : (o = a.inArray(n, s), (-1 === o && "removed" == u || o >= 0 && "applied" == u) && i.push(n));
            return i
        }, Rn = function (t, e, r) {
            var o = function (e) {
                var o = on(e);
                if (null !== o && !r)return [o];
                var i = Pn(t, r);
                if (null !== o && -1 !== a.inArray(o, i))return [o];
                if (!e)return i;
                if ("function" == typeof e)return a.map(i, function (n) {
                    var a = t.aoData[n];
                    return e(n, a._aData, a.nTr) ? n : null
                });
                var s = pn(dn(t.aoData, i, "nTr"));
                if (e.nodeName && -1 !== a.inArray(e, s))return [e._DT_RowIndex];
                if ("string" == typeof e && "#" === e.charAt(0)) {
                    var l = t.aIds[e.replace(/^#/, "")];
                    if (l !== n)return [l.idx]
                }
                return a(s).filter(e).map(function () {
                    return this._DT_RowIndex
                }).toArray()
            };
            return An("row", e, o, t, r)
        };
        ze("rows()", function (t, e) {
            t === n ? t = "" : a.isPlainObject(t) && (e = t, t = ""), e = Fn(e);
            var r = this.iterator("table", function (n) {
                return Rn(n, t, e)
            }, 1);
            return r.selector.rows = t, r.selector.opts = e, r
        }), ze("rows().nodes()", function () {
            return this.iterator("row", function (t, e) {
                return t.aoData[e].nTr || n
            }, 1)
        }), ze("rows().data()", function () {
            return this.iterator(!0, "rows", function (t, e) {
                return dn(t.aoData, e, "_aData")
            }, 1)
        }), Ye("rows().cache()", "row().cache()", function (t) {
            return this.iterator("row", function (e, n) {
                var a = e.aoData[n];
                return "search" === t ? a._aFilterData : a._aSortData
            }, 1)
        }), Ye("rows().invalidate()", "row().invalidate()", function (t) {
            return this.iterator("row", function (e, n) {
                R(e, n, t)
            })
        }), Ye("rows().indexes()", "row().index()", function () {
            return this.iterator("row", function (t, e) {
                return e
            }, 1)
        }), Ye("rows().ids()", "row().id()", function (t) {
            for (var e = [], n = this.context, a = 0, r = n.length; r > a; a++)for (var o = 0, i = this[a].length; i > o; o++) {
                var s = n[a].rowIdFn(n[a].aoData[this[a][o]]._aData);
                e.push((t === !0 ? "#" : "") + s)
            }
            return new $e(n, e)
        }), Ye("rows().remove()", "row().remove()", function () {
            var t = this;
            return this.iterator("row", function (e, a, r) {
                var o = e.aoData, i = o[a];
                o.splice(a, 1);
                for (var s = 0, l = o.length; l > s; s++)null !== o[s].nTr && (o[s].nTr._DT_RowIndex = s);
                P(e.aiDisplayMaster, a), P(e.aiDisplay, a), P(t[r], a, !1), Ue(e);
                var u = e.rowIdFn(i._aData);
                u !== n && delete e.aIds[u]
            }), this.iterator("table", function (t) {
                for (var e = 0, n = t.aoData.length; n > e; e++)t.aoData[e].idx = e
            }), this
        }), ze("rows.add()", function (t) {
            var e = this.iterator("table", function (e) {
                var n, a, r, o = [];
                for (a = 0, r = t.length; r > a; a++)n = t[a], o.push(n.nodeName && "TR" === n.nodeName.toUpperCase() ? y(e, n)[0] : D(e, n));
                return o
            }, 1), n = this.rows(-1);
            return n.pop(), a.merge(n, e), n
        }), ze("row()", function (t, e) {
            return Ln(this.rows(t, e))
        }), ze("row().data()", function (t) {
            var e = this.context;
            return t === n ? e.length && this.length ? e[0].aoData[this[0]]._aData : n : (e[0].aoData[this[0]]._aData = t, R(e[0], this[0], "data"), this)
        }), ze("row().node()", function () {
            var t = this.context;
            return t.length && this.length ? t[0].aoData[this[0]].nTr || null : null
        }), ze("row.add()", function (t) {
            t instanceof a && t.length && (t = t[0]);
            var e = this.iterator("table", function (e) {
                return t.nodeName && "TR" === t.nodeName.toUpperCase() ? y(e, t)[0] : D(e, t)
            });
            return this.row(e[0])
        });
        var jn = function (t, e, n, r) {
            var o = [], i = function (e, n) {
                if (a.isArray(e) || e instanceof a)for (var r = 0, s = e.length; s > r; r++)i(e[r], n); else if (e.nodeName && "tr" === e.nodeName.toLowerCase())o.push(e); else {
                    var l = a("<tr><td/></tr>").addClass(n);
                    a("td", l).addClass(n).html(e)[0].colSpan = b(t), o.push(l[0])
                }
            };
            i(n, r), e._details && e._details.remove(), e._details = a(o), e._detailsShow && e._details.insertAfter(e.nTr)
        }, Hn = function (t, e) {
            var a = t.context;
            if (a.length) {
                var r = a[0].aoData[e !== n ? e : t[0]];
                r && r._details && (r._details.remove(), r._detailsShow = n, r._details = n)
            }
        }, Nn = function (t, e) {
            var n = t.context;
            if (n.length && t.length) {
                var a = n[0].aoData[t[0]];
                a._details && (a._detailsShow = e, e ? a._details.insertAfter(a.nTr) : a._details.detach(), On(n[0]))
            }
        }, On = function (t) {
            var e = new $e(t), n = ".dt.DT_details", a = "draw" + n, r = "column-visibility" + n, o = "destroy" + n, i = t.aoData;
            e.off(a + " " + r + " " + o), fn(i, "_details").length > 0 && (e.on(a, function (n, a) {
                t === a && e.rows({page: "current"}).eq(0).each(function (t) {
                    var e = i[t];
                    e._detailsShow && e._details.insertAfter(e.nTr)
                })
            }), e.on(r, function (e, n) {
                if (t === n)for (var a, r = b(n), o = 0, s = i.length; s > o; o++)a = i[o], a._details && a._details.children("td[colspan]").attr("colspan", r)
            }), e.on(o, function (n, a) {
                if (t === a)for (var r = 0, o = i.length; o > r; r++)i[r]._details && Hn(e, r)
            }))
        }, kn = "", Mn = kn + "row().child", Wn = Mn + "()";
        ze(Wn, function (t, e) {
            var a = this.context;
            return t === n ? a.length && this.length ? a[0].aoData[this[0]]._details : n : (t === !0 ? this.child.show() : t === !1 ? Hn(this) : a.length && this.length && jn(a[0], a[0].aoData[this[0]], t, e), this)
        }), ze([Mn + ".show()", Wn + ".show()"], function () {
            return Nn(this, !0), this
        }), ze([Mn + ".hide()", Wn + ".hide()"], function () {
            return Nn(this, !1), this
        }), ze([Mn + ".remove()", Wn + ".remove()"], function () {
            return Hn(this), this
        }), ze(Mn + ".isShown()", function () {
            var t = this.context;
            return t.length && this.length ? t[0].aoData[this[0]]._detailsShow || !1 : !1
        });
        var Un = /^(.+):(name|visIdx|visible)$/, En = function (t, e, n, a, r) {
            for (var o = [], i = 0, s = r.length; s > i; i++)o.push(T(t, r[i], e));
            return o
        }, Bn = function (t, e, n) {
            var r = t.aoColumns, o = fn(r, "sName"), i = fn(r, "nTh"), s = function (e) {
                var s = on(e);
                if ("" === e)return hn(r.length);
                if (null !== s)return [s >= 0 ? s : r.length + s];
                if ("function" == typeof e) {
                    var l = Pn(t, n);
                    return a.map(r, function (n, a) {
                        return e(a, En(t, a, 0, 0, l), i[a]) ? a : null
                    })
                }
                var u = "string" == typeof e ? e.match(Un) : "";
                if (!u)return a(i).filter(e).map(function () {
                    return a.inArray(this, i)
                }).toArray();
                switch (u[2]) {
                    case"visIdx":
                    case"visible":
                        var c = parseInt(u[1], 10);
                        if (0 > c) {
                            var f = a.map(r, function (t, e) {
                                return t.bVisible ? e : null
                            });
                            return [f[f.length + c]]
                        }
                        return [p(t, c)];
                    case"name":
                        return a.map(o, function (t, e) {
                            return t === u[1] ? e : null
                        })
                }
            };
            return An("column", e, s, t, n)
        }, Jn = function (t, e, r, o) {
            var i, s, l, u, c = t.aoColumns, f = c[e], d = t.aoData;
            if (r === n)return f.bVisible;
            if (f.bVisible !== r) {
                if (r) {
                    var p = a.inArray(!0, fn(c, "bVisible"), e + 1);
                    for (s = 0, l = d.length; l > s; s++)u = d[s].nTr, i = d[s].anCells, u && u.insertBefore(i[e], i[p] || null)
                } else a(fn(t.aoData, "anCells", e)).detach();
                f.bVisible = r, k(t, t.aoHeader), k(t, t.aoFooter), (o === n || o) && (h(t), (t.oScroll.sX || t.oScroll.sY) && be(t)), We(t, null, "column-visibility", [t, e, r]), Pe(t)
            }
        };
        ze("columns()", function (t, e) {
            t === n ? t = "" : a.isPlainObject(t) && (e = t, t = ""), e = Fn(e);
            var r = this.iterator("table", function (n) {
                return Bn(n, t, e)
            }, 1);
            return r.selector.cols = t, r.selector.opts = e, r
        }), Ye("columns().header()", "column().header()", function () {
            return this.iterator("column", function (t, e) {
                return t.aoColumns[e].nTh
            }, 1)
        }), Ye("columns().footer()", "column().footer()", function () {
            return this.iterator("column", function (t, e) {
                return t.aoColumns[e].nTf
            }, 1)
        }), Ye("columns().data()", "column().data()", function () {
            return this.iterator("column-rows", En, 1)
        }), Ye("columns().dataSrc()", "column().dataSrc()", function () {
            return this.iterator("column", function (t, e) {
                return t.aoColumns[e].mData
            }, 1)
        }), Ye("columns().cache()", "column().cache()", function (t) {
            return this.iterator("column-rows", function (e, n, a, r, o) {
                return dn(e.aoData, o, "search" === t ? "_aFilterData" : "_aSortData", n)
            }, 1)
        }), Ye("columns().nodes()", "column().nodes()", function () {
            return this.iterator("column-rows", function (t, e, n, a, r) {
                return dn(t.aoData, r, "anCells", e)
            }, 1)
        }), Ye("columns().visible()", "column().visible()", function (t, e) {
            return this.iterator("column", function (a, r) {
                return t === n ? a.aoColumns[r].bVisible : void Jn(a, r, t, e)
            })
        }), Ye("columns().indexes()", "column().index()", function (t) {
            return this.iterator("column", function (e, n) {
                return "visible" === t ? g(e, n) : n
            }, 1)
        }), ze("columns.adjust()", function () {
            return this.iterator("table", function (t) {
                h(t)
            }, 1)
        }), ze("column.index()", function (t, e) {
            if (0 !== this.context.length) {
                var n = this.context[0];
                if ("fromVisible" === t || "toData" === t)return p(n, e);
                if ("fromData" === t || "toVisible" === t)return g(n, e)
            }
        }), ze("column()", function (t, e) {
            return Ln(this.columns(t, e))
        });
        var Xn = function (t, e, r) {
            var o, i, s, l, u, c, f, d = t.aoData, h = Pn(t, r), p = pn(dn(d, h, "anCells")), g = a([].concat.apply([], p)), b = t.aoColumns.length, v = function (e) {
                var r = "function" == typeof e;
                if (null === e || e === n || r) {
                    for (i = [], s = 0, l = h.length; l > s; s++)for (o = h[s], u = 0; b > u; u++)c = {
                        row: o,
                        column: u
                    }, r ? (f = d[o], e(c, T(t, o, u), f.anCells ? f.anCells[u] : null) && i.push(c)) : i.push(c);
                    return i
                }
                return a.isPlainObject(e) ? [e] : g.filter(e).map(function (t, e) {
                    if (e.parentNode)o = e.parentNode._DT_RowIndex; else for (t = 0, l = d.length; l > t; t++)if (-1 !== a.inArray(e, d[t].anCells)) {
                        o = t;
                        break
                    }
                    return {row: o, column: a.inArray(e, d[o].anCells)}
                }).toArray()
            };
            return An("cell", e, v, t, r)
        };
        ze("cells()", function (t, e, r) {
            if (a.isPlainObject(t) && (t.row === n ? (r = t, t = null) : (r = e, e = null)), a.isPlainObject(e) && (r = e, e = null), null === e || e === n)return this.iterator("table", function (e) {
                return Xn(e, t, Fn(r))
            });
            var o, i, s, l, u, c = this.columns(e, r), f = this.rows(t, r), d = this.iterator("table", function (t, e) {
                for (o = [], i = 0, s = f[e].length; s > i; i++)for (l = 0, u = c[e].length; u > l; l++)o.push({
                    row: f[e][i],
                    column: c[e][l]
                });
                return o
            }, 1);
            return a.extend(d.selector, {cols: e, rows: t, opts: r}), d
        }), Ye("cells().nodes()", "cell().node()", function () {
            return this.iterator("cell", function (t, e, a) {
                var r = t.aoData[e].anCells;
                return r ? r[a] : n
            }, 1)
        }), ze("cells().data()", function () {
            return this.iterator("cell", function (t, e, n) {
                return T(t, e, n)
            }, 1)
        }), Ye("cells().cache()", "cell().cache()", function (t) {
            return t = "search" === t ? "_aFilterData" : "_aSortData", this.iterator("cell", function (e, n, a) {
                return e.aoData[n][t][a]
            }, 1)
        }), Ye("cells().render()", "cell().render()", function (t) {
            return this.iterator("cell", function (e, n, a) {
                return T(e, n, a, t)
            }, 1)
        }), Ye("cells().indexes()", "cell().index()", function () {
            return this.iterator("cell", function (t, e, n) {
                return {row: e, column: n, columnVisible: g(t, n)}
            }, 1)
        }), Ye("cells().invalidate()", "cell().invalidate()", function (t) {
            return this.iterator("cell", function (e, n, a) {
                R(e, n, t, a)
            })
        }), ze("cell()", function (t, e, n) {
            return Ln(this.cells(t, e, n))
        }), ze("cell().data()", function (t) {
            var e = this.context, a = this[0];
            return t === n ? e.length && a.length ? T(e[0], a[0].row, a[0].column) : n : (w(e[0], a[0].row, a[0].column, t), R(e[0], a[0].row, "data", a[0].column), this)
        }), ze("order()", function (t, e) {
            var r = this.context;
            return t === n ? 0 !== r.length ? r[0].aaSorting : n : ("number" == typeof t ? t = [[t, e]] : a.isArray(t[0]) || (t = Array.prototype.slice.call(arguments)), this.iterator("table", function (e) {
                e.aaSorting = t.slice()
            }))
        }), ze("order.listener()", function (t, e, n) {
            return this.iterator("table", function (a) {
                Ae(a, t, e, n)
            })
        }), ze(["columns().order()", "column().order()"], function (t) {
            var e = this;
            return this.iterator("table", function (n, r) {
                var o = [];
                a.each(e[r], function (e, n) {
                    o.push([n, t])
                }), n.aaSorting = o
            })
        }), ze("search()", function (t, e, r, o) {
            var i = this.context;
            return t === n ? 0 !== i.length ? i[0].oPreviousSearch.sSearch : n : this.iterator("table", function (n) {
                n.oFeatures.bFilter && z(n, a.extend({}, n.oPreviousSearch, {
                    sSearch: t + "",
                    bRegex: null === e ? !1 : e,
                    bSmart: null === r ? !0 : r,
                    bCaseInsensitive: null === o ? !0 : o
                }), 1)
            })
        }), Ye("columns().search()", "column().search()", function (t, e, r, o) {
            return this.iterator("column", function (i, s) {
                var l = i.aoPreSearchCols;
                return t === n ? l[s].sSearch : void(i.oFeatures.bFilter && (a.extend(l[s], {
                    sSearch: t + "",
                    bRegex: null === e ? !1 : e,
                    bSmart: null === r ? !0 : r,
                    bCaseInsensitive: null === o ? !0 : o
                }), z(i, i.oPreviousSearch, 1)))
            })
        }), ze("state()", function () {
            return this.context.length ? this.context[0].oSavedState : null
        }), ze("state.clear()", function () {
            return this.iterator("table", function (t) {
                t.fnStateSaveCallback.call(t.oInstance, t, {})
            })
        }), ze("state.loaded()", function () {
            return this.context.length ? this.context[0].oLoadedState : null
        }), ze("state.save()", function () {
            return this.iterator("table", function (t) {
                Pe(t)
            })
        }), qe.versionCheck = qe.fnVersionCheck = function (t) {
            for (var e, n, a = qe.version.split("."), r = t.split("."), o = 0, i = r.length; i > o; o++)if (e = parseInt(a[o], 10) || 0, n = parseInt(r[o], 10) || 0, e !== n)return e > n;
            return !0
        }, qe.isDataTable = qe.fnIsDataTable = function (t) {
            var e = a(t).get(0), n = !1;
            return a.each(qe.settings, function (t, r) {
                var o = r.nScrollHead ? a("table", r.nScrollHead)[0] : null, i = r.nScrollFoot ? a("table", r.nScrollFoot)[0] : null;
                (r.nTable === e || o === e || i === e) && (n = !0)
            }), n
        }, qe.tables = qe.fnTables = function (t) {
            var e = !1;
            a.isPlainObject(t) && (e = t.api, t = t.visible);
            var n = a.map(qe.settings, function (e) {
                return !t || t && a(e.nTable).is(":visible") ? e.nTable : void 0
            });
            return e ? new $e(n) : n
        }, qe.util = {throttle: me, escapeRegex: te}, qe.camelToHungarian = o, ze("$()", function (t, e) {
            var n = this.rows(e).nodes(), r = a(n);
            return a([].concat(r.filter(t).toArray(), r.find(t).toArray()))
        }), a.each(["on", "one", "off"], function (t, e) {
            ze(e + "()", function () {
                var t = Array.prototype.slice.call(arguments);
                t[0].match(/\.dt\b/) || (t[0] += ".dt");
                var n = a(this.tables().nodes());
                return n[e].apply(n, t), this
            })
        }), ze("clear()", function () {
            return this.iterator("table", function (t) {
                L(t)
            })
        }), ze("settings()", function () {
            return new $e(this.context, this.context)
        }), ze("init()", function () {
            var t = this.context;
            return t.length ? t[0].oInit : null
        }), ze("data()", function () {
            return this.iterator("table", function (t) {
                return fn(t.aoData, "_aData")
            }).flatten()
        }), ze("destroy()", function (e) {
            return e = e || !1, this.iterator("table", function (n) {
                var r, o = n.nTableWrapper.parentNode, i = n.oClasses, s = n.nTable, l = n.nTBody, u = n.nTHead, c = n.nTFoot, f = a(s), d = a(l), h = a(n.nTableWrapper), p = a.map(n.aoData, function (t) {
                    return t.nTr
                });
                n.bDestroying = !0, We(n, "aoDestroyCallback", "destroy", [n]), e || new $e(n).columns().visible(!0), h.unbind(".DT").find(":not(tbody *)").unbind(".DT"), a(t).unbind(".DT-" + n.sInstance), s != u.parentNode && (f.children("thead").detach(), f.append(u)), c && s != c.parentNode && (f.children("tfoot").detach(), f.append(c)), n.aaSorting = [], n.aaSortingFixed = [], Fe(n), a(p).removeClass(n.asStripeClasses.join(" ")), a("th, td", u).removeClass(i.sSortable + " " + i.sSortableAsc + " " + i.sSortableDesc + " " + i.sSortableNone), n.bJUI && (a("th span." + i.sSortIcon + ", td span." + i.sSortIcon, u).detach(), a("th, td", u).each(function () {
                    var t = a("div." + i.sSortJUIWrapper, this);
                    a(this).append(t.contents()), t.detach()
                })), d.children().detach(), d.append(p);
                var g = e ? "remove" : "detach";
                f[g](), h[g](), !e && o && (o.insertBefore(s, n.nTableReinsertBefore), f.css("width", n.sDestroyWidth).removeClass(i.sTable), r = n.asDestroyStripes.length, r && d.children().each(function (t) {
                    a(this).addClass(n.asDestroyStripes[t % r])
                }));
                var b = a.inArray(n, qe.settings);
                -1 !== b && qe.settings.splice(b, 1)
            })
        }), a.each(["column", "row", "cell"], function (t, e) {
            ze(e + "s().every()", function (t) {
                return this.iterator(e, function (a, r, o, i, s) {
                    t.call(new $e(a)[e](r, "cell" === e ? o : n), r, o, i, s)
                })
            })
        }), ze("i18n()", function (t, e, r) {
            var o = this.context[0], i = I(t)(o.oLanguage);
            return i === n && (i = e), r !== n && a.isPlainObject(i) && (i = i[r] !== n ? i[r] : i._), i.replace("%d", r)
        }), qe.version = "1.10.9", qe.settings = [], qe.models = {}, qe.models.oSearch = {
            bCaseInsensitive: !0,
            sSearch: "",
            bRegex: !1,
            bSmart: !0
        }, qe.models.oRow = {
            nTr: null,
            anCells: null,
            _aData: [],
            _aSortData: null,
            _aFilterData: null,
            _sFilterRow: null,
            _sRowStripe: "",
            src: null,
            idx: -1
        }, qe.models.oColumn = {
            idx: null,
            aDataSort: null,
            asSorting: null,
            bSearchable: null,
            bSortable: null,
            bVisible: null,
            _sManualType: null,
            _bAttrSrc: !1,
            fnCreatedCell: null,
            fnGetData: null,
            fnSetData: null,
            mData: null,
            mRender: null,
            nTh: null,
            nTf: null,
            sClass: null,
            sContentPadding: null,
            sDefaultContent: null,
            sName: null,
            sSortDataType: "std",
            sSortingClass: null,
            sSortingClassJUI: null,
            sTitle: null,
            sType: null,
            sWidth: null,
            sWidthOrig: null
        }, qe.defaults = {
            aaData: null,
            aaSorting: [[0, "asc"]],
            aaSortingFixed: [],
            ajax: null,
            aLengthMenu: [10, 25, 50, 100],
            aoColumns: null,
            aoColumnDefs: null,
            aoSearchCols: [],
            asStripeClasses: null,
            bAutoWidth: !0,
            bDeferRender: !1,
            bDestroy: !1,
            bFilter: !0,
            bInfo: !0,
            bJQueryUI: !1,
            bLengthChange: !0,
            bPaginate: !0,
            bProcessing: !1,
            bRetrieve: !1,
            bScrollCollapse: !1,
            bServerSide: !1,
            bSort: !0,
            bSortMulti: !0,
            bSortCellsTop: !1,
            bSortClasses: !0,
            bStateSave: !1,
            fnCreatedRow: null,
            fnDrawCallback: null,
            fnFooterCallback: null,
            fnFormatNumber: function (t) {
                return t.toString().replace(/\B(?=(\d{3})+(?!\d))/g, this.oLanguage.sThousands)
            },
            fnHeaderCallback: null,
            fnInfoCallback: null,
            fnInitComplete: null,
            fnPreDrawCallback: null,
            fnRowCallback: null,
            fnServerData: null,
            fnServerParams: null,
            fnStateLoadCallback: function (t) {
                try {
                    return JSON.parse((-1 === t.iStateDuration ? sessionStorage : localStorage).getItem("DataTables_" + t.sInstance + "_" + location.pathname))
                } catch (e) {
                }
            },
            fnStateLoadParams: null,
            fnStateLoaded: null,
            fnStateSaveCallback: function (t, e) {
                try {
                    (-1 === t.iStateDuration ? sessionStorage : localStorage).setItem("DataTables_" + t.sInstance + "_" + location.pathname, JSON.stringify(e))
                } catch (n) {
                }
            },
            fnStateSaveParams: null,
            iStateDuration: 7200,
            iDeferLoading: null,
            iDisplayLength: 10,
            iDisplayStart: 0,
            iTabIndex: 0,
            oClasses: {},
            oLanguage: {
                oAria: {
                    sSortAscending: ": activate to sort column ascending",
                    sSortDescending: ": activate to sort column descending"
                },
                oPaginate: {sFirst: "First", sLast: "Last", sNext: "Next", sPrevious: "Previous"},
                sEmptyTable: "No data available in table",
                sInfo: "Showing _START_ to _END_ of _TOTAL_ entries",
                sInfoEmpty: "Showing 0 to 0 of 0 entries",
                sInfoFiltered: "(filtered from _MAX_ total entries)",
                sInfoPostFix: "",
                sDecimal: "",
                sThousands: ",",
                sLengthMenu: "Show _MENU_ entries",
                sLoadingRecords: "Loading...",
                sProcessing: "Processing...",
                sSearch: "Search:",
                sSearchPlaceholder: "",
                sUrl: "",
                sZeroRecords: "No matching records found"
            },
            oSearch: a.extend({}, qe.models.oSearch),
            sAjaxDataProp: "data",
            sAjaxSource: null,
            sDom: "lfrtip",
            searchDelay: null,
            sPaginationType: "simple_numbers",
            sScrollX: "",
            sScrollXInner: "",
            sScrollY: "",
            sServerMethod: "GET",
            renderer: null,
            rowId: "DT_RowId"
        }, r(qe.defaults), qe.defaults.column = {
            aDataSort: null,
            iDataSort: -1,
            asSorting: ["asc", "desc"],
            bSearchable: !0,
            bSortable: !0,
            bVisible: !0,
            fnCreatedCell: null,
            mData: null,
            mRender: null,
            sCellType: "td",
            sClass: "",
            sContentPadding: "",
            sDefaultContent: null,
            sName: "",
            sSortDataType: "std",
            sTitle: null,
            sType: null,
            sWidth: null
        }, r(qe.defaults.column), qe.models.oSettings = {
            oFeatures: {
                bAutoWidth: null,
                bDeferRender: null,
                bFilter: null,
                bInfo: null,
                bLengthChange: null,
                bPaginate: null,
                bProcessing: null,
                bServerSide: null,
                bSort: null,
                bSortMulti: null,
                bSortClasses: null,
                bStateSave: null
            },
            oScroll: {bCollapse: null, iBarWidth: 0, sX: null, sXInner: null, sY: null},
            oLanguage: {fnInfoCallback: null},
            oBrowser: {bScrollOversize: !1, bScrollbarLeft: !1, bBounding: !1, barWidth: 0},
            ajax: null,
            aanFeatures: [],
            aoData: [],
            aiDisplay: [],
            aiDisplayMaster: [],
            aIds: {},
            aoColumns: [],
            aoHeader: [],
            aoFooter: [],
            oPreviousSearch: {},
            aoPreSearchCols: [],
            aaSorting: null,
            aaSortingFixed: [],
            asStripeClasses: null,
            asDestroyStripes: [],
            sDestroyWidth: 0,
            aoRowCallback: [],
            aoHeaderCallback: [],
            aoFooterCallback: [],
            aoDrawCallback: [],
            aoRowCreatedCallback: [],
            aoPreDrawCallback: [],
            aoInitComplete: [],
            aoStateSaveParams: [],
            aoStateLoadParams: [],
            aoStateLoaded: [],
            sTableId: "",
            nTable: null,
            nTHead: null,
            nTFoot: null,
            nTBody: null,
            nTableWrapper: null,
            bDeferLoading: !1,
            bInitialised: !1,
            aoOpenRows: [],
            sDom: null,
            searchDelay: null,
            sPaginationType: "two_button",
            iStateDuration: 0,
            aoStateSave: [],
            aoStateLoad: [],
            oSavedState: null,
            oLoadedState: null,
            sAjaxSource: null,
            sAjaxDataProp: null,
            bAjaxDataGet: !0,
            jqXHR: null,
            json: n,
            oAjaxData: n,
            fnServerData: null,
            aoServerParams: [],
            sServerMethod: null,
            fnFormatNumber: null,
            aLengthMenu: null,
            iDraw: 0,
            bDrawing: !1,
            iDrawError: -1,
            _iDisplayLength: 10,
            _iDisplayStart: 0,
            _iRecordsTotal: 0,
            _iRecordsDisplay: 0,
            bJUI: null,
            oClasses: {},
            bFiltered: !1,
            bSorted: !1,
            bSortCellsTop: null,
            oInit: null,
            aoDestroyCallback: [],
            fnRecordsTotal: function () {
                return "ssp" == Be(this) ? 1 * this._iRecordsTotal : this.aiDisplayMaster.length
            },
            fnRecordsDisplay: function () {
                return "ssp" == Be(this) ? 1 * this._iRecordsDisplay : this.aiDisplay.length
            },
            fnDisplayEnd: function () {
                var t = this._iDisplayLength, e = this._iDisplayStart, n = e + t, a = this.aiDisplay.length, r = this.oFeatures, o = r.bPaginate;
                return r.bServerSide ? o === !1 || -1 === t ? e + a : Math.min(e + t, this._iRecordsDisplay) : !o || n > a || -1 === t ? a : n
            },
            oInstance: null,
            sInstance: null,
            iTabIndex: 0,
            nScrollHead: null,
            nScrollFoot: null,
            aLastSort: [],
            oPlugins: {},
            rowIdFn: null,
            rowId: null
        }, qe.ext = Ge = {
            buttons: {},
            classes: {},
            errMode: "alert",
            feature: [],
            search: [],
            selector: {cell: [], column: [], row: []},
            internal: {},
            legacy: {ajax: null},
            pager: {},
            renderer: {pageButton: {}, header: {}},
            order: {},
            type: {detect: [], search: {}, order: {}},
            _unique: 0,
            fnVersionCheck: qe.fnVersionCheck,
            iApiIndex: 0,
            oJUIClasses: {},
            sVersion: qe.version
        }, a.extend(Ge, {
            afnFiltering: Ge.search,
            aTypes: Ge.type.detect,
            ofnSearch: Ge.type.search,
            oSort: Ge.type.order,
            afnSortData: Ge.order,
            aoFeatures: Ge.feature,
            oApi: Ge.internal,
            oStdClasses: Ge.classes,
            oPagination: Ge.pager
        }), a.extend(qe.ext.classes, {
            sTable: "dataTable",
            sNoFooter: "no-footer",
            sPageButton: "paginate_button",
            sPageButtonActive: "current",
            sPageButtonDisabled: "disabled",
            sStripeOdd: "odd",
            sStripeEven: "even",
            sRowEmpty: "dataTables_empty",
            sWrapper: "dataTables_wrapper",
            sFilter: "dataTables_filter",
            sInfo: "dataTables_info",
            sPaging: "dataTables_paginate paging_",
            sLength: "dataTables_length",
            sProcessing: "dataTables_processing",
            sSortAsc: "sorting_asc",
            sSortDesc: "sorting_desc",
            sSortable: "sorting",
            sSortableAsc: "sorting_asc_disabled",
            sSortableDesc: "sorting_desc_disabled",
            sSortableNone: "sorting_disabled",
            sSortColumn: "sorting_",
            sFilterInput: "",
            sLengthSelect: "",
            sScrollWrapper: "dataTables_scroll",
            sScrollHead: "dataTables_scrollHead",
            sScrollHeadInner: "dataTables_scrollHeadInner",
            sScrollBody: "dataTables_scrollBody",
            sScrollFoot: "dataTables_scrollFoot",
            sScrollFootInner: "dataTables_scrollFootInner",
            sHeaderTH: "",
            sFooterTH: "",
            sSortJUIAsc: "",
            sSortJUIDesc: "",
            sSortJUI: "",
            sSortJUIAscAllowed: "",
            sSortJUIDescAllowed: "",
            sSortJUIWrapper: "",
            sSortIcon: "",
            sJUIHeader: "",
            sJUIFooter: ""
        }), function () {
            var t = "";
            t = "";
            var e = t + "ui-state-default", n = t + "css_right ui-icon ui-icon-", r = t + "fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix";
            a.extend(qe.ext.oJUIClasses, qe.ext.classes, {
                sPageButton: "fg-button ui-button " + e,
                sPageButtonActive: "ui-state-disabled",
                sPageButtonDisabled: "ui-state-disabled",
                sPaging: "dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_",
                sSortAsc: e + " sorting_asc",
                sSortDesc: e + " sorting_desc",
                sSortable: e + " sorting",
                sSortableAsc: e + " sorting_asc_disabled",
                sSortableDesc: e + " sorting_desc_disabled",
                sSortableNone: e + " sorting_disabled",
                sSortJUIAsc: n + "triangle-1-n",
                sSortJUIDesc: n + "triangle-1-s",
                sSortJUI: n + "carat-2-n-s",
                sSortJUIAscAllowed: n + "carat-1-n",
                sSortJUIDescAllowed: n + "carat-1-s",
                sSortJUIWrapper: "DataTables_sort_wrapper",
                sSortIcon: "DataTables_sort_icon",
                sScrollHead: "dataTables_scrollHead " + e,
                sScrollFoot: "dataTables_scrollFoot " + e,
                sHeaderTH: e,
                sFooterTH: e,
                sJUIHeader: r + " ui-corner-tl ui-corner-tr",
                sJUIFooter: r + " ui-corner-bl ui-corner-br"
            })
        }();
        var Vn = qe.ext.pager;
        a.extend(Vn, {
            simple: function () {
                return ["previous", "next"]
            }, full: function () {
                return ["first", "previous", "next", "last"]
            }, numbers: function (t, e) {
                return [Je(t, e)]
            }, simple_numbers: function (t, e) {
                return ["previous", Je(t, e), "next"]
            }, full_numbers: function (t, e) {
                return ["first", "previous", Je(t, e), "next", "last"]
            }, _numbers: Je, numbers_length: 7
        }), a.extend(!0, qe.ext.renderer, {
            pageButton: {
                _: function (t, n, r, o, i, s) {
                    var l, u, c, f = t.oClasses, d = t.oLanguage.oPaginate, h = 0, p = function (e, n) {
                        var o, c, g, b, v = function (e) {
                            de(t, e.data.action, !0)
                        };
                        for (o = 0, c = n.length; c > o; o++)if (b = n[o], a.isArray(b)) {
                            var S = a("<" + (b.DT_el || "div") + "/>").appendTo(e);
                            p(S, b)
                        } else {
                            switch (l = null, u = "", b) {
                                case"ellipsis":
                                    e.append('<span class="ellipsis">&#x2026;</span>');
                                    break;
                                case"first":
                                    l = d.sFirst, u = b + (i > 0 ? "" : " " + f.sPageButtonDisabled);
                                    break;
                                case"previous":
                                    l = d.sPrevious, u = b + (i > 0 ? "" : " " + f.sPageButtonDisabled);
                                    break;
                                case"next":
                                    l = d.sNext, u = b + (s - 1 > i ? "" : " " + f.sPageButtonDisabled);
                                    break;
                                case"last":
                                    l = d.sLast, u = b + (s - 1 > i ? "" : " " + f.sPageButtonDisabled);
                                    break;
                                default:
                                    l = b + 1, u = i === b ? f.sPageButtonActive : ""
                            }
                            null !== l && (g = a("<a>", {
                                "class": f.sPageButton + " " + u,
                                "aria-controls": t.sTableId,
                                "data-dt-idx": h,
                                tabindex: t.iTabIndex,
                                id: 0 === r && "string" == typeof b ? t.sTableId + "_" + b : null
                            }).html(l).appendTo(e), ke(g, {action: b}, v), h++)
                        }
                    };
                    try {
                        c = a(n).find(e.activeElement).data("dt-idx")
                    } catch (g) {
                    }
                    p(a(n).empty(), o), c && a(n).find("[data-dt-idx=" + c + "]").focus()
                }
            }
        }), a.extend(qe.ext.type.detect, [function (t, e) {
            var n = e.oLanguage.sDecimal;
            return ln(t, n) ? "num" + n : null
        }, function (t) {
            if (!(!t || t instanceof Date || tn.test(t) && en.test(t)))return null;
            var e = Date.parse(t);
            return null !== e && !isNaN(e) || rn(t) ? "date" : null
        }, function (t, e) {
            var n = e.oLanguage.sDecimal;
            return ln(t, n, !0) ? "num-fmt" + n : null
        }, function (t, e) {
            var n = e.oLanguage.sDecimal;
            return cn(t, n) ? "html-num" + n : null
        }, function (t, e) {
            var n = e.oLanguage.sDecimal;
            return cn(t, n, !0) ? "html-num-fmt" + n : null
        }, function (t) {
            return rn(t) || "string" == typeof t && -1 !== t.indexOf("<") ? "html" : null
        }]), a.extend(qe.ext.type.search, {
            html: function (t) {
                return rn(t) ? t : "string" == typeof t ? t.replace(Ze, " ").replace(Ke, "") : ""
            }, string: function (t) {
                return rn(t) ? t : "string" == typeof t ? t.replace(Ze, " ") : t
            }
        });
        var qn = function (t, e, n, a) {
            return 0 === t || t && "-" !== t ? (e && (t = sn(t, e)), t.replace && (n && (t = t.replace(n, "")), a && (t = t.replace(a, ""))), 1 * t) : -1 / 0
        };
        return a.extend(Ge.type.order, {
            "date-pre": function (t) {
                return Date.parse(t) || 0
            }, "html-pre": function (t) {
                return rn(t) ? "" : t.replace ? t.replace(/<.*?>/g, "").toLowerCase() : t + ""
            }, "string-pre": function (t) {
                return rn(t) ? "" : "string" == typeof t ? t.toLowerCase() : t.toString ? t.toString() : ""
            }, "string-asc": function (t, e) {
                return e > t ? -1 : t > e ? 1 : 0
            }, "string-desc": function (t, e) {
                return e > t ? 1 : t > e ? -1 : 0
            }
        }), Xe(""), a.extend(!0, qe.ext.renderer, {
            header: {
                _: function (t, e, n, r) {
                    a(t.nTable).on("order.dt.DT", function (a, o, i, s) {
                        if (t === o) {
                            var l = n.idx;
                            e.removeClass(n.sSortingClass + " " + r.sSortAsc + " " + r.sSortDesc).addClass("asc" == s[l] ? r.sSortAsc : "desc" == s[l] ? r.sSortDesc : n.sSortingClass)
                        }
                    })
                }, jqueryui: function (t, e, n, r) {
                    a("<div/>").addClass(r.sSortJUIWrapper).append(e.contents()).append(a("<span/>").addClass(r.sSortIcon + " " + n.sSortingClassJUI)).appendTo(e), a(t.nTable).on("order.dt.DT", function (a, o, i, s) {
                        if (t === o) {
                            var l = n.idx;
                            e.removeClass(r.sSortAsc + " " + r.sSortDesc).addClass("asc" == s[l] ? r.sSortAsc : "desc" == s[l] ? r.sSortDesc : n.sSortingClass), e.find("span." + r.sSortIcon).removeClass(r.sSortJUIAsc + " " + r.sSortJUIDesc + " " + r.sSortJUI + " " + r.sSortJUIAscAllowed + " " + r.sSortJUIDescAllowed).addClass("asc" == s[l] ? r.sSortJUIAsc : "desc" == s[l] ? r.sSortJUIDesc : n.sSortingClassJUI)
                        }
                    })
                }
            }
        }), qe.render = {
            number: function (t, e, n, a, r) {
                return {
                    display: function (o) {
                        if ("number" != typeof o && "string" != typeof o)return o;
                        var i = 0 > o ? "-" : "";
                        o = Math.abs(parseFloat(o));
                        var s = parseInt(o, 10), l = n ? e + (o - s).toFixed(n).substring(2) : "";
                        return i + (a || "") + s.toString().replace(/\B(?=(\d{3})+(?!\d))/g, t) + l + (r || "")
                    }
                }
            }
        }, a.extend(qe.ext.internal, {
            _fnExternApiFunc: Ve,
            _fnBuildAjax: J,
            _fnAjaxUpdate: X,
            _fnAjaxParameters: V,
            _fnAjaxUpdateDraw: q,
            _fnAjaxDataSrc: G,
            _fnAddColumn: f,
            _fnColumnOptions: d,
            _fnAdjustColumnSizing: h,
            _fnVisibleToColumnIndex: p,
            _fnColumnIndexToVisible: g,
            _fnVisbleColumns: b,
            _fnGetColumns: v,
            _fnColumnTypes: S,
            _fnApplyColumnDefs: m,
            _fnHungarianMap: r,
            _fnCamelToHungarian: o,
            _fnLanguageCompat: i,
            _fnBrowserDetect: u,
            _fnAddData: D,
            _fnAddTr: y,
            _fnNodeToDataIndex: _,
            _fnNodeToColumnIndex: C,
            _fnGetCellData: T,
            _fnSetCellData: w,
            _fnSplitObjNotation: x,
            _fnGetObjectDataFn: I,
            _fnSetObjectDataFn: A,
            _fnGetDataMaster: F,
            _fnClearTable: L,
            _fnDeleteIndex: P,
            _fnInvalidate: R,
            _fnGetRowElements: j,
            _fnCreateTr: H,
            _fnBuildHead: O,
            _fnDrawHead: k,
            _fnDraw: M,
            _fnReDraw: W,
            _fnAddOptionsHtml: U,
            _fnDetectHeader: E,
            _fnGetUniqueThs: B,
            _fnFeatureHtmlFilter: $,
            _fnFilterComplete: z,
            _fnFilterCustom: Y,
            _fnFilterColumn: Q,
            _fnFilter: Z,
            _fnFilterCreateSearch: K,
            _fnEscapeRegex: te,
            _fnFilterData: ee,
            _fnFeatureHtmlInfo: re,
            _fnUpdateInfo: oe,
            _fnInfoMacros: ie,
            _fnInitialise: se,
            _fnInitComplete: le,
            _fnLengthChange: ue,
            _fnFeatureHtmlLength: ce,
            _fnFeatureHtmlPaginate: fe,
            _fnPageChange: de,
            _fnFeatureHtmlProcessing: he,
            _fnProcessingDisplay: pe,
            _fnFeatureHtmlTable: ge,
            _fnScrollDraw: be,
            _fnApplyToChildren: ve,
            _fnCalculateColumnWidths: Se,
            _fnThrottle: me,
            _fnConvertToWidth: De,
            _fnGetWidestNode: ye,
            _fnGetMaxLenString: _e,
            _fnStringToCss: Ce,
            _fnSortFlatten: Te,
            _fnSort: we,
            _fnSortAria: xe,
            _fnSortListener: Ie,
            _fnSortAttachListener: Ae,
            _fnSortingClasses: Fe,
            _fnSortData: Le,
            _fnSaveState: Pe,
            _fnLoadState: Re,
            _fnSettingsFromNode: je,
            _fnLog: He,
            _fnMap: Ne,
            _fnBindAction: ke,
            _fnCallbackReg: Me,
            _fnCallbackFire: We,
            _fnLengthOverflow: Ue,
            _fnRenderer: Ee,
            _fnDataSource: Be,
            _fnRowAttributes: N,
            _fnCalculateEnd: function () {
            }
        }), a.fn.dataTable = qe, a.fn.dataTableSettings = qe.settings, a.fn.dataTableExt = qe.ext, a.fn.DataTable = function (t) {
            return a(this).dataTable(t).api()
        }, a.each(qe, function (t, e) {
            a.fn.DataTable[t] = e
        }), a.fn.dataTable
    })
}(window, document);