;(function (i) { 'function' === typeof define && define.amd ? define(['jquery', 'datatables.net', 'datatables.net-buttons'], function ( g ) { return i(g, window, document) }) : 'object' === typeof exports ? (module.exports = function (g, l, r, s) { g || (g = window) if (!l || !l.fn.dataTable) l = require('datatables.net')(g, l).$ l.fn.dataTable.Buttons || require('datatables.net-buttons')(g, l) return i(l, g, g.document, r, s) }) : i(jQuery, window, document) })(function (i, g, l, r, s, o) { function z(a, c) { t === o && (t = -1 === x .serializeToString(i.parseXML(A['xl/worksheets/sheet1.xml'])) .indexOf('xmlns:r')) i.each(c, function (c, b) { if (i.isPlainObject(b)) { var e = a.folder(c) z(e, b) } else { if (t) { var e = b.childNodes[0], h, f, u = [] for (h = e.attributes.length - 1; 0 <= h; h--) { f = e.attributes[h].nodeName var m = e.attributes[h].nodeValue ;-1 !== f.indexOf(':') && (u.push({ name: f, value: m }), e.removeAttribute(f)) } h = 0 for (f = u.length; h < f; h++) (m = b.createAttribute( u[h].name.replace(':', '_dt_b_namespace_token_') )), (m.value = u[h].value), e.setAttributeNode(m) } e = x.serializeToString(b) t && (-1 === e.indexOf('' + e), (e = e.replace(/_dt_b_namespace_token_/g, ':'))) e = e.replace(/<([^<>]*?) xmlns=""([^<>]*?)>/g, '<$1 $2>') a.file(c, e) } }) } function p(a, c, d) { var b = a.createElement(c) d && (d.attr && i(b).attr(d.attr), d.children && i.each(d.children, function (a, c) { b.appendChild(c) }), d.text && b.appendChild(a.createTextNode(d.text))) return b } function I(a, c) { var d = a.header[c].length, b a.footer && a.footer[c].length > d && (d = a.footer[c].length) for (var e = 0, h = a.body.length; e < h; e++) if ( ((b = a.body[e][c]), (b = null !== b && b !== o ? b.toString() : ''), -1 !== b.indexOf('\n') ? ((b = b.split('\n')), b.sort(function (a, b) { return b.length - a.length }), (b = b[0].length)) : (b = b.length), b > d && (d = b), 40 < d) ) return 52 d *= 1.3 return 6 < d ? d : 6 } var n = i.fn.dataTable, q var j = ('undefined' !== typeof self && self) || ('undefined' !== typeof g && g) || this.content if ( 'undefined' === typeof j || ('undefined' !== typeof navigator && /MSIE [1-9]\./.test(navigator.userAgent)) ) q = void 0 else { var v = j.document.createElementNS('http://www.w3.org/1999/xhtml', 'a'), J = 'download' in v, K = /constructor/i.test(j.HTMLElement) || j.safari, B = /CriOS\/[\d]+/.test(navigator.userAgent), L = function (a) { ;(j.setImmediate || j.setTimeout)(function () { throw a }, 0) }, C = function (a) { setTimeout(function () { 'string' === typeof a ? (j.URL || j.webkitURL || j).revokeObjectURL(a) : a.remove() }, 4e4) }, D = function (a) { return /^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test( a.type ) ? new Blob([String.fromCharCode(65279), a], { type: a.type }) : a }, E = function (a, c, d) { d || (a = D(a)) var b = this, d = 'application/octet-stream' === a.type, e, h = function () { for ( var a = ['writestart', 'progress', 'write', 'writeend'], a = [].concat(a), c = a.length; c--; ) { var d = b['on' + a[c]] if ('function' === typeof d) try { d.call(b, b) } catch (e) { L(e) } } } b.readyState = b.INIT if (J) (e = (j.URL || j.webkitURL || j).createObjectURL(a)), setTimeout(function () { v.href = e v.download = c var a = new MouseEvent('click') v.dispatchEvent(a) h() C(e) b.readyState = b.DONE }) else if ((B || (d && K)) && j.FileReader) { var f = new FileReader() f.onloadend = function () { var a = B ? f.result : f.result.replace(/^data:[^;]*;/, 'data:attachment/file;') j.open(a, '_blank') || (j.location.href = a) b.readyState = b.DONE h() } f.readAsDataURL(a) b.readyState = b.INIT } else e || (e = (j.URL || j.webkitURL || j).createObjectURL(a)), d ? (j.location.href = e) : j.open(e, '_blank') || (j.location.href = e), (b.readyState = b.DONE), h(), C(e) }, k = E.prototype 'undefined' !== typeof navigator && navigator.msSaveOrOpenBlob ? (q = function (a, c, d) { c = c || a.name || 'download' d || (a = D(a)) return navigator.msSaveOrOpenBlob(a, c) }) : ((k.abort = function () {}), (k.readyState = k.INIT = 0), (k.WRITING = 1), (k.DONE = 2), (k.error = k.onwritestart = k.onprogress = k.onwrite = k.onabort = k.onerror = k.onwriteend = null), (q = function (a, c, d) { return new E(a, c || a.name || 'download', d) })) } n.fileSave = q var w = function (a, c) { var d = '*' === a.filename && '*' !== a.title && a.title !== o ? a.title : a.filename 'function' === typeof d && (d = d()) ;-1 !== d.indexOf('*') && (d = i.trim(d.replace('*', i('title').text()))) d = d.replace(/[^a-zA-Z0-9_\u00A1-\uFFFF\.,\-_ !\(\)]/g, '') return c === o || !0 === c ? d + a.extension : d }, M = function (a) { var c = 'Sheet1' a.sheetName && (c = a.sheetName.replace(/[\[\]\*\/\\\?\:]/g, '')) return c }, N = function (a) { a = a.title 'function' === typeof a && (a = a()) return -1 !== a.indexOf('*') ? a.replace('*', i('title').text() || 'Exported data') : a }, F = function (a, c) { for ( var d = c.newline ? c.newline : navigator.userAgent.match(/Windows/) ? '\r\n' : '\n', b = a.buttons.exportData(c.exportOptions), e = c.fieldBoundary, h = c.fieldSeparator, f = RegExp(e, 'g'), i = c.escapeChar !== o ? c.escapeChar : '\\', m = function (a) { for (var b = '', c = 0, d = a.length; c < d; c++) 0 < c && (b += h), (b += e ? e + ('' + a[c]).replace(f, i + e) + e : a[c]) return b }, j = c.header ? m(b.header) + d : '', g = c.footer && b.footer ? d + m(b.footer) : '', l = [], y = 0, O = b.body.length; y < O; y++ ) l.push(m(b.body[y])) return { str: j + l.join(d) + g, rows: l.length } }, G = function () { if ( !( -1 !== navigator.userAgent.indexOf('Safari') && -1 === navigator.userAgent.indexOf('Chrome') && -1 === navigator.userAgent.indexOf('Opera') ) ) return !1 var a = navigator.userAgent.match(/AppleWebKit\/(\d+\.\d+)/) return a && 1 < a.length && 603.1 > 1 * a[1] ? !0 : !1 } try { var x = new XMLSerializer(), t } catch (P) {} var A = { '_rels/.rels': '', 'xl/_rels/workbook.xml.rels': '', '[Content_Types].xml': '', 'xl/workbook.xml': '', 'xl/worksheets/sheet1.xml': '', 'xl/styles.xml': '', }, H = [ { match: /^\-?\d+\.\d%$/, style: 60, fmt: function (a) { return a / 100 }, }, { match: /^\-?\d+\.?\d*%$/, style: 56, fmt: function (a) { return a / 100 }, }, { match: /^\-?\$[\d,]+.?\d*$/, style: 57 }, { match: /^\-?£[\d,]+.?\d*$/, style: 58 }, { match: /^\-?€[\d,]+.?\d*$/, style: 59 }, { match: /^\-?\d+$/, style: 65 }, { match: /^\-?\d+\.\d{2}$/, style: 66 }, { match: /^\([\d,]+\)$/, style: 61, fmt: function (a) { return -1 * a.replace(/[\(\)]/g, '') }, }, { match: /^\([\d,]+\.\d{2}\)$/, style: 62, fmt: function (a) { return -1 * a.replace(/[\(\)]/g, '') }, }, { match: /^\-?[\d,]+$/, style: 63 }, { match: /^\-?[\d,]+\.\d{2}$/, style: 64 }, ] n.ext.buttons.copyHtml5 = { className: 'buttons-copy buttons-html5', text: function (a) { return a.i18n('buttons.copy', 'Copy') }, action: function (a, c, d, b) { this.processing(!0) var e = this, a = F(c, b), h = a.str, d = i('
').css({ height: 1, width: 1, overflow: 'hidden', position: 'fixed', top: 0, left: 0, }) b.customize && (h = b.customize(h, b)) b = i('