PageSourceSearch

https://einvoice.com.vn/bundles/jquery?v=QtrASx-8n2nTzF5M_MOvzY6IqRSOwZKHRlMhKre0PqI1?134358117780464815

js einvoice.com.vn collected 2026-10-07 01:56:47 UTC 1,212,601 bytes, 16,158 lines download raw bytes

1/* Minification failed. Returning unminified contents.
2(2161,65-66): run-time error JS1100: Expected ',': =
3(2161,69-70): run-time error JS1004: Expected ';': )
4(2164,15-16): run-time error JS1014: Invalid character: `
5(2164,16-17): run-time error JS1195: Expected expression: <
6(2164,190-191): run-time error JS1002: Syntax error: }
7(2164,203-204): run-time error JS1014: Invalid character: `
8(2169,9-26): run-time error JS1197: Too many errors. The file might not be a JavaScript file: allowOutsideClick
9 */
10/* NUGET: BEGIN LICENSE TEXT
11 *
12 * Microsoft grants you the right to use these script files for the sole
13 * purpose of either: (i) interacting through your browser with the Microsoft
14 * website or online service, subject to the applicable licensing or use
15 * terms; or (ii) using the files as included with a Microsoft product subject
16 * to that product's license terms. Microsoft reserves all other rights to the
17 * files not expressly granted by Microsoft, whether by implication, estoppel
18 * or otherwise. Insofar as a script file is dual licensed under GPL,
19 * Microsoft neither took the code under GPL nor distributes it thereunder but
20 * under the terms set out in this paragraph. All notices and licenses
21 * below are for informational purposes only.
22 *
23 * JQUERY CORE 1.10.2; Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors; http://jquery.org/license
24 * Includes Sizzle.js; Copyright 2013 jQuery Foundation, Inc. and other contributors; http://opensource.org/licenses/MIT
25 *
26 * NUGET: END LICENSE TEXT */
27/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
28//@ sourceMappingURL=jquery-1.10.2.min.map
29*/�
vendor: 29,930 bytes, lines 29-30
29
30(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav></:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone
vendor: 3,746 bytes, lines 30-31
30=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t
31}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;
vendor: 28,442 bytes, line 31
31a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Ct=/^(?:checkbox|radio)$/i,Nt=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:x.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));
vendor: 4,896 bytes, lines 31-32
31return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle);
32u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;
vendor: 25,968 bytes, line 32
32if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=un(e,t),Pt.detach()),Gt[e]=n),n}function un(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,n){x.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(x.css(e,"display"))?x.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x.support.opacity||(x.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=x.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===x.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,n){return n?x.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,n){x.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?x(e).position()[n]+"px":r):t}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!x.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||x.css(e,"display"))},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(x.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Ct.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),x.param=function(e,n){var r,i=[],o=function(e,t){t=x.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var mn,yn,vn=x.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Cn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Nn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=x.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=o.href}catch(Ln){yn=a.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(T)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(l){var u;return o[l]=!0,x.each(e[l]||[],function(e,l){var c=l(n,r,i);return"string"!=typeof c||a||o[c]?a?!(u=c):t:(n.dataTypes.unshift(c),s(c),!1)}),u}return s(n.dataTypes[0])||!o["*"]&&s("*")}function _n(e,n){var r,i,o=x.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,l=e.indexOf(" ");return l>=0&&(i=e.slice(l,e.length),e=e.slice(0,l)),x.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&x.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?x("<div>").append(x.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Cn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?_n(_n(e,x.ajaxSettings),t):_n(x.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,l,u,c,p=x.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?x(f):x.event,h=x.Deferred(),g=x.Callbacks("once memory"),m=p.statusCode||{},y={},v={},b=0,w="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return b||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>b)for(t in e)m[t]=[m[t],e[t]];else C.always(e[C.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),k(0,t),this}};if(h.promise(C).complete=g.add,C.success=C.done,C.error=C.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=x.trim(p.dataType||"*").toLowerCase().match(T)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(mn[3]||("http:"===mn[1]?"80":"443")))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=x.param(p.data,p.traditional)),qn(An,p,n,C),2===b)return C;l=p.global,l&&0===x.active++&&x.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Nn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(x.lastModified[o]&&C.setRequestHeader("If-Modified-Since",x.lastModified[o]),x.etag[o]&&C.setRequestHeader("If-None-Match",x.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",p.contentType),C.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)C.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,C,p)===!1||2===b))return C.abort();w="abort";for(i in{success:1,error:1,complete:1})C[i](p[i]);if(u=qn(jn,p,n,C)){C.readyState=1,l&&d.trigger("ajaxSend",[C,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){C.abort("timeout")},p.timeout));try{b=1,u.send(y,k)}catch(N){if(!(2>b))throw N;k(-1,N)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,N=n;2!==b&&(b=2,s&&clearTimeout(s),u=t,a=i||"",C.readyState=e>0?4:0,c=e>=200&&300>e||304===e,r&&(w=Mn(p,C,r)),w=On(p,w,C,c),c?(p.ifModified&&(T=C.getResponseHeader("Last-Modified"),T&&(x.lastModified[o]=T),T=C.getResponseHeader("etag"),T&&(x.etag[o]=T)),204===e||"HEAD"===p.type?N="nocontent":304===e?N="notmodified":(N=w.state,y=w.data,v=w.error,c=!v)):(v=N,(e||!N)&&(N="error",0>e&&(e=0))),C.status=e,C.statusText=(n||N)+"",c?h.resolveWith(f,[y,N,C]):h.rejectWith(f,[C,N,v]),C.statusCode(m),m=t,l&&d.trigger(c?"ajaxSuccess":"ajaxError",[C,p,c?y:v]),g.fireWith(f,[C,N]),l&&(d.trigger("ajaxComplete",[C,p]),--x.active||x.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,n){return x.get(e,t,n,"script")}}),x.each(["get","post"],function(e,n){x[n]=function(e,r,i,o){return x.isFunction(r)&&(o=o||i,i=r,r=t),x.ajax({url:e,type:n,dataType:o,data:r,success:i})}});function Mn(e,n,r){var i,o,a,s,l=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in l)if(l[s]&&l[s].test(o)){u.unshift(s);break}if(u[0]in r)a=u[0];else{for(s in r){if(!u[0]||e.converters[s+" "+u[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==u[0]&&u.unshift(a),r[a]):t}function On(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=u[l+" "+o]||u["* "+o],!a)for(i in u)if(s=i.split(" "),s[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){a===!0?a=u[i]:u[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),x.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=a.head||x("head")[0]||a.documentElement;return{send:function(t,i){n=a.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var Fn=[],Bn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Fn.pop()||x.expando+"_"+vn++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,l=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return l||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=x.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,l?n[l]=n[l].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||x.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,Fn.push(o)),s&&x.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}x.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=x.ajaxSettings.xhr(),x.support.cors=!!Rn&&"withCredentials"in Rn,Rn=x.support.ajax=!!Rn,Rn&&x.ajaxTransport(function(n){if(!n.crossDomain||x.support.cors){var r;return{send:function(i,o){var a,s,l=n.xhr();if(n.username?l.open(n.type,n.url,n.async,n.username,n.password):l.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)l[s]=n.xhrFields[s];n.mimeType&&l.overrideMimeType&&l.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)l.setRequestHeader(s,i[s])}catch(u){}l.send(n.hasContent&&n.data||null),r=function(e,i){var s,u,c,p;try{if(r&&(i||4===l.readyState))if(r=t,a&&(l.onreadystatechange=x.noop,$n&&delete Pn[a]),i)4!==l.readyState&&l.abort();else{p={},s=l.status,u=l.getAllResponseHeaders(),"string"==typeof l.responseText&&(p.text=l.responseText);try{c=l.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,u)},n.async?4===l.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},x(e).unload($n)),Pn[a]=r),l.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+w+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Yn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),a=(x.cssNumber[e]||"px"!==o&&+r)&&Yn.exec(x.css(n.elem,e)),s=1,l=20;if(a&&a[3]!==o){o=o||a[3],i=i||[],a=+r||1;do s=s||".5",a/=s,x.style(n.elem,e,a+o);while(s!==(s=n.cur()/r)&&1!==s&&--l)}return i&&(a=n.start=+a||+r||0,n.unit=o,n.end=i[1]?a+(i[1]+1)*i[2]:+i[2]),n}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=x.now()}function Zn(e,t,n){var r,i=(Qn[t]||[]).concat(Qn["*"]),o=0,a=i.length;for(;a>o;o++)if(r=i[o].call(n,t,e))return r}function er(e,t,n){var r,i,o=0,a=Gn.length,s=x.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,u.startTime+u.duration-t),r=n/u.duration||0,o=1-r,a=0,l=u.tweens.length;for(;l>a;a++)u.tweens[a].run(o);return s.notifyWith(e,[u,o,n]),1>o&&l?n:(s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(r),r},stop:function(t){var n=0,r=t?u.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)u.tweens[n].run(1);return t?s.resolveWith(e,[u,t]):s.rejectWith(e,[u,t]),this}}),c=u.props;for(tr(c,u.opts.specialEasing);a>o;o++)if(r=Gn[o].call(u,e,c,u.opts))return r;return x.map(c,Zn,u),x.isFunction(u.opts.start)&&u.opts.start.call(e,u),x.fx.timer(x.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always)}function tr(e,t){var n,r,i,o,a;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=x.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(er,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,l,u=this,c={},p=e.style,f=e.nodeType&&nn(e),d=x._data(e,"fxshow");n.queue||(s=x._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,u.always(function(){u.always(function(){s.unqueued--,x.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(x.support.inlineBlockNeedsLayout&&"inline"!==ln(e.nodeName)?p.zoom=1:p.display="inline-block")),n.overflow&&(p.overflow="hidden",x.support.shrinkWrapBlocks||u.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],Vn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show"))continue;c[r]=d&&d[r]||x.style(e,r)}if(!x.isEmptyObject(c)){d?"hidden"in d&&(f=d.hidden):d=x._data(e,"fxshow",{}),o&&(d.hidden=!f),f?x(e).show():u.done(function(){x(e).hide()}),u.done(function(){var t;x._removeData(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)a=Zn(f?d[r]:0,r,u),r in d||(d[r]=a.start,f&&(a.end=a.start,a.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}x.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),a=function(){var t=er(this,x.extend({},e),o);(i||x._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=x.timers,a=x._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=x._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,a=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=rr.prototype.init,x.fx.tick=function(){var e,n=x.timers,r=0;for(Xn=x.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||x.fx.stop(),Xn=t},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){Un||(Un=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(Un),Un=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){x.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,x.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},x.offset={setOffset:function(e,t,n){var r=x.css(e,"position");"static"===r&&(e.style.position="relative");var i=x(e),o=i.offset(),a=x.css(e,"top"),s=x.css(e,"left"),l=("absolute"===r||"fixed"===r)&&x.inArray("auto",[a,s])>-1,u={},c={},p,f;l?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),x.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(u.top=t.top-o.top+p),null!=t.left&&(u.left=t.left-o.left+f),"using"in t?t.using.call(e,u):i.css(u)}},x.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===x.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(n=e.offset()),n.top+=x.css(e[0],"borderTopWidth",!0),n.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-x.css(r,"marginTop",!0),left:t.left-n.left-x.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);x.fn[e]=function(i){return x.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?x(a).scrollLeft():o,r?o:x(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return x.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}x.each({Height:"height",Width:"width"},function(e,n){x.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){x.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return x.access(this,function(n,r,i){var o;return x.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?x.css(n,r,s):x.style(n,r,i,s)},n,a?i:t,a,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=x:(e.jQuery=e.$=x,"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}))})(window);
32
33;
34/*
35 * Interface elements for jQuery - http://interface.eyecon.ro
36 *
37 * Copyright (c) 2006 Stefan Petre
38 * Dual licensed under the MIT (MIT-LICENSE.txt) 
39 * and GPL (GPL-LICENSE.txt) licenses.
40 */
41 eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('6.15={3o:d(e){7 x=0;7 y=0;7 1Q=1A;7 A=e.L;8(6(e).H(\'Q\')==\'U\'){1E=A.1a;2y=A.O;A.1a=\'1F\';A.Q=\'1Y\';A.O=\'2e\';1Q=26}7 4=e;2P(4){x+=4.3B+(4.1I&&!6.3p.41?F(4.1I.2X)||0:0);y+=4.3x+(4.1I&&!6.3p.41?F(4.1I.2Z)||0:0);4=4.4e}4=e;2P(4&&4.4a&&4.4a.39()!=\'V\'){x-=4.1D||0;y-=4.1s||0;4=4.2x}8(1Q){A.Q=\'U\';A.O=2y;A.1a=1E}q{x:x,y:y}},4E:d(4){7 x=0,y=0;2P(4){x+=4.3B||0;y+=4.3x||0;4=4.4e}q{x:x,y:y}},35:d(e){7 w=6.H(e,\'1T\');7 h=6.H(e,\'36\');7 1e=0;7 1o=0;7 A=e.L;8(6(e).H(\'Q\')!=\'U\'){1e=e.1z;1o=e.2s}u{1E=A.1a;2y=A.O;A.1a=\'1F\';A.Q=\'1Y\';A.O=\'2e\';1e=e.1z;1o=e.2s;A.Q=\'U\';A.O=2y;A.1a=1E}q{w:w,h:h,1e:1e,1o:1o}},4P:d(4){q{1e:4.1z||0,1o:4.2s||0}},58:d(e){7 h,w,22;8(e){w=e.2a;h=e.29}u{22=D.Y;w=2z.3c||2N.3c||(22&&22.2a)||D.V.2a;h=2z.31||2N.31||(22&&22.29)||D.V.29}q{w:w,h:h}},3P:d(e){7 t,l,w,h,1J,1R;8(e&&e.2E.39()!=\'V\'){t=e.1s;l=e.1D;w=e.3j;h=e.3e;1J=0;1R=0}u{8(D.Y&&D.Y.1s){t=D.Y.1s;l=D.Y.1D;w=D.Y.3j;h=D.Y.3e}u 8(D.V){t=D.V.1s;l=D.V.1D;w=D.V.3j;h=D.V.3e}1J=2N.3c||D.Y.2a||D.V.2a||0;1R=2N.31||D.Y.29||D.V.29||0}q{t:t,l:l,w:w,h:h,1J:1J,1R:1R}},3L:d(e,1U){7 4=6(e);7 t=4.H(\'2j\')||\'\';7 r=4.H(\'2k\')||\'\';7 b=4.H(\'2n\')||\'\';7 l=4.H(\'2l\')||\'\';8(1U)q{t:F(t)||0,r:F(r)||0,b:F(b)||0,l:F(l)};u q{t:t,r:r,b:b,l:l}},56:d(e,1U){7 4=6(e);7 t=4.H(\'3w\')||\'\';7 r=4.H(\'3u\')||\'\';7 b=4.H(\'3s\')||\'\';7 l=4.H(\'3t\')||\'\';8(1U)q{t:F(t)||0,r:F(r)||0,b:F(b)||0,l:F(l)};u q{t:t,r:r,b:b,l:l}},4Z:d(e,1U){7 4=6(e);7 t=4.H(\'2Z\')||\'\';7 r=4.H(\'3G\')||\'\';7 b=4.H(\'3y\')||\'\';7 l=4.H(\'2X\')||\'\';8(1U)q{t:F(t)||0,r:F(r)||0,b:F(b)||0,l:F(l)||0};u q{t:t,r:r,b:b,l:l}},3T:d(2i){7 x=2i.53||(2i.52+(D.Y.1D||D.V.1D))||0;7 y=2i.51||(2i.54+(D.Y.1s||D.V.1s))||0;q{x:x,y:y}},3h:d(12,3g){3g(12);12=12.3F;2P(12){6.15.3h(12,3g);12=12.5a}},59:d(12){6.15.3h(12,d(4){S(7 1j 1q 4){8(2R 4[1j]===\'d\'){4[1j]=20}}})},57:d(4,27){7 1b=$.15.3P();7 3l=$.15.35(4);8(!27||27==\'4Y\')$(4).H({X:1b.t+((1i.3S(1b.h,1b.1R)-1b.t-3l.1o)/2)+\'K\'});8(!27||27==\'4Q\')$(4).H({N:1b.l+((1i.3S(1b.w,1b.1J)-1b.l-3l.1e)/2)+\'K\'})},4O:d(4,3U){7 3V=$(\'3q[@2u*="2w"]\',4||D),2w;3V.1V(d(){2w=k.2u;k.2u=3U;k.L.4M="4N:4R.4S.4W(2u=\'"+2w+"\')"})}};[].4i||(4V.4U.4i=d(v,n){n=(n==20)?0:n;7 m=k.1m;S(7 i=n;i<m;i++)8(k[i]==v)q i;q-1});6.3A=d(e){8(/^4T$|^4L$|^5b$|^5c$|^5t$|^5s$|^5r$|^5q$|^5u$|^V$|^5v$|^5z$|^5y$|^5x$|^5w$|^5p$|^5o$/i.2q(e.2E))q 1A;u q 26};6.E.5h=d(e,1p){7 c=e.3F;7 1d=c.L;1d.O=1p.O;1d.2j=1p.18.t;1d.2l=1p.18.l;1d.2n=1p.18.b;1d.2k=1p.18.r;1d.X=1p.X+\'K\';1d.N=1p.N+\'K\';e.2x.4f(c,e);e.2x.5g(e)};6.E.5f=d(e){8(!6.3A(e))q 1A;7 t=6(e);7 A=e.L;7 1Q=1A;7 J={};J.O=t.H(\'O\');8(t.H(\'Q\')==\'U\'){1E=t.H(\'1a\');A.1a=\'1F\';A.Q=\'\';1Q=26}J.32=6.15.35(e);J.18=6.15.3L(e);7 2Y=e.1I?e.1I.4g:t.H(\'5d\');J.X=F(t.H(\'X\'))||0;J.N=F(t.H(\'N\'))||0;7 3J=\'5e\'+F(1i.5i()*4p);7 1x=D.5j(/^3q$|^5n$|^5m$|^5l$|^5k$|^5A$|^2V$|^4u$|^4y$|^4z$|^4x$|^4v$|^4s$|^4H$/i.2q(e.2E)?\'4J\':e.2E);6.1j(1x,\'4F\',3J);1x.3X=\'4B\';7 R=1x.L;7 X=0;7 N=0;8(J.O==\'33\'||J.O==\'2e\'){X=J.X;N=J.N}R.Q=\'U\';R.X=X+\'K\';R.N=N+\'K\';R.O=J.O!=\'33\'&&J.O!=\'2e\'?\'33\':J.O;R.2K=\'1F\';R.36=J.32.1o+\'K\';R.1T=J.32.1e+\'K\';R.2j=J.18.t;R.2k=J.18.r;R.2n=J.18.b;R.2l=J.18.l;8(6.3p.4G){R.4g=2Y}u{R.4D=2Y}e.2x.4f(1x,e);A.2j=\'1M\';A.2k=\'1M\';A.2n=\'1M\';A.2l=\'1M\';A.O=\'2e\';A.4C=\'U\';A.X=\'1M\';A.N=\'1M\';8(1Q){A.Q=\'U\';A.1a=1E}1x.4A(e);R.Q=\'1Y\';q{J:J,4I:6(1x)}};6.E.2f={4K:[0,B,B],4r:[3E,B,B],4w:[4l,4l,4t],4X:[0,0,0],60:[0,0,B],6P:[3H,42,42],6O:[0,B,B],6N:[0,0,1L],6L:[0,1L,1L],6M:[3b,3b,3b],6Q:[0,6R,0],6W:[6V,6U,4k],6S:[1L,0,1L],6T:[6K,4k,47],6J:[B,3I,0],6B:[6A,50,6z],6x:[1L,0,0],6Y:[6C,6D,6I],6H:[6G,0,2U],6E:[B,
410,B],6F:[B,6X,0],7a:[0,1v,0],7j:[75,0,7i],7f:[3E,3v,3I],7e:[7h,7l,3v],7g:[3r,B,B],7c:[4c,7d,4c],72:[2U,2U,2U],71:[B,70,74],76:[B,B,3r],7b:[0,B,0],79:[B,0,B],77:[1v,0,0],78:[0,0,1v],6Z:[1v,1v,0],73:[B,3H,0],7k:[B,2I,6y],6v:[1v,0,1v],5V:[B,0,0],5U:[2I,2I,2I],5T:[B,B,B],5R:[B,B,0]};6.E.1w=d(16,3z){8(6.E.2f[16])q{r:6.E.2f[16][0],g:6.E.2f[16][1],b:6.E.2f[16][2]};u 8(M=/^1N\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\)$/.2A(16))q{r:F(M[1]),g:F(M[2]),b:F(M[3])};u 8(M=/1N\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*\\)$/.2A(16))q{r:Z(M[1])*2.55,g:Z(M[2])*2.55,b:Z(M[3])*2.55};u 8(M=/^#([a-1H-1B-9])([a-1H-1B-9])([a-1H-1B-9])$/.2A(16))q{r:F("1C"+M[1]+M[1]),g:F("1C"+M[2]+M[2]),b:F("1C"+M[3]+M[3])};u 8(M=/^#([a-1H-1B-9]{2})([a-1H-1B-9]{2})([a-1H-1B-9]{2})$/.2A(16))q{r:F("1C"+M[1]),g:F("1C"+M[2]),b:F("1C"+M[3])};u q 3z==26?1A:{r:B,g:B,b:B}};6.E.4n={3y:1,2X:1,3G:1,2Z:1,5S:1,5B:1,36:1,N:1,5W:1,5X:1,2n:1,2l:1,2k:1,2j:1,62:1,2T:1,61:1,6w:1,1f:1,5Y:1,5Z:1,3s:1,3t:1,3u:1,3w:1,38:1,5Q:1,X:1,1T:1,2O:1};6.E.49={5P:1,5G:1,5H:1,5F:1,5E:1,16:1,5C:1};6.E.25=[\'5D\',\'5I\',\'5J\',\'5O\'];6.E.3k={\'3d\':[\'24\',\'3W\'],\'2B\':[\'24\',\'3f\'],\'2D\':[\'2D\',\'\'],\'2C\':[\'2C\',\'\']};6.3Q.4b({5N:d(1h,1G,P,2v){q k.2d(d(){7 2t=6.1G(1G,P,2v);7 e=28 6.4m(k,2t,1h)})},37:d(1G,2v){q k.2d(d(){7 2t=6.1G(1G,2v);7 e=28 6.37(k,2t)})},5M:d(14){q k.1V(d(){8(k.1n)6.3m(k,14)})},5K:d(14){q k.1V(d(){8(k.1n)6.3m(k,14);8(k.2d&&k.2d[\'E\'])k.2d.E=[]})}});6.4b({37:d(C,o){7 z=k,4o;z.14=d(){8(6.43(o.2M))o.2M.3Z(C)};z.2h=3O(d(){z.14()},o.1k);C.1n=z},P:{4q:d(p,n,4j,4d,1k){q((-1i.5L(p*1i.63)/2)+0.5)*4d+4j}},4m:d(C,o,1h){7 z=k,4o;7 y=C.L;7 44=6.H(C,"2K");7 1O=6.H(C,"Q");7 G={};z.2L=(28 46()).48();o.P=o.P&&6.P[o.P]?o.P:\'4q\';z.2Q=d(I,W){8(6.E.4n[I]){8(W==\'2H\'||W==\'2G\'||W==\'3N\'){8(!C.1r)C.1r={};7 r=Z(6.1y(C,I));C.1r[I]=r&&r>-4p?r:(Z(6.H(C,I))||0);W=W==\'3N\'?(1O==\'U\'?\'2H\':\'2G\'):W;o[W]=26;G[I]=W==\'2H\'?[0,C.1r[I]]:[C.1r[I],0];8(I!=\'1f\')y[I]=G[I][0]+(I!=\'2O\'&&I!=\'34\'?\'K\':\'\');u 6.1j(y,"1f",G[I][0])}u{G[I]=[Z(6.1y(C,I)),Z(W)||0]}}u 8(6.E.49[I])G[I]=[6.E.1w(6.1y(C,I)),6.E.1w(W)];u 8(/^2D$|2C$|24$|2B$|3d$/i.2q(I)){7 m=W.1t(/\\s+/g,\' \').1t(/1N\\s*\\(\\s*/g,\'1N(\').1t(/\\s*,\\s*/g,\',\').1t(/\\s*\\)/g,\')\').64(/([^\\s]+)/g);6n(I){2b\'2D\':2b\'2C\':2b\'3d\':2b\'2B\':m[3]=m[3]||m[1]||m[0];m[2]=m[2]||m[0];m[1]=m[1]||m[0];S(7 i=0;i<6.E.25.1m;i++){7 1l=6.E.3k[I][0]+6.E.25[i]+6.E.3k[I][1];G[1l]=I==\'2B\'?[6.E.1w(6.1y(C,1l)),6.E.1w(m[i])]:[Z(6.1y(C,1l)),Z(m[i])]}3R;2b\'24\':S(7 i=0;i<m.1m;i++){7 3n=Z(m[i]);7 2r=!6m(3n)?\'3W\':(!/6l|U|1F|6j|6k|6o|6p|6u|6t|6s|6q/i.2q(m[i])?\'3f\':1A);8(2r){S(7 j=0;j<6.E.25.1m;j++){1l=\'24\'+6.E.25[j]+2r;G[1l]=2r==\'3f\'?[6.E.1w(6.1y(C,1l)),6.E.1w(m[i])]:[Z(6.1y(C,1l)),3n]}}u{y[\'6r\']=m[i]}}3R}}u{y[I]=W}q 1A};S(p 1q 1h){8(p==\'L\'){7 1c=6.30(1h[p]);S(1P 1q 1c){k.2Q(1P,1c[1P])}}u 8(p==\'3X\'){8(D.2S)S(7 i=0;i<D.2S.1m;i++){7 1K=D.2S[i].1K||D.2S[i].6i||20;8(1K){S(7 j=0;j<1K.1m;j++){8(1K[j].6h==\'.\'+1h[p]){7 1X=28 69(\'\\.\'+1h[p]+\' {\');7 1g=1K[j].L.68;7 1c=6.30(1g.1t(1X,\'\').1t(/}/g,\'\'));S(1P 1q 1c){k.2Q(1P,1c[1P])}}}}}}u{k.2Q(p,1h[p])}}y.Q=1O==\'U\'?\'1Y\':1O;y.2K=\'1F\';z.14=d(){7 t=(28 46()).48();8(t>o.1k+z.2L){4h(z.2h);z.2h=20;S(p 1q G){8(p=="1f")6.1j(y,"1f",G[p][1]);u 8(2R G[p][1]==\'2V\')y[p]=\'1N(\'+G[p][1].r+\',\'+G[p][1].g+\',\'+G[p][1].b+\')\';u y[p]=G[p][1]+(p!=\'2O\'&&p!=\'34\'?\'K\':\'\')}8(o.2G||o.2H)S(7 p 1q C.1r)8(p=="1f")6.1j(y,p,C.1r[p]);u y[p]="";y.Q=o.2G?\'U\':(1O!=\'U\'?1O:\'1Y\');y.2K=44;C.1n=20;8(6.43(o.2M))o.2M.3Z(C)}u{7 n=t-k.2L;7 2c=n/o.1k;S(p 1q G){8(2R G[p][1]==\'2V\'){y[p]=\'1N(\'+F(6.P[o.P](2c,n,G[p][0].r,(G[p][1].r-G[p][0].r),o.1k))+\',\'+F(6.P[o.P](2c,n,G[p][0].g,(G[p][1].g-G[p][0].g),o.1k))+\',\'+F(6.P[o.P](2c,n,G[p][0].b,(G[p][1].b-G[p][0].b),o.1k))+\')\'}u{7 2W=6.P[o.P](2c,n,G[p][0],(G[p][1]-G[p][0]),o.1k);8(p=="1f")6.1j(y,"1f",2W);u y[p]=2W+(p!=\'2O\'&&p!=\'34\'?\'K\':\'\')}}}};z.2h=3O(d(){z.14()},13);C.1n=z},3m:d(C,14){8(14)C.1n.2L-=67;u{2z.4h(C.1n.2h);C.1n=20;6.65(C,"E")}}});6.30=d(1g){7 1c={};8(2R 1g==\'66\'){1g=1g.39().40(\';\');S(7 i=0;i<1g.1m;i++){1X=1g[i].40(\':\');8(1X.1m==2){1c[6.45(1X[0].1t(/\\-(\\w)/g,d(m,c){q c.6a()}))]=6.45(1X[1])}}}q 1c};6.1u={3K:d(o){q k.1V(d(){7 4=k;4.f={10:6(o.10,k),23:6(o.23,k),21:6.15.3o(k),T:o.T,2p:o.2p,1Z:o.1Z,3Y:o.3Y,17:o.17,2T:o.2T};6.1u.2J(4,0);6(2z).2F(\'6b\',d(){4.f.21=6.15.3o(4);6.1u.2J(4,0);6.1u.3i(4)}
41);6.1u.3i(4);4.f.10.2F(\'6g\',d(){6(4.f.2p,k).1S(0).L.Q=\'1Y\'}).2F(\'6f\',d(){6(4.f.2p,k).1S(0).L.Q=\'U\'});6(D).2F(\'6e\',d(e){7 2g=6.15.3T(e);7 19=0;8(4.f.17&&4.f.17==\'3M\')7 2o=2g.x-4.f.21.x-(4.1z-4.f.T*4.f.10.1W())/2-4.f.T/2;u 8(4.f.17&&4.f.17==\'38\')7 2o=2g.x-4.f.21.x-4.1z+4.f.T*4.f.10.1W();u 7 2o=2g.x-4.f.21.x;7 3D=1i.3C(2g.y-4.f.21.y-4.2s/2,2);4.f.10.1V(d(2m){11=1i.6c(1i.3C(2o-2m*4.f.T,2)+3D);11-=4.f.T/2;11=11<0?0:11;11=11>4.f.1Z?4.f.1Z:11;11=4.f.1Z-11;3a=4.f.2T*11/4.f.1Z;k.L.1T=4.f.T+3a+\'K\';k.L.N=4.f.T*2m+19+\'K\';19+=3a});6.1u.2J(4,19)})})},2J:d(4,19){8(4.f.17)8(4.f.17==\'3M\')4.f.23.1S(0).L.N=(4.1z-4.f.T*4.f.10.1W())/2-19/2+\'K\';u 8(4.f.17==\'N\')4.f.23.1S(0).L.N=-19/4.f.10.1W()+\'K\';u 8(4.f.17==\'38\')4.f.23.1S(0).L.N=(4.1z-4.f.T*4.f.10.1W())-19/2+\'K\';4.f.23.1S(0).L.1T=4.f.T*4.f.10.1W()+19+\'K\'},3i:d(4){4.f.10.1V(d(2m){k.L.1T=4.f.T+\'K\';k.L.N=4.f.T*2m+\'K\'})}};6.3Q.6d=6.1u.3K;',62,456,'||||el||jQuery|var|if|||||function||fisheyeCfg|||||this||||options||return||||else||||||es|255|elem|document|fx|parseInt|props|css|tp|oldStyle|px|style|result|left|position|easing|display|wrs|for|itemWidth|none|body|vp|top|documentElement|parseFloat|items|distance|nodeEl||step|iUtil|color|halign|margins|toAdd|visibility|clientScroll|newStyles|cs|wb|opacity|styles|prop|Math|attr|duration|nmp|length|animationHandler|hb|old|in|orig|scrollTop|replace|iFisheye|128|parseColor|wr|curCSS|offsetWidth|false|F0|0x|scrollLeft|oldVisibility|hidden|speed|fA|currentStyle|iw|cssRules|139|0px|rgb|oldDisplay|np|restoreStyle|ih|get|width|toInteger|each|size|rule|block|proximity|null|pos|de|container|border|cssSides|true|axis|new|clientHeight|clientWidth|case|pr|queue|absolute|namedColors|pointer|timer|event|marginTop|marginRight|marginLeft|nr|marginBottom|posx|itemsText|test|sideEnd|offsetHeight|opt|src|callback|png|parentNode|oldPosition|window|exec|borderColor|padding|margin|nodeName|bind|hide|show|192|positionContainer|overflow|startTime|complete|self|zIndex|while|getValues|typeof|styleSheets|maxWidth|211|object|pValue|borderLeftWidth|oldFloat|borderTopWidth|parseStyle|innerHeight|sizes|relative|fontWeight|getSize|height|pause|right|toLowerCase|extraWidth|169|innerWidth|borderWidth|scrollHeight|Color|func|traverseDOM|positionItems|scrollWidth|cssSidesEnd|windowSize|stopAnim|floatVal|getPosition|browser|img|224|paddingBottom|paddingLeft|paddingRight|230|paddingTop|offsetTop|borderBottomWidth|notColor|fxCheckTag|offsetLeft|pow|posy|240|firstChild|borderRightWidth|165|140|wid|build|getMargins|center|toggle|setInterval|getScroll|fn|break|max|getPointer|emptyGIF|images|Width|className|valign|apply|split|opera||isFunction|oldOverflow|trim|Date||getTime|colorCssProps|tagName|extend|144|delta|offsetParent|insertBefore|styleFloat|clearInterval|indexOf|firstNum|107|245|fxe|cssProps|values|10000|linear|azure|dl|220|iframe|ul|beige|table|button|form|appendChild|fxWrapper|listStyle|cssFloat|getPositionLite|id|msie|ol|wrapper|div|aqua|td|filter|progid|fixPNG|getSizeLite|horizontally|DXImageTransform|Microsoft|tr|prototype|Array|AlphaImageLoader|black|vertically|getBorder||pageY|clientX|pageX|clientY||getPadding|centerEl|getClient|purgeEvents|nextSibling|tbody|caption|float|w_|buildWrapper|removeChild|destroyWrapper|random|createElement|select|hr|input|br|meta|optgroup|colgroup|col|tfoot|thead|th|header|option|frameset|frame|script|textarea|fontSize|outlineColor|Top|borderTopColor|borderRightColor|borderBottomColor|borderLeftColor|Right|Bottom|stopAll|cos|stop|animate|Left|backgroundColor|textIndent|yellow|bottom|white|silver|red|letterSpacing|lineHeight|outlineOffset|outlineWidth|blue|minHeight|maxHeight|PI|match|dequeue|string|100000000|cssText|RegExp|toUpperCase|resize|sqrt|Fisheye|mousemove|mouseout|mouseover|selectorText|rules|dotted|dashed|transparent|isNaN|switch|solid|double|outset|borderStyle|inset|ridge|groove|purple|minWidth|darkred|203|204|153|darkorchid|233|150|fuchsia|gold|148|darkviolet|122|darkorange|85|darkcyan|darkgrey|darkblue|cyan|brown|darkgreen|100|darkmagenta|darkolivegreen|183|189|darkkhaki|215|darksalmon|olive|182|lightpink|lightgrey|orange|193||lightyellow|maroon|navy|magenta|green|lime|lightgreen|238|lightblue|khaki|lightcyan|173|130|indigo|pink|216'.split('|'),0,{}))
42;
43/*
44jQuery Redirect v1.0.1
45
46Copyright (c) 2013-2015 Miguel Galante
47Copyright (c) 2011-2013 Nemanja Avramovic, www.avramovic.info
48
49Licensed under CC BY-SA 4.0 License: http://creativecommons.org/licenses/by-sa/4.0/
50
51This means everyone is allowed to:
52
53Share - copy and redistribute the material in any medium or format
54Adapt - remix, transform, and build upon the material for any purpose, even commercially.
55Under following conditions:
56
57Attribution - You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
58ShareAlike - If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.
59
60*/
61(function ($) {
62    'use strict';
63
64    /**
65     * jQuery Redirect
66     * @param {string} url - Url of the redirection
67     * @param {Object} values - (optional) An object with the data to send. If not present will look for values as QueryString in the target url.
68     * @param {string} method - (optional) The HTTP verb can be GET or POST (defaults to POST)
69     * @param {string} target - (optional) The target of the form. "_blank" will open the url in a new window.
70     */
71    $.redirect = function (url, values, method, target) {
72        method = (method && ["GET", "POST", "PUT", "DELETE"].indexOf(method.toUpperCase()) != -1) ? method.toUpperCase() : 'POST';
73
74        if (!values) {
75            var obj = $.parseUrl(url);
76            url = obj.url;
77            values = obj.params;
78        }
79
80        var form = $('<form>')
81          .attr("method", method)
82          .attr("action", url);
83
84        if (target) {
85          form.attr("target", target);
86        }
87
88        var submit = {}; //Create a symbol
89        form[0][submit] = form[0].submit;
90        iterateValues(values, [], form);
91        $('body').append(form);
92        form[0][submit]();
93    };
94
95    //Utility Functions
96    /**
97     * Url and QueryString Parser.
98     * @param {string} url - a Url to parse.
99     * @returns {object} an object with the parsed url with the following structure {url: URL, params:{ KEY: VALUE }}
100     */
101    $.parseUrl = function (url) {
102        if (url.indexOf('?') === -1) {
103            return {
104                url: url,
105                params: {}
106            };
107        }
108        var parts = url.split('?'),
109            query_string = parts[1],
110            elems = query_string.split('&');
111        url = parts[0];
112
113        var i, pair, obj = {};
114        for (i = 0; i < elems.length; i+= 1) {
115            pair = elems[i].split('=');
116            obj[pair[0]] = pair[1];
117        }
118
119        return {
120            url: url,
121            params: obj
122        };
123    };
124
125    //Private Functions
126    var getInput = function (name, value, parent, array) {
127        var parentString;
128        if (parent.length > 0) {
129            parentString = parent[0];
130            var i;
131            for (i = 1; i < parent.length; i += 1) {
132                parentString += "[" + parent[i] + "]";
133            }
134
135            if (array) {
136              name = parentString + "[]";
137            } else {
138              name = parentString + "[" + name + "]";
139            }
140        }
141
142        return $("<input>").attr("type", "hidden")
143            .attr("name", name)
144            .attr("value", value);
145    };
146
147    var iterateValues = function (values, parent, form, array) {
148        var i, iterateParent = [];
149        for (i in values) {
150            if (typeof values[i] === "object") {
151                iterateParent = parent.slice();
152                if (array) {
153                  iterateParent.push('');
154                } else {
155                  iterateParent.push(i);
156                }
157                iterateValues(values[i], iterateParent, form, Array.isArray(values[i]));
158            } else {
159                form.append(getInput(i, values[i], parent, array));
160            }
161        }
162    };
163}(window.jQuery || window.Zepto || window.jqlite));
164;
165/*!
166 * Datepicker for Bootstrap v1.6.4 (https://github.com/eternicode/bootstrap-datepicker)
167 *
168 * Copyright 2012 Stefan Petre
169 * Improvements by Andrew Rowls
170 * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
171 */
172!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a,b){function c(){return new Date(Date.UTC.apply(Date,arguments))}function d(){var a=new Date;return c(a.getFullYear(),a.getMonth(),a.getDate())}function e(a,b){return a.getUTCFullYear()===b.getUTCFullYear()&&a.getUTCMonth()===b.getUTCMonth()&&a.getUTCDate()===b.getUTCDate()}function f(a){return function(){return this[a].apply(this,arguments)}}
vendor: 16,384 bytes, line 172
172function g(a){return a&&!isNaN(a.getTime())}function h(b,c){function d(a,b){return b.toLowerCase()}var e,f=a(b).data(),g={},h=new RegExp("^"+c.toLowerCase()+"([A-Z])");c=new RegExp("^"+c.toLowerCase());for(var i in f)c.test(i)&&(e=i.replace(h,d),g[e]=f[i]);return g}function i(b){var c={};if(q[b]||(b=b.split("-")[0],q[b])){var d=q[b];return a.each(p,function(a,b){b in d&&(c[b]=d[b])}),c}}var j=function(){var b={get:function(a){return this.slice(a)[0]},contains:function(a){for(var b=a&&a.valueOf(),c=0,d=this.length;d>c;c++)if(this[c].valueOf()===b)return c;return-1},remove:function(a){this.splice(a,1)},replace:function(b){b&&(a.isArray(b)||(b=[b]),this.clear(),this.push.apply(this,b))},clear:function(){this.length=0},copy:function(){var a=new j;return a.replace(this),a}};return function(){var c=[];return c.push.apply(c,arguments),a.extend(c,b),c}}(),k=function(b,c){a(b).data("datepicker",this),this._process_options(c),this.dates=new j,this.viewDate=this.o.defaultViewDate,this.focusDate=null,this.element=a(b),this.isInput=this.element.is("input"),this.inputField=this.isInput?this.element:this.element.find("input"),this.component=this.element.hasClass("date")?this.element.find(".add-on, .input-group-addon, .btn"):!1,this.hasInput=this.component&&this.inputField.length,this.component&&0===this.component.length&&(this.component=!1),this.isInline=!this.component&&this.element.is("div"),this.picker=a(r.template),this._check_template(this.o.templates.leftArrow)&&this.picker.find(".prev").html(this.o.templates.leftArrow),this._check_template(this.o.templates.rightArrow)&&this.picker.find(".next").html(this.o.templates.rightArrow),this._buildEvents(),this._attachEvents(),this.isInline?this.picker.addClass("datepicker-inline").appendTo(this.element):this.picker.addClass("datepicker-dropdown dropdown-menu"),this.o.rtl&&this.picker.addClass("datepicker-rtl"),this.viewMode=this.o.startView,this.o.calendarWeeks&&this.picker.find("thead .datepicker-title, tfoot .today, tfoot .clear").attr("colspan",function(a,b){return parseInt(b)+1}),this._allow_update=!1,this.setStartDate(this._o.startDate),this.setEndDate(this._o.endDate),this.setDaysOfWeekDisabled(this.o.daysOfWeekDisabled),this.setDaysOfWeekHighlighted(this.o.daysOfWeekHighlighted),this.setDatesDisabled(this.o.datesDisabled),this.fillDow(),this.fillMonths(),this._allow_update=!0,this.update(),this.showMode(),this.isInline&&this.show()};k.prototype={constructor:k,_resolveViewName:function(a,c){return 0===a||"days"===a||"month"===a?0:1===a||"months"===a||"year"===a?1:2===a||"years"===a||"decade"===a?2:3===a||"decades"===a||"century"===a?3:4===a||"centuries"===a||"millennium"===a?4:c===b?!1:c},_check_template:function(c){try{if(c===b||""===c)return!1;if((c.match(/[<>]/g)||[]).length<=0)return!0;var d=a(c);return d.length>0}catch(e){return!1}},_process_options:function(b){this._o=a.extend({},this._o,b);var e=this.o=a.extend({},this._o),f=e.language;q[f]||(f=f.split("-")[0],q[f]||(f=o.language)),e.language=f,e.startView=this._resolveViewName(e.startView,0),e.minViewMode=this._resolveViewName(e.minViewMode,0),e.maxViewMode=this._resolveViewName(e.maxViewMode,4),e.startView=Math.min(e.startView,e.maxViewMode),e.startView=Math.max(e.startView,e.minViewMode),e.multidate!==!0&&(e.multidate=Number(e.multidate)||!1,e.multidate!==!1&&(e.multidate=Math.max(0,e.multidate))),e.multidateSeparator=String(e.multidateSeparator),e.weekStart%=7,e.weekEnd=(e.weekStart+6)%7;var g=r.parseFormat(e.format);e.startDate!==-(1/0)&&(e.startDate?e.startDate instanceof Date?e.startDate=this._local_to_utc(this._zero_time(e.startDate)):e.startDate=r.parseDate(e.startDate,g,e.language,e.assumeNearbyYear):e.startDate=-(1/0)),e.endDate!==1/0&&(e.endDate?e.endDate instanceof Date?e.endDate=this._local_to_utc(this._zero_time(e.endDate)):e.endDate=r.parseDate(e.endDate,g,e.language,e.assumeNearbyYear):e.endDate=1/0),e.daysOfWeekDisabled=e.daysOfWeekDisabled||[],a.isArray(e.daysOfWeekDisabled)||(e.daysOfWeekDisabled=e.daysOfWeekDisabled.split(/[,\s]*/)),e.daysOfWeekDisabled=a.map(e.daysOfWeekDisabled,function(a){return parseInt(a,10)}),e.daysOfWeekHighlighted=e.daysOfWeekHighlighted||[],a.isArray(e.daysOfWeekHighlighted)||(e.daysOfWeekHighlighted=e.daysOfWeekHighlighted.split(/[,\s]*/)),e.daysOfWeekHighlighted=a.map(e.daysOfWeekHighlighted,function(a){return parseInt(a,10)}),e.datesDisabled=e.datesDisabled||[],a.isArray(e.datesDisabled)||(e.datesDisabled=[e.datesDisabled]),e.datesDisabled=a.map(e.datesDisabled,function(a){return r.parseDate(a,g,e.language,e.assumeNearbyYear)});var h=String(e.orientation).toLowerCase().split(/\s+/g),i=e.orientation.toLowerCase();if(h=a.grep(h,function(a){return/^auto|left|right|top|bottom$/.test(a)}),e.orientation={x:"auto",y:"auto"},i&&"auto"!==i)if(1===h.length)switch(h[0]){case"top":case"bottom":e.orientation.y=h[0];break;case"left":case"right":e.orientation.x=h[0]}else i=a.grep(h,function(a){return/^left|right$/.test(a)}),e.orientation.x=i[0]||"auto",i=a.grep(h,function(a){return/^top|bottom$/.test(a)}),e.orientation.y=i[0]||"auto";else;if(e.defaultViewDate){var j=e.defaultViewDate.year||(new Date).getFullYear(),k=e.defaultViewDate.month||0,l=e.defaultViewDate.day||1;e.defaultViewDate=c(j,k,l)}else e.defaultViewDate=d()},_events:[],_secondaryEvents:[],_applyEvents:function(a){for(var c,d,e,f=0;f<a.length;f++)c=a[f][0],2===a[f].length?(d=b,e=a[f][1]):3===a[f].length&&(d=a[f][1],e=a[f][2]),c.on(e,d)},_unapplyEvents:function(a){for(var c,d,e,f=0;f<a.length;f++)c=a[f][0],2===a[f].length?(e=b,d=a[f][1]):3===a[f].length&&(e=a[f][1],d=a[f][2]),c.off(d,e)},_buildEvents:function(){var b={keyup:a.proxy(function(b){-1===a.inArray(b.keyCode,[27,37,39,38,40,32,13,9])&&this.update()},this),keydown:a.proxy(this.keydown,this),paste:a.proxy(this.paste,this)};this.o.showOnFocus===!0&&(b.focus=a.proxy(this.show,this)),this.isInput?this._events=[[this.element,b]]:this.component&&this.hasInput?this._events=[[this.inputField,b],[this.component,{click:a.proxy(this.show,this)}]]:this._events=[[this.element,{click:a.proxy(this.show,this),keydown:a.proxy(this.keydown,this)}]],this._events.push([this.element,"*",{blur:a.proxy(function(a){this._focused_from=a.target},this)}],[this.element,{blur:a.proxy(function(a){this._focused_from=a.target},this)}]),this.o.immediateUpdates&&this._events.push([this.element,{"changeYear changeMonth":a.proxy(function(a){this.update(a.date)},this)}]),this._secondaryEvents=[[this.picker,{click:a.proxy(this.click,this)}],[a(window),{resize:a.proxy(this.place,this)}],[a(document),{mousedown:a.proxy(function(a){this.element.is(a.target)||this.element.find(a.target).length||this.picker.is(a.target)||this.picker.find(a.target).length||this.isInline||this.hide()},this)}]]},_attachEvents:function(){this._detachEvents(),this._applyEvents(this._events)},_detachEvents:function(){this._unapplyEvents(this._events)},_attachSecondaryEvents:function(){this._detachSecondaryEvents(),this._applyEvents(this._secondaryEvents)},_detachSecondaryEvents:function(){this._unapplyEvents(this._secondaryEvents)},_trigger:function(b,c){var d=c||this.dates.get(-1),e=this._utc_to_local(d);this.element.trigger({type:b,date:e,dates:a.map(this.dates,this._utc_to_local),format:a.proxy(function(a,b){0===arguments.length?(a=this.dates.length-1,b=this.o.format):"string"==typeof a&&(b=a,a=this.dates.length-1),b=b||this.o.format;var c=this.dates.get(a);return r.formatDate(c,b,this.o.language)},this)})},show:function(){return this.inputField.prop("disabled")||this.inputField.prop("readonly")&&this.o.enableOnReadonly===!1?void 0:(this.isInline||this.picker.appendTo(this.o.container),this.place(),this.picker.show(),this._attachSecondaryEvents(),this._trigger("show"),(window.navigator.msMaxTouchPoints||"ontouchstart"in document)&&this.o.disableTouchKeyboard&&a(this.element).blur(),this)},hide:function(){return this.isInline||!this.picker.is(":visible")?this:(this.focusDate=null,this.picker.hide().detach(),this._detachSecondaryEvents(),this.viewMode=this.o.startView,this.showMode(),this.o.forceParse&&this.inputField.val()&&this.setValue(),this._trigger("hide"),this)},destroy:function(){return this.hide(),this._detachEvents(),this._detachSecondaryEvents(),this.picker.remove(),delete this.element.data().datepicker,this.isInput||delete this.element.data().date,this},paste:function(b){var c;if(b.originalEvent.clipboardData&&b.originalEvent.clipboardData.types&&-1!==a.inArray("text/plain",b.originalEvent.clipboardData.types))c=b.originalEvent.clipboardData.getData("text/plain");else{if(!window.clipboardData)return;c=window.clipboardData.getData("Text")}this.setDate(c),this.update(),b.preventDefault()},_utc_to_local:function(a){return a&&new Date(a.getTime()+6e4*a.getTimezoneOffset())},_local_to_utc:function(a){return a&&new Date(a.getTime()-6e4*a.getTimezoneOffset())},_zero_time:function(a){return a&&new Date(a.getFullYear(),a.getMonth(),a.getDate())},_zero_utc_time:function(a){return a&&new Date(Date.UTC(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate()))},getDates:function(){return a.map(this.dates,this._utc_to_local)},getUTCDates:function(){return a.map(this.dates,function(a){return new Date(a)})},getDate:function(){return this._utc_to_local(this.getUTCDate())},getUTCDate:function(){var a=this.dates.get(-1);return"undefined"!=typeof a?new Date(a):null},clearDates:function(){this.inputField&&this.inputField.val(""),this.update(),this._trigger("changeDate"),this.o.autoclose&&this.hide()},setDates:function(){var b=a.isArray(arguments[0])?arguments[0]:arguments;return this.update.apply(this,b),this._trigger("changeDate"),this.setValue(),this},setUTCDates:function(){var b=a.isArray(arguments[0])?arguments[0]:arguments;return this.update.apply(this,a.map(b,this._utc_to_local)),this._trigger("changeDate"),this.setValue(),this},setDate:f("setDates"),setUTCDate:f("setUTCDates"),remove:f("destroy"),setValue:function(){var a=this.getFormattedDate();return this.inputField.val(a),this},getFormattedDate:function(c){c===b&&(c=this.o.format);var d=this.o.language;return a.map(this.dates,function(a){return r.formatDate(a,c,d)}).join(this.o.multidateSeparator)},getStartDate:function(){return this.o.startDate},setStartDate:function(a){return this._process_options({startDate:a}),this.update(),this.updateNavArrows(),this},getEndDate:function(){return this.o.endDate},setEndDate:function(a){return this._process_options({endDate:a}),this.update(),this.updateNavArrows(),this},setDaysOfWeekDisabled:function(a){return this._process_options({daysOfWeekDisabled:a}),this.update(),this.updateNavArrows(),this},setDaysOfWeekHighlighted:function(a){return this._process_options({daysOfWeekHighlighted:a}),this.update(),this},setDatesDisabled:function(a){this._process_options({datesDisabled:a}),this.update(),this.updateNavArrows()},place:function(){if(this.isInline)return this;var b=this.picker.outerWidth(),c=this.picker.outerHeight(),d=10,e=a(this.o.container),f=e.width(),g="body"===this.o.container?a(document).scrollTop():e.scrollTop(),h=e.offset(),i=[];this.element.parents().each(function(){var b=a(this).css("z-index");"auto"!==b&&0!==b&&i.push(parseInt(b))});var j=Math.max.apply(Math,i)+this.o.zIndexOffset,k=this.component?this.component.parent().offset():this.element.offset(),l=this.component?this.component.outerHeight(!0):this.element.outerHeight(!1),m=this.component?this.component.outerWidth(!0):this.element.outerWidth(!1),n=k.left-h.left,o=k.top-h.top;"body"!==this.o.container&&(o+=g),this.picker.removeClass("datepicker-orient-top datepicker-orient-bottom datepicker-orient-right datepicker-orient-left"),"auto"!==this.o.orientation.x?(this.picker.addClass("datepicker-orient-"+this.o.orientation.x),"right"===this.o.orientation.x&&(n-=b-m)):k.left<0?(this.picker.addClass("datepicker-orient-left"),n-=k.left-d):n+b>f?(this.picker.addClass("datepicker-orient-right"),n+=m-b):this.picker.addClass("datepicker-orient-left");var p,q=this.o.orientation.y;if("auto"===q&&(p=-g+o-c,q=0>p?"bottom":"top"),this.picker.addClass("datepicker-orient-"+q),"top"===q?o-=c+parseInt(this.picker.css("padding-top")):o+=l,this.o.rtl){var r=f-(n+m);this.picker.css({top:o,right:r,zIndex:j})}else this.picker.css({top:o,left:n,zIndex:j});return this},_allow_update:!0,update:function(){if(!this._allow_update)return this;var b=this.dates.copy(),c=[],d=!1;return arguments.length?(a.each(arguments,a.proxy(function(a,b){b instanceof Date&&(b=this._local_to_utc(b)),c.push(b)},this)),d=!0):(c=this.isInput?this.element.val():this.element.data("date")||this.inputField.val(),c=c&&this.o.multidate?c.split(this.o.multidateSeparator):[c],delete this.element.data().date),c=a.map(c,a.proxy(function(a){return r.parseDate(a,this.o.format,this.o.language,this.o.assumeNearbyYear)},this)),c=a.grep(c,a.proxy(function(a){return!this.dateWithinRange(a)||!a},this),!0),this.dates.replace(c),this.dates.length?this.viewDate=new Date(this.dates.get(-1)):this.viewDate<this.o.startDate?this.viewDate=new Date(this.o.startDate):this.viewDate>this.o.endDate?this.viewDate=new Date(this.o.endDate):this.viewDate=this.o.defaultViewDate,d?this.setValue():c.length&&String(b)!==String(this.dates)&&this._trigger("changeDate"),!this.dates.length&&b.length&&this._trigger("clearDate"),this.fill(),this.element.change(),this},fillDow:function(){var b=this.o.weekStart,c="<tr>";for(this.o.calendarWeeks&&(this.picker.find(".datepicker-days .datepicker-switch").attr("colspan",function(a,b){return parseInt(b)+1}),c+='<th class="cw">&#160;</th>');b<this.o.weekStart+7;)c+='<th class="dow',a.inArray(b,this.o.daysOfWeekDisabled)>-1&&(c+=" disabled"),c+='">'+q[this.o.language].daysMin[b++%7]+"</th>";c+="</tr>",this.picker.find(".datepicker-days thead").append(c)},fillMonths:function(){for(var a=this._utc_to_local(this.viewDate),b="",c=0;12>c;){var d=a&&a.getMonth()===c?" focused":"";b+='<span class="month'+d+'">'+q[this.o.language].monthsShort[c++]+"</span>"}this.picker.find(".datepicker-months td").html(b)},setRange:function(b){b&&b.length?this.range=a.map(b,function(a){return a.valueOf()}):delete this.range,this.fill()},getClassNames:function(b){var c=[],d=this.viewDate.getUTCFullYear(),e=this.viewDate.getUTCMonth(),f=new Date;return b.getUTCFullYear()<d||b.getUTCFullYear()===d&&b.getUTCMonth()<e?c.push("old"):(b.getUTCFullYear()>d||b.getUTCFullYear()===d&&b.getUTCMonth()>e)&&c.push("new"),this.focusDate&&b.valueOf()===this.focusDate.valueOf()&&c.push("focused"),this.o.todayHighlight&&b.getUTCFullYear()===f.getFullYear()&&b.getUTCMonth()===f.getMonth()&&b.getUTCDate()===f.getDate()&&c.push("today"),-1!==this.dates.contains(b)&&c.push("active"),this.dateWithinRange(b)||c.push("disabled"),this.dateIsDisabled(b)&&c.push("disabled","disabled-date"),-1!==a.inArray(b.getUTCDay(),this.o.daysOfWeekHighlighted)&&c.push("highlighted"),this.range&&(b>this.range[0]&&b<this.range[this.range.length-1]&&c.push("range"),-1!==a.inArray(b.valueOf(),this.range)&&c.push("selected"),b.valueOf()===this.range[0]&&c.push("range-start"),b.valueOf()===this.range[this.range.length-1]&&c.push("range-end")),c},_fill_yearsView:function(c,d,e,f,g,h,i,j){var k,l,m,n,o,p,q,r,s,t,u;for(k="",l=this.picker.find(c),m=parseInt(g/e,10)*e,o=parseInt(h/f,10)*f,p=parseInt(i/f,10)*f,n=a.map(this.dates,function(a){return parseInt(a.getUTCFullYear()/f,10)*f}),l.find(".datepicker-switch").text(m+"-"+(m+9*f)),q=m-f,r=-1;11>r;r+=1)s=[d],t=null,-1===r?s.push("old"):10===r&&s.push("new"),-1!==a.inArray(q,n)&&s.push("active"),(o>q||q>p)&&s.push("disabled"),q===this.viewDate.getFullYear()&&s.push("focused"),j!==a.noop&&(u=j(new Date(q,0,1)),u===b?u={}:"boolean"==typeof u?u={enabled:u}:"string"==typeof u&&(u={classes:u}),u.enabled===!1&&s.push("disabled"),u.classes&&(s=s.concat(u.classes.split(/\s+/))),u.tooltip&&(t=u.tooltip)),k+='<span class="'+s.join(" ")+'"'+(t?' title="'+t+'"':"")+">"+q+"</span>",q+=f;l.find("td").html(k)},fill:function(){var d,e,f=new Date(this.viewDate),g=f.getUTCFullYear(),h=f.getUTCMonth(),i=this.o.startDate!==-(1/0)?this.o.startDate.getUTCFullYear():-(1/0),j=this.o.startDate!==-(1/0)?this.o.startDate.getUTCMonth():-(1/0),k=this.o.endDate!==1/0?this.o.endDate.getUTCFullYear():1/0,l=this.o.endDate!==1/0?this.o.endDate.getUTCMonth():1/0,m=q[this.o.language].today||q.en.today||"",n=q[this.o.language].clear||q.en.clear||"",o=q[this.o.language].titleFormat||q.en.titleFormat;if(!isNaN(g)&&!isNaN(h)){this.picker.find(".datepic
172ker-days .datepicker-switch").text(r.formatDate(f,o,this.o.language)),this.picker.find("tfoot .today").text(m).toggle(this.o.todayBtn!==!1),this.picker.find("tfoot .clear").text(n).toggle(this.o.clearBtn!==!1),this.picker.find("thead .datepicker-title").text(this.o.title).toggle(""!==this.o.title),this.updateNavArrows(),this.fillMonths();var p=c(g,h-1,28),s=r.getDaysInMonth(p.getUTCFullYear(),p.getUTCMonth());p.setUTCDate(s),p.setUTCDate(s-(p.getUTCDay()-this.o.weekStart+7)%7);var t=new Date(p);p.getUTCFullYear()<100&&t.setUTCFullYear(p.getUTCFullYear()),t.setUTCDate(t.getUTCDate()+42),t=t.valueOf();for(var u,v=[];p.valueOf()<t;){if(p.getUTCDay()===this.o.weekStart&&(v.push("<tr>"),this.o.calendarWeeks)){var w=new Date(+p+(this.o.weekStart-p.getUTCDay()-7)%7*864e5),x=new Date(Number(w)+(11-w.getUTCDay())%7*864e5),y=new Date(Number(y=c(x.getUTCFullYear(),0,1))+(11-y.getUTCDay())%7*864e5),z=(x-y)/864e5/7+1;v.push('<td class="cw">'+z+"</td>")}u=this.getClassNames(p),u.push("day"),this.o.beforeShowDay!==a.noop&&(e=this.o.beforeShowDay(this._utc_to_local(p)),e===b?e={}:"boolean"==typeof e?e={enabled:e}:"string"==typeof e&&(e={classes:e}),e.enabled===!1&&u.push("disabled"),e.classes&&(u=u.concat(e.classes.split(/\s+/))),e.tooltip&&(d=e.tooltip)),u=a.isFunction(a.uniqueSort)?a.uniqueSort(u):a.unique(u),v.push('<td class="'+u.join(" ")+'"'+(d?' title="'+d+'"':"")+">"+p.getUTCDate()+"</td>"),d=null,p.getUTCDay()===this.o.weekEnd&&v.push("</tr>"),p.setUTCDate(p.getUTCDate()+1)}this.picker.find(".datepicker-days tbody").empty().append(v.join(""));var A=q[this.o.language].monthsTitle||q.en.monthsTitle||"Months",B=this.picker.find(".datepicker-months").find(".datepicker-switch").text(this.o.maxViewMode<2?A:g).end().find("span").removeClass("active");if(a.each(this.dates,function(a,b){b.getUTCFullYear()===g&&B.eq(b.getUTCMonth()).addClass("active")}),(i>g||g>k)&&B.addClass("disabled"),g===i&&B.slice(0,j).addClass("disabled"),g===k&&B.slice(l+1).addClass("disabled"),this.o.beforeShowMonth!==a.noop){var C=this;a.each(B,function(c,d){var e=new Date(g,c,1),f=C.o.beforeShowMonth(e);f===b?f={}:"boolean"==typeof f?f={enabled:f}:"string"==typeof f&&(f={classes:f}),f.enabled!==!1||a(d).hasClass("disabled")||a(d).addClass("disabled"),f.classes&&a(d).addClass(f.classes),f.tooltip&&a(d).prop("title",f.tooltip)})}this._fill_yearsView(".datepicker-years","year",10,1,g,i,k,this.o.beforeShowYear),this._fill_yearsView(".datepicker-decades","decade",100,10,g,i,k,this.o.beforeShowDecade),this._fill_yearsView(".datepicker-centuries","century",1e3,100,g,i,k,this.o.beforeShowCentury)}},updateNavArrows:function(){if(this._allow_update){var a=new Date(this.viewDate),b=a.getUTCFullYear(),c=a.getUTCMonth();switch(this.viewMode){case 0:this.o.startDate!==-(1/0)&&b<=this.o.startDate.getUTCFullYear()&&c<=this.o.startDate.getUTCMonth()?this.picker.find(".prev").css({visibility:"hidden"}):this.picker.find(".prev").css({visibility:"visible"}),this.o.endDate!==1/0&&b>=this.o.endDate.getUTCFullYear()&&c>=this.o.endDate.getUTCMonth()?this.picker.find(".next").css({visibility:"hidden"}):this.picker.find(".next").css({visibility:"visible"});break;case 1:case 2:case 3:case 4:this.o.startDate!==-(1/0)&&b<=this.o.startDate.getUTCFullYear()||this.o.maxViewMode<2?this.picker.find(".prev").css({visibility:"hidden"}):this.picker.find(".prev").css({visibility:"visible"}),this.o.endDate!==1/0&&b>=this.o.endDate.getUTCFullYear()||this.o.maxViewMode<2?this.picker.find(".next").css({visibility:"hidden"}):this.picker.find(".next").css({visibility:"visible"})}}},click:function(b){b.preventDefault(),b.stopPropagation();var e,f,g,h,i,j,k;e=a(b.target),e.hasClass("datepicker-switch")&&this.showMode(1);var l=e.closest(".prev, .next");l.length>0&&(f=r.modes[this.viewMode].navStep*(l.hasClass("prev")?-1:1),0===this.viewMode?(this.viewDate=this.moveMonth(this.viewDate,f),this._trigger("changeMonth",this.viewDate)):(this.viewDate=this.moveYear(this.viewDate,f),1===this.viewMode&&this._trigger("changeYear",this.viewDate)),this.fill()),e.hasClass("today")&&!e.hasClass("day")&&(this.showMode(-2),this._setDate(d(),"linked"===this.o.todayBtn?null:"view")),e.hasClass("clear")&&this.clearDates(),e.hasClass("disabled")||(e.hasClass("day")&&(g=parseInt(e.text(),10)||1,h=this.viewDate.getUTCFullYear(),i=this.viewDate.getUTCMonth(),e.hasClass("old")&&(0===i?(i=11,h-=1,j=!0,k=!0):(i-=1,j=!0)),e.hasClass("new")&&(11===i?(i=0,h+=1,j=!0,k=!0):(i+=1,j=!0)),this._setDate(c(h,i,g)),k&&this._trigger("changeYear",this.viewDate),j&&this._trigger("changeMonth",this.viewDate)),e.hasClass("month")&&(this.viewDate.setUTCDate(1),g=1,i=e.parent().find("span").index(e),h=this.viewDate.getUTCFullYear(),this.viewDate.setUTCMonth(i),this._trigger("changeMonth",this.viewDate),1===this.o.minViewMode?(this._setDate(c(h,i,g)),this.showMode()):this.showMode(-1),this.fill()),(e.hasClass("year")||e.hasClass("decade")||e.hasClass("century"))&&(this.viewDate.setUTCDate(1),g=1,i=0,h=parseInt(e.text(),10)||0,this.viewDate.setUTCFullYear(h),e.hasClass("year")&&(this._trigger("changeYear",this.viewDate),2===this.o.minViewMode&&this._setDate(c(h,i,g))),e.hasClass("decade")&&(this._trigger("changeDecade",this.viewDate),3===this.o.minViewMode&&this._setDate(c(h,i,g))),e.hasClass("century")&&(this._trigger("changeCentury",this.viewDate),4
vendor: 6,636 bytes, line 172
172===this.o.minViewMode&&this._setDate(c(h,i,g))),this.showMode(-1),this.fill())),this.picker.is(":visible")&&this._focused_from&&a(this._focused_from).focus(),delete this._focused_from},_toggle_multidate:function(a){var b=this.dates.contains(a);if(a||this.dates.clear(),-1!==b?(this.o.multidate===!0||this.o.multidate>1||this.o.toggleActive)&&this.dates.remove(b):this.o.multidate===!1?(this.dates.clear(),this.dates.push(a)):this.dates.push(a),"number"==typeof this.o.multidate)for(;this.dates.length>this.o.multidate;)this.dates.remove(0)},_setDate:function(a,b){b&&"date"!==b||this._toggle_multidate(a&&new Date(a)),b&&"view"!==b||(this.viewDate=a&&new Date(a)),this.fill(),this.setValue(),b&&"view"===b||this._trigger("changeDate"),this.inputField&&this.inputField.change(),!this.o.autoclose||b&&"date"!==b||this.hide()},moveDay:function(a,b){var c=new Date(a);return c.setUTCDate(a.getUTCDate()+b),c},moveWeek:function(a,b){return this.moveDay(a,7*b)},moveMonth:function(a,b){if(!g(a))return this.o.defaultViewDate;if(!b)return a;var c,d,e=new Date(a.valueOf()),f=e.getUTCDate(),h=e.getUTCMonth(),i=Math.abs(b);if(b=b>0?1:-1,1===i)d=-1===b?function(){return e.getUTCMonth()===h}:function(){return e.getUTCMonth()!==c},c=h+b,e.setUTCMonth(c),(0>c||c>11)&&(c=(c+12)%12);else{for(var j=0;i>j;j++)e=this.moveMonth(e,b);c=e.getUTCMonth(),e.setUTCDate(f),d=function(){return c!==e.getUTCMonth()}}for(;d();)e.setUTCDate(--f),e.setUTCMonth(c);return e},moveYear:function(a,b){return this.moveMonth(a,12*b)},moveAvailableDate:function(a,b,c){do{if(a=this[c](a,b),!this.dateWithinRange(a))return!1;c="moveDay"}while(this.dateIsDisabled(a));return a},weekOfDateIsDisabled:function(b){return-1!==a.inArray(b.getUTCDay(),this.o.daysOfWeekDisabled)},dateIsDisabled:function(b){return this.weekOfDateIsDisabled(b)||a.grep(this.o.datesDisabled,function(a){return e(b,a)}).length>0},dateWithinRange:function(a){return a>=this.o.startDate&&a<=this.o.endDate},keydown:function(a){if(!this.picker.is(":visible"))return void((40===a.keyCode||27===a.keyCode)&&(this.show(),a.stopPropagation()));var b,c,d=!1,e=this.focusDate||this.viewDate;switch(a.keyCode){case 27:this.focusDate?(this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill()):this.hide(),a.preventDefault(),a.stopPropagation();break;case 37:case 38:case 39:case 40:if(!this.o.keyboardNavigation||7===this.o.daysOfWeekDisabled.length)break;b=37===a.keyCode||38===a.keyCode?-1:1,0===this.viewMode?a.ctrlKey?(c=this.moveAvailableDate(e,b,"moveYear"),c&&this._trigger("changeYear",this.viewDate)):a.shiftKey?(c=this.moveAvailableDate(e,b,"moveMonth"),c&&this._trigger("changeMonth",this.viewDate)):37===a.keyCode||39===a.keyCode?c=this.moveAvailableDate(e,b,"moveDay"):this.weekOfDateIsDisabled(e)||(c=this.moveAvailableDate(e,b,"moveWeek")):1===this.viewMode?((38===a.keyCode||40===a.keyCode)&&(b=4*b),c=this.moveAvailableDate(e,b,"moveMonth")):2===this.viewMode&&((38===a.keyCode||40===a.keyCode)&&(b=4*b),c=this.moveAvailableDate(e,b,"moveYear")),c&&(this.focusDate=this.viewDate=c,this.setValue(),this.fill(),a.preventDefault());break;case 13:if(!this.o.forceParse)break;e=this.focusDate||this.dates.get(-1)||this.viewDate,this.o.keyboardNavigation&&(this._toggle_multidate(e),d=!0),this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.setValue(),this.fill(),this.picker.is(":visible")&&(a.preventDefault(),a.stopPropagation(),this.o.autoclose&&this.hide());break;case 9:this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill(),this.hide()}d&&(this.dates.length?this._trigger("changeDate"):this._trigger("clearDate"),this.inputField&&this.inputField.change())},showMode:function(a){a&&(this.viewMode=Math.max(this.o.minViewMode,Math.min(this.o.maxViewMode,this.viewMode+a))),this.picker.children("div").hide().filter(".datepicker-"+r.modes[this.viewMode].clsName).show(),this.updateNavArrows()}};var l=function(b,c){a(b).data("datepicker",this),this.element=a(b),this.inputs=a.map(c.inputs,function(a){return a.jquery?a[0]:a}),delete c.inputs,n.call(a(this.inputs),c).on("changeDate",a.proxy(this.dateUpdated,this)),this.pickers=a.map(this.inputs,function(b){return a(b).data("datepicker")}),this.updateDates()};l.prototype={updateDates:function(){this.dates=a.map(this.pickers,function(a){return a.getUTCDate()}),this.updateRanges()},updateRanges:function(){var b=a.map(this.dates,function(a){return a.valueOf()});a.each(this.pickers,function(a,c){c.setRange(b)})},dateUpdated:function(b){if(!this.updating){this.updating=!0;var c=a(b.target).data("datepicker");if("undefined"!=typeof c){var d=c.getUTCDate(),e=a.inArray(b.target,this.inputs),f=e-1,g=e+1,h=this.inputs.length;if(-1!==e){if(a.each(this.pickers,function(a,b){b.getUTCDate()||b.setUTCDate(d)}),d<this.dates[f])for(;f>=0&&d<this.dates[f];)this.pickers[f--].setUTCDate(d);else if(d>this.dates[g])for(;h>g&&d>this.dates[g];)this.pickers[g++].setUTCDate(d);this.updateDates(),delete this.updating}}}},remove:function(){a.map(this.pickers,function(a){a.remove()}),delete this.element.data().datepicker}};var m=a.fn.datepicker,n=function(c){var d=Array.apply(null,arguments);d.shift();var e;if(this.each(function(){var b=a(this),f=b.data("datepicker"),g="object"==typeof c&&c;if(!f){var j=h(this,"date"),m=a.extend({},o,j,g),n=i(m.language),p=a.extend({},o,n,j,g);b.hasClass("input-daterange")||p.inputs?(a.extend(p,{inputs:p.inputs||b.find("input").toArray()}),f=new l(this,p)):f=new k(this,p),b.data("datepicker",f)}"string"==typeof c&&"function"==typeof f[c]&&(e=f[c].apply(f,d))}),e===b||e instanceof k||e instanceof l)return this;if(this.length>1)throw new Error("Using only allowed for the collection of a single element ("+c+" function)");return e};a.fn.datepicker=n;var o=a.fn.datepicker.defaults={assumeNearbyYear:!1,autoclose:!1,beforeShowDay:a.noop,beforeShowMonth:a.noop,beforeShowYear:a.noop,beforeShowDecade:a.noop,beforeShowCentury:a.noop,calendarWeeks:!1,clearBtn:!1,toggleActive:!1,daysOfWeekDisabled:[],daysOfWeekHighlighted:[],datesDisabled:[],endDate:1/0,forceParse:!0,format:"mm/dd/yyyy",keyboardNavigation:!0,language:"en",minViewMode:0,maxViewMode:4,multidate:!1,multidateSeparator:",",orientation:"auto",rtl:!1,startDate:-(1/0),startView:0,todayBtn:!1,todayHighlight:!1,weekStart:0,disableTouchKeyboard:!1,enableOnReadonly:!0,showOnFocus:!0,zIndexOffset:10,container:"body",immediateUpdates:!1,title:"",templates:{leftArrow:"&laquo;",rightArrow:"&raquo;"}},p=a.fn.datepicker.locale_opts=["format","rtl","weekStart"];a.fn.datepicker.Constructor=k;var q=a.fn.datepicker.dates={en:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Frid
172ay","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",clear:"Clear",titleFormat:"MM yyyy"}},r={modes:[{clsName:"days",navFnc:"Month",navStep:1},{clsName:"months",navFnc:"FullYear",navStep:1},{clsName:"years",navFnc:"FullYear",navStep:10},{clsName:"decades",navFnc:"FullDecade",navStep:100},{clsName:"centuries",navFnc:"FullCentury",navStep:1e3}],isLeapYear:function(a){return a%4===0&&a%100!==0||a%400===0},getDaysInMonth:function(a,b){return[31,r.isLeapYear(a)?29:28,31,30,31,30,31,31,30,31,30,31][b]},validParts:/dd?|DD?|mm?|MM?|yy(?:yy)?/g,nonpunctuation:/[^ -\/:-@\u5e74\u6708\u65e5\[-`{-~\t\n\r]+/g,parseFormat:function(a){if("function"==typeof a.toValue&&"function"==typeof a.toDisplay)return a;var b=a.replace(this.validParts,"\x00").split("\x00"),c=a.match(this.validParts);if(!b||!b.length||!c||0===c.length)throw new Error("Invalid date format.");return{separators:b,parts:c}},parseDate:function(e,f,g,h){function i(a,b){return b===!0&&(b=10),100>a&&(a+=2e3,a>(new Date).getFullYear()+b&&(a-=100)),a}function j(){var a=this.slice(0,s[n].length),b=s[n].slice(0,a.length);return a.toLowerCase()===b.toLowerCase()}if(!e)return b;if(e instanceof Date)return e;if("string"==typeof f&&(f=r.parseFormat(f)),f.toValue)return f.toValue(e,f,g);var l,m,n,o,p=/([\-+]\d+)([dmwy])/,s=e.match(/([\-+]\d+)([dmwy])/g),t={d:"moveDay",m:"moveMonth",w:"moveWeek",y:"moveYear"},u={yesterday:"-1d",today:"+0d",tomorrow:"+1d"};if(/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/.test(e)){for(e=new Date,n=0;n<s.length;n++)l=p.exec(s[n]),m=parseInt(l[1]),o=t[l[2]],e=k.prototype[o](e,m);return c(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate())}if("undefined"!=typeof u[e]&&(e=u[e],s=e.match(/([\-+]\d+)([dmwy])/g),/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/.test(e))){for(e=new Date,n=0;n<s.length;n++)l=p.exec(s[n]),m=parseInt(l[1]),o=t[l[2]],e=k.prototype[o](e,m);return c(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate())}s=e&&e.match(this.nonpunctuation)||[],e=new Date;var v,w,x={},y=["yyyy","yy","M","MM","m","mm","d","dd"],z={yyyy:function(a,b){return a.setUTCFullYear(h?i(b,h):b)},yy:function(a,b){return a.setUTCFullYear(h?i(b,h):b)},m:function(a,b){if(isNaN(a))return a;for(b-=1;0>b;)b+=12;for(b%=12,a.setUTCMonth(b);a.getUTCMonth()!==b;)a.setUTCDate(a.getUTCDate()-1);return a},d:function(a,b){return a.setUTCDate(b)}};z.M=z.MM=z.mm=z.m,z.dd=z.d,e=d();var A=f.parts.slice();if(s.length!==A.length&&(A=a(A).filter(function(b,c){return-1!==a.inArray(c,y)}).toArray()),s.length===A.length){var B;for(n=0,B=A.length;B>n;n++){if(v=parseInt(s[n],10),l=A[n],isNaN(v))switch(l){case"MM":w=a(q[g].months).filter(j),v=a.inArray(w[0],q[g].months)+1;break;case"M":w=a(q[g].monthsShort).filter(j),v=a.inArray(w[0],q[g].monthsShort)+1}x[l]=v}var C,D;for(n=0;n<y.length;n++)D=y[n],D in x&&!isNaN(x[D])&&(C=new Date(e),z[D](C,x[D]),isNaN(C)||(e=C))}return e},formatDate:function(b,c,d){if(!b)return"";if("string"==typeof c&&(c=r.parseFormat(c)),
173c.toDisplay)return c.toDisplay(b,c,d);var e={d:b.getUTCDate(),D:q[d].daysShort[b.getUTCDay()],DD:q[d].days[b.getUTCDay()],m:b.getUTCMonth()+1,M:q[d].monthsShort[b.getUTCMonth()],MM:q[d].months[b.getUTCMonth()],yy:b.getUTCFullYear().toString().substring(2),yyyy:b.getUTCFullYear()};e.dd=(e.d<10?"0":"")+e.d,e.mm=(e.m<10?"0":"")+e.m,b=[];for(var f=a.extend([],c.separators),g=0,h=c.parts.length;h>=g;g++)f.length&&b.push(f.shift()),b.push(e[c.parts[g]]);return b.join("")},headTemplate:'<thead><tr><th colspan="7" class="datepicker-title"></th></tr><tr><th class="prev">&laquo;</th><th colspan="5" class="datepicker-switch"></th><th class="next">&raquo;</th></tr></thead>',contTemplate:'<tbody><tr><td colspan="7"></td></tr></tbody>',footTemplate:'<tfoot><tr><th colspan="7" class="today"></th></tr><tr><th colspan="7" class="clear"></th></tr></tfoot>'};r.template='<div class="datepicker"><div class="datepicker-days"><table class="table-condensed">'+r.headTemplate+"<tbody></tbody>"+r.footTemplate+'</table></div><div class="datepicker-months"><table class="table-condensed">'+r.headTemplate+r.contTemplate+r.footTemplate+'</table></div><div class="datepicker-years"><table class="table-condensed">'+r.headTemplate+r.contTemplate+r.footTemplate+'</table></div><div class="datepicker-decades"><table class="table-condensed">'+r.headTemplate+r.contTemplate+r.footTemplate+'</table></div><div class="datepicker-centuries"><table class="table-condensed">'+r.headTemplate+r.contTemplate+r.footTemplate+"</table></div></div>",a.fn.datepicker.DPGlobal=r,a.fn.datepicker.noConflict=function(){return a.fn.datepicker=m,this},a.fn.datepicker.version="1.6.4",a(document).on("focus.datepicker.data-api click.datepicker.data-api",'[data-provide="datepicker"]',function(b){var c=a(this);c.data("datepicker")||(b.preventDefault(),n.call(c,"show"))}),a(function(){n.call(a('[data-provide="datepicker-inline"]'))})});;
174/*!
175 * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
176 *
177 * Copyright 2013-2015 bootstrap-select
178 * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
179 */
180
181(function (root, factory) {
182    if (typeof define === 'function' && define.amd) {
183        // AMD. Register as an anonymous module unless amdModuleId is set
184        define(["jquery"], function (a0) {
185            return (factory(a0));
186        });
187    } else if (typeof exports === 'object') {
188        // Node. Does not work with strict CommonJS, but
189        // only CommonJS-like environments that support module.exports,
190        // like Node.
191        module.exports = factory(require("jquery"));
192    } else {
193        factory(jQuery);
194    }
195}(this, function () {
196
197    (function ($) {
198        'use strict';
199
200        //<editor-fold desc="Shims">
201        if (!String.prototype.includes) {
202            (function () {
203                'use strict'; // needed to support `apply`/`call` with `undefined`/`null`
204                var toString = {}.toString;
205                var defineProperty = (function () {
206                    // IE 8 only supports `Object.defineProperty` on DOM elements
207                    try {
208                        var object = {};
209                        var $defineProperty = Object.defineProperty;
210                        var result = $defineProperty(object, object, object) && $defineProperty;
211                    } catch (error) {
212                    }
213                    return result;
214                }());
215                var indexOf = ''.indexOf;
216                var includes = function (search) {
217                    if (this == null) {
218                        throw TypeError();
219                    }
220                    var string = String(this);
221                    if (search && toString.call(search) == '[object RegExp]') {
222                        throw TypeError();
223                    }
224                    var stringLength = string.length;
225                    var searchString = String(search);
226                    var searchLength = searchString.length;
227                    var position = arguments.length > 1 ? arguments[1] : undefined;
228                    // `ToInteger`
229                    var pos = position ? Number(position) : 0;
230                    if (pos != pos) { // better `isNaN`
231                        pos = 0;
232                    }
233                    var start = Math.min(Math.max(pos, 0), stringLength);
234                    // Avoid the `indexOf` call if no match is possible
235                    if (searchLength + start > stringLength) {
236                        return false;
237                    }
238                    return indexOf.call(string, searchString, pos) != -1;
239                };
240                if (defineProperty) {
241                    defineProperty(String.prototype, 'includes', {
242                        'value': includes,
243                        'configurable': true,
244                        'writable': true
245                    });
246                } else {
247                    String.prototype.includes = includes;
248                }
249            }());
250        }
251
252        if (!String.prototype.startsWith) {
253            (function () {
254                'use strict'; // needed to support `apply`/`call` with `undefined`/`null`
255                var defineProperty = (function () {
256                    // IE 8 only supports `Object.defineProperty` on DOM elements
257                    try {
258                        var object = {};
259                        var $defineProperty = Object.defineProperty;
260                        var result = $defineProperty(object, object, object) && $defineProperty;
261                    } catch (error) {
262                    }
263                    return result;
264                }());
265                var toString = {}.toString;
266                var startsWith = function (search) {
267                    if (this == null) {
268                        throw TypeError();
269                    }
270                    var string = String(this);
271                    if (search && toString.call(search) == '[object RegExp]') {
272                        throw TypeError();
273                    }
274                    var stringLength = string.length;
275                    var searchString = String(search);
276                    var searchLength = searchString.length;
277                    var position = arguments.length > 1 ? arguments[1] : undefined;
278                    // `ToInteger`
279                    var pos = position ? Number(position) : 0;
280                    if (pos != pos) { // better `isNaN`
281                        pos = 0;
282                    }
283                    var start = Math.min(Math.max(pos, 0), stringLength);
284                    // Avoid the `indexOf` call if no match is possible
285                    if (searchLength + start > stringLength) {
286                        return false;
287                    }
288                    var index = -1;
289                    while (++index < searchLength) {
290                        if (string.charCodeAt(start + index) != searchString.charCodeAt(index)) {
291                            return false;
292                        }
293                    }
294                    return true;
295                };
296                if (defineProperty) {
297                    defineProperty(String.prototype, 'startsWith', {
298                        'value': startsWith,
299                        'configurable': true,
300                        'writable': true
301                    });
302                } else {
303                    String.prototype.startsWith = startsWith;
304                }
305            }());
306        }
307
308        if (!Object.keys) {
309            Object.keys = function (
310                o, // object
311                k, // key
312                r  // result array
313            ) {
314                // initialize object and result
315                r = [];
316                // iterate over object keys
317                for (k in o)
318                    // fill result array with non-prototypical keys
319                    r.hasOwnProperty.call(o, k) && r.push(k);
320                // return result
321                return r
322            };
323        }
324        //</editor-fold>
325
326        // Case insensitive contains search
327        $.expr[':'].icontains = function (obj, index, meta) {
328            var $obj = $(obj);
329            var haystack = ($obj.data('tokens') || $obj.text()).toUpperCase();
330            return haystack.includes(meta[3].toUpperCase());
331        };
332
333        // Case insensitive begins search
334        $.expr[':'].ibegins = function (obj, index, meta) {
335            var $obj = $(obj);
336            var haystack = ($obj.data('tokens') || $obj.text()).toUpperCase();
337            return haystack.startsWith(meta[3].toUpperCase());
338        };
339
340        // Case and accent insensitive contains search
341        $.expr[':'].aicontains = function (obj, index, meta) {
342            var $obj = $(obj);
343            var haystack = ($obj.data('tokens') || $obj.data('normalizedText') || $obj.text()).toUpperCase();
344            return haystack.includes(meta[3].toUpperCase());
345        };
346
347        // Case and accent insensitive begins search
348        $.expr[':'].aibegins = function (obj, index, meta) {
349            var $obj = $(obj);
350            var haystack = ($obj.data('tokens') || $obj.data('normalizedText') || $obj.text()).toUpperCase();
351            return haystack.startsWith(meta[3].toUpperCase());
352        };
353
354        /**
355         * Remove all diatrics from the given text.
356         * @access private
357         * @param {String} text
358         * @returns {String}
359         */
360        function normalizeToBase(text) {
361            var rExps = [
362                { re: /[\xC0-\xC6]/g, ch: "A" },
363                { re: /[\xE0-\xE6]/g, ch: "a" },
364                { re: /[\xC8-\xCB]/g, ch: "E" },
365                { re: /[\xE8-\xEB]/g, ch: "e" },
366                { re: /[\xCC-\xCF]/g, ch: "I" },
367                { re: /[\xEC-\xEF]/g, ch: "i" },
368                { re: /[\xD2-\xD6]/g, ch: "O" },
369                { re: /[\xF2-\xF6]/g, ch: "o" },
370                { re: /[\xD9-\xDC]/g, ch: "U" },
371                { re: /[\xF9-\xFC]/g, ch: "u" },
372                { re: /[\xC7-\xE7]/g, ch: "c" },
373                { re: /[\xD1]/g, ch: "N" },
374                { re: /[\xF1]/g, ch: "n" }
375            ];
376            $.each(rExps, function () {
377                text = text.replace(this.re, this.ch);
378            });
379            return text;
380        }
381
382
383        function htmlEscape(html) {
384            var escapeMap = {
385                '&': '&amp;',
386                '<': '&lt;',
387                '>': '&gt;',
388                '"': '&quot;',
389                "'": '&#x27;',
390                '`': '&#x60;'
391            };
392            var source = '(?:' + Object.keys(escapeMap).join('|') + ')',
393                testRegexp = new RegExp(source),
394                replaceRegexp = new RegExp(source, 'g'),
395                string = html == null ? '' : '' + html;
396            return testRegexp.test(string) ? string.replace(replaceRegexp, function (match) {
397                return escapeMap[match];
398            }) : string;
399        }
400
401        var Selectpicker = function (element, options, e) {
402            if (e) {
403                e.stopPropagation();
404                e.preventDefault();
405            }
406
407            this.$element = $(element);
408            this.$newElement = null;
409            this.$button = null;
410            this.$menu = null;
411            this.$lis = null;
412            this.options = options;
413
414            // If we have no title yet, try to pull it from the html title attribute (jQuery doesnt' pick it up as it's not a
415            // data-attribute)
416            if (this.options.title === null) {
417                this.options.title = this.$element.attr('title');
418            }
419
420            //Expose public methods
421            this.val = Selectpicker.prototype.val;
422            this.render = Selectpicker.prototype.render;
423            this.refresh = Selectpicker.prototype.refresh;
424            this.setStyle = Selectpicker.prototype.setStyle;
425            this.selectAll = Selectpicker.prototype.selectAll;
426            this.deselectAll = Selectpicker.prototype.deselectAll;
427            this.destroy = Selectpicker.prototype.remove;
428            this.remove = Selectpicker.prototype.remove;
429            this.show = Selectpicker.prototype.show;
430            this.hide = Selectpicker.prototype.hide;
431
432            this.init();
433        };
434
435        Selectpicker.VERSION = '1.7.2';
436
437        // part of this is duplicated in i18n/defaults-en_US.js. Make sure to update both.
438        Selectpicker.DEFAULTS = {
439            noneSelectedText: 'Nothing selected',
440            noneResultsText: 'Không tìm thấy với từ khóa {0}',
441            countSelectedText: function (numSelected, numTotal) {
442                return (numSelected == 1) ? "{0} item selected" : "{0} items selected";
443            },
444            maxOptionsText: function (numAll, numGroup) {
445                return [
446                    (numAll == 1) ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)',
447                    (numGroup == 1) ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)'
448                ];
449            },
450            selectAllText: 'Select All',
451            deselectAllText: 'Deselect All',
452            doneButton: false,
453            doneButtonText: 'Close',
454            multipleSeparator: ', ',
455            styleBase: 'btnSelect form-control',
456            style: '',
457            size: 'auto',
458            title: null,
459            selectedTextFormat: 'values',
460            width: false,
461            container: false,
462            hideDisabled: false,
463            showSubtext: false,
464            showIcon: true,
465            showContent: true,
466            dropupAuto: true,
467            header: false,
468            liveSearch: false,
469            liveSearchPlaceholder: null,
470            liveSearchNormalize: false,
471            liveSearchStyle: 'contains',
472            actionsBox: false,
473            iconBase: 'glyphicon',
474            tickIcon: 'glyphicon-ok',
475            maxOptions: false,
476            mobile: false,
477            selectOnTab: false,
478            dropdownAlignRight: false
479        };
480
481        Selectpicker.prototype = {
482
483            constructor: Selectpicker,
484
485            init: function () {
486                var that = this,
487                    id = this.$element.attr('id');
488
489                this.$element.addClass('bs-select-hidden');
490                // store originalIndex (key) and newIndex (value) in this.liObj for fast accessibility
491                // allows us to do this.$lis.eq(that.liObj[index]) instead of this.$lis.filter('[data-original-index="' + index + '"]')
492                this.liObj = {};
493                this.multiple = this.$element.prop('multiple');
494                this.autofocus = this.$element.prop('autofocus');
495                this.$newElement = this.createView();
496                this.$element.after(this.$newElement);
497                this.$button = this.$newElement.children('button');
498                this.$menu = this.$newElement.children('.dropdown-menu');
499                this.$menuInner = this.$menu.children('.inner');
500                this.$searchbox = this.$menu.find('input');
501
502                if (this.options.dropdownAlignRight)
503                    this.$menu.addClass('dropdown-menu-right');
504
505                if (typeof id !== 'undefined') {
506                    this.$button.attr('data-id', id);
507                    $('label[for="' + id + '"]').click(function (e) {
508                        e.preventDefault();
509                        that.$button.focus();
510                    });
511                }
512
513                this.checkDisabled();
514                this.clickListener();
515                if (this.options.liveSearch) this.liveSearchListener();
516                this.render();
517                this.setStyle();
518                this.setWidth();
519                if (this.options.container) this.selectPosition();
520                this.$menu.data('this', this);
521                this.$newElement.data('this', this);
522                if (this.options.mobile) this.mobile();
523
524                this.$newElement.on('hide.bs.dropdown', function (e) {
525                    that.$element.trigger('hide.bs.select', e);
526                });
527
528                this.$newElement.on('hidden.bs.dropdown', function (e) {
529                    that.$element.trigger('hidden.bs.select', e);
530                });
531
532                this.$newElement.on('show.bs.dropdown', function (e) {
533                    that.$element.trigger('show.bs.select', e);
534                });
535
536                this.$newElement.on('shown.bs.dropdown', function (e) {
537                    that.$element.trigger('shown.bs.select', e);
538                });
539
540                setTimeout(function () {
541                    that.$element.trigger('loaded.bs.select');
542                });
543            },
544
545            createDropdown: function () {
546                // Options
547                // If we are multiple, then add the show-tick class by default
548                var multiple = this.multiple ? ' show-tick' : '',
549                    inputGroup = this.$element.parent().hasClass('input-group') ? ' input-group-btn' : '',
550                    autofocus = this.autofocus ? ' autofocus' : '';
551                // Elements
552                var header = this.options.header ? '<div class="popover-title"><button type="button" class="close" aria-hidden="true">&times;</button>' + this.options.header + '</div>' : '';
553                var searchbox = this.options.liveSearch ?
554                    '<div class="bs-searchbox">' +
555                    '<input type="text" class="form-control" autocomplete="off"' +
556                    (null === this.options.liveSearchPlaceholder ? '' : ' placeholder="' + htmlEscape(this.options.liveSearchPlaceholder) + '"') + '>
556' +
557                    '</div>'
558                    : '';
559                var actionsbox = this.multiple && this.options.actionsBox ?
560                    '<div class="bs-actionsbox">' +
561                    '<div class="btn-group btn-group-sm btn-block">' +
562                    '<button type="button" class="actions-btn bs-select-all btn btn-default">' +
563                    this.options.selectAllText +
564                    '</button>' +
565                    '<button type="button" class="actions-btn bs-deselect-all btn btn-default">' +
566                    this.options.deselectAllText +
567                    '</button>' +
568                    '</div>' +
569                    '</div>'
570                    : '';
571                var donebutton = this.multiple && this.options.doneButton ?
572                    '<div class="bs-donebutton">' +
573                    '<div class="btn-group btn-block">' +
574                    '<button type="button" class="btn btn-sm btn-default">' +
575                    this.options.doneButtonText +
576                    '</button>' +
577                    '</div>' +
578                    '</div>'
579                    : '';
580                var drop =
581                    '<div class="btn-group bootstrap-select' + multiple + inputGroup + '">' +
582                    '<button type="button" class="' + this.options.styleBase + ' dropdown-toggle" data-toggle="dropdown"' + autofocus + '>' +
583                    '<span class="filter-option pull-left"></span>&nbsp;' +
584                    '<span class="caret"></span>' +
585                    '</button>' +
586                    '<div class="dropdown-menu open">' +
587                    header +
588                    searchbox +
589                    actionsbox +
590                    '<ul class="dropdown-menu inner" role="menu">' +
591                    '</ul>' +
592                    donebutton +
593                    '</div>' +
594                    '</div>';
595
596                return $(drop);
597            },
598
599            createView: function () {
600                var $drop = this.createDropdown(),
601                    li = this.createLi();
602
603                $drop.find('ul')[0].innerHTML = li;
604                return $drop;
605            },
606
607            reloadLi: function () {
608                //Remove all children.
609                this.destroyLi();
610                //Re build
611                var li = this.createLi();
612                this.$menuInner[0].innerHTML = li;
613            },
614
615            destroyLi: function () {
616                this.$menu.find('li').remove();
617            },
618
619            createLi: function () {
620                var that = this,
621                    _li = [],
622                    optID = 0,
623                    titleOption = document.createElement('option'),
624                    liIndex = -1; // increment liIndex whenever a new <li> element is created to ensure liObj is correct
625
626                // Helper functions
627                /**
628                 * @param content
629                 * @param [index]
630                 * @param [classes]
631                 * @param [optgroup]
632                 * @returns {string}
633                 */
634                var generateLI = function (content, index, classes, optgroup) {
635                    return '<li' +
636                        ((typeof classes !== 'undefined' & '' !== classes) ? ' class="' + classes + '"' : '') +
637                        ((typeof index !== 'undefined' & null !== index) ? ' data-original-index="' + index + '"' : '') +
638                        ((typeof optgroup !== 'undefined' & null !== optgroup) ? 'data-optgroup="' + optgroup + '"' : '') +
639                        '>' + content + '</li>';
640                };
641
642                /**
643                 * @param text
644                 * @param [classes]
645                 * @param [inline]
646                 * @param [tokens]
647                 * @returns {string}
648                 */
649                var generateA = function (text, classes, inline, tokens) {
650                    return '<a tabindex="0"' +
651                        (typeof classes !== 'undefined' ? ' class="' + classes + '"' : '') +
652                        (typeof inline !== 'undefined' ? ' style="' + inline + '"' : '') +
653                        (that.options.liveSearchNormalize ? ' data-normalized-text="' + normalizeToBase(htmlEscape(text)) + '"' : '') +
654                        (typeof tokens !== 'undefined' || tokens !== null ? ' data-tokens="' + tokens + '"' : '') +
655                        '>
655' + text +
656                        '<span class="' + that.options.iconBase + ' ' + that.options.tickIcon + ' check-mark"></span>' +
657                        '</a>';
658                };
659
660                if (this.options.title && !this.multiple) {
661                    // this option doesn't create a new <li> element, but does add a new option, so liIndex is decreased
662                    // since liObj is recalculated on every refresh, liIndex needs to be decreased even if the titleOption is already appended
663                    liIndex--;
664
665                    if (!this.$element.find('.bs-title-option').length) {
666                        // Use native JS to prepend option (faster)
667                        var element = this.$element[0];
668                        titleOption.className = 'bs-title-option';
669                        titleOption.appendChild(document.createTextNode(this.options.title));
670                        titleOption.value = '';
671                        element.insertBefore(titleOption, element.firstChild);
672                        // Check if selected attribute is already set on an option. If not, select the titleOption option.
673                        if (element.options[element.selectedIndex].getAttribute('selected') === null) titleOption.selected = true;
674                    }
675                }
676
677                this.$element.find('option').each(function (index) {
678                    var $this = $(this);
679
680                    liIndex++;
681
682                    if ($this.hasClass('bs-title-option')) return;
683
684                    // Get the class and text for the option
685                    var optionClass = this.className || '',
686                        inline = this.style.cssText,
687                        text = $this.data('content') ? $this.data('content') : $this.html(),
688                        tokens = $this.data('tokens') ? $this.data('tokens') : null,
689                        subtext = typeof $this.data('subtext') !== 'undefined' ? '<small class="text-muted">' + $this.data('subtext') + '</small>' : '',
690                        icon = typeof $this.data('icon') !== 'undefined' ? '<span class="' + that.options.iconBase + ' ' + $this.data('icon') + '"></span> ' : '',
691                        isDisabled = this.disabled || this.parentElement.tagName === 'OPTGROUP' && this.parentElement.disabled;
692
693                    if (icon !== '' && isDisabled) {
694                        icon = '<span>' + icon + '</span>';
695                    }
696
697                    if (that.options.hideDisabled && isDisabled) {
698                        liIndex--;
699                        return;
700                    }
701
702                    if (!$this.data('content')) {
703                        // Prepend any icon and append any subtext to the main text.
704                        text = icon + '<span class="text">' + text + subtext + '</span>';
705                    }
706
707                    if (this.parentElement.tagName === 'OPTGROUP' && $this.data('divider') !== true) {
708                        if ($this.index() === 0) { // Is it the first option of the optgroup?
709                            optID += 1;
710
711                            // Get the opt group label
712                            var label = this.parentElement.label,
713                                labelSubtext = typeof $this.parent().data('subtext') !== 'undefined' ? '<small class="text-muted">' + $this.parent().data('subtext') + '</small>' : '',
714                                labelIcon = $this.parent().data('icon') ? '<span class="' + that.options.iconBase + ' ' + $this.parent().data('icon') + '"></span> ' : '',
715                                optGroupClass = ' ' + this.parentElement.className || '';
716
717                            label = labelIcon + '<span class="text">' + label + labelSubtext + '</span>';
718
719                            if (index !== 0 && _li.length > 0) { // Is it NOT the first option of the select && are there elements in the dropdown?
720                                liIndex++;
721                                _li.push(generateLI('', null, 'divi
721der', optID + 'div'));
722                            }
723                            liIndex++;
724                            _li.push(generateLI(label, null, 'dropdown-header' + optGroupClass, optID));
725                        }
726                        _li.push(generateLI(generateA(text, 'opt ' + optionClass + optGroupClass, inline, tokens), index, '', optID));
727                    } else if ($this.data('divider') === true) {
728                        _li.push(generateLI('', index, 'divider'));
729                    } else if ($this.data('hidden') === true) {
730                        _li.push(generateLI(generateA(text, optionClass, inline, tokens), index, 'hidden is-hidden'));
731                    } else {
732                        if (this.previousElementSibling && this.previousElementSibling.tagName === 'OPTGROUP') {
733                            liIndex++;
734                            _li.push(generateLI('', null, 'divider', optID + 'div'));
735                        }
736                        _li.push(generateLI(generateA(text, optionClass, inline, tokens), index));
737                    }
738
739                    that.liObj[index] = liIndex;
740                });
741
742                //If we are not multiple, we don't have a selected item, and we don't have a title, select the first element so something is set in the button
743                if (!this.multiple && this.$element.find('option:selected').length === 0 && !this.options.title) {
744                    this.$element.find('option').eq(0).prop('selected', true).attr('selected', 'selected');
745                }
746
747                return _li.join('');
748            },
749
750            findLis: function () {
751                if (this.$lis == null) this.$lis = this.$menu.find('li');
752                return this.$lis;
753            },
754
755            /**
756             * @param [updateLi] defaults to true
757             */
758            render: function (updateLi) {
759                var that = this,
760                    notDisabled;
761
762                //Update the LI to match the SELECT
763                if (updateLi !== false) {
764                    this.$element.find('option').each(function (index) {
765                        var $lis = that.findLis().eq(that.liObj[index]);
766
767                        that.setDisabled(index, this.disabled || this.parentElement.tagName === 'OPTGROUP' && this.parentElement.disabled, $lis);
768                        that.setSelected(index, this.selected, $lis);
769                    });
770                }
771
772                this.tabIndex();
773
774                var selectedItems = this.$element.find('option').map(function () {
775                    if (this.selected) {
776                        if (that.options.hideDisabled && (this.disabled || this.parentElement.tagName === 'OPTGROUP' && this.parentElement.disabled)) return false;
777
778                        var $this = $(this),
779                            icon = $this.data('icon') && that.options.showIcon ? '<i class="' + that.options.iconBase + ' ' + $this.data('icon') + '"></i> ' : '',
780                            subtext;
781
782                        if (that.options.showSubtext && $this.data('subtext') && !that.multiple) {
783                            subtext = ' <small class="text-muted">' + $this.data('subtext') + '</small>';
784                        } else {
785                            subtext = '';
786                        }
787                        if (typeof $this.attr('title') !== 'undefined') {
788                            return $this.attr('title');
789                        } else if ($this.data('content') && that.options.showContent) {
790                            return $this.data('content');
791                        } else {
792                            return icon + $this.html() + subtext;
793                        }
794                    }
795                }).toArray();
796
797                //Fixes issue in IE10 occurring when no default option is selected and at least one option is disabled
798                //Convert all the values into a comma delimited string
799                var title = !this.multiple ? selectedItems[0] : selectedItems.join(this.options.multipleSeparator);
800
801                //If this is multi select, and the selectText type is count, the show 1 of 2 selected etc..
802                if (this.multiple && this.options.selectedTextFormat.indexOf('count') > -1) {
803                    var max = this.options.selectedTextFormat.split('>');
804                    if ((max.length > 1 && selectedItems.length > max[1]) || (max.length == 1 && selectedItems.length >= 2)) {
805                        notDisabled = this.options.hideDisabled ? ', [disabled]' : '';
806                        var totalCount = this.$element.find('option').not('[data-divider="true"], [data-hidden="true"]' + notDisabled).length,
807                            tr8nText = (typeof this.options.countSelectedText === 'function') ? this.options.countSelectedText(selectedItems.length, totalCount) : this.options.countSelectedText;
808                        title = tr8nText.replace('{0}', selectedItems.length.toString()).replace('{1}', totalCount.toString());
809                    }
810                }
811
812                if (this.options.title == undefined) {
813                    this.options.title = this.$element.attr('title');
814                }
815
816                if (this.options.selectedTextFormat == 'static') {
817                    title = this.options.title;
818                }
819
820                //If we dont have a title, then use the default, or if nothing is set at all, use the not selected text
821                if (!title) {
822                    title = typeof this.options.title !== 'undefined' ? this.options.title : this.options.noneSelectedText;
823                }
824
825                //strip all html-tags and trim the result
826                this.$button.attr('title', $.trim(title.replace(/<[^>]*>?/g, '')));
827                this.$button.children('.filter-option').html(title);
828
829                this.$element.trigger('rendered.bs.select');
830            },
831
832            /**
833             * @param [style]
834             * @param [status]
835             */
836            setStyle: function (style, status) {
837                if (this.$element.attr('class')) {
838                    this.$newElement.addClass(this.$element.attr('class').replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi, ''));
839                }
840
841                var buttonClass = style ? style : this.options.style;
842
843                if (status == 'add') {
844                    this.$button.addClass(buttonClass);
845                } else if (status == 'remove') {
846                    this.$button.removeClass(buttonClass);
847                } else {
848                    this.$button.removeClass(this.options.style);
849                    this.$button.addClass(buttonClass);
850                }
851            },
852
853            liHeight: function (refresh) {
854                if (!refresh && (this.options.size === false || this.sizeInfo)) return;
855
856                var newElement = document.createElement('div'),
857                    menu = document.createElement('div'),
858                    menuInner = document.createElement('ul'),
859                    divider = document.createElement('li'),
860                    li = document.createElement('li'),
861                    a = document.createElement('a'),
862                    text = document.createElement('span'),
863                    header = this.options.header ? this.$menu.find('.popover-title')[0].cloneNode(true) : null,
864                    search = this.options.liveSearch ? document.createElement('div') : null,
865                    actions = this.options.actionsBox && this.multiple ? this.$menu.find('.bs-actionsbox')[0].cloneNode(true) : null,
866                    doneButton = this.options.doneButton && this.multiple ? this.$menu.find('.bs-donebutton')[0].cloneNode(true) : null;
867
868                text.className = 'text';
869                newElement.className = this.$menu[0].parentNode.className + ' open';
870                menu.className = 'dropdown-menu open';
871                menuInner.className = 'dropdown-menu inner';
872                divider.className = 'divider';
873
874                text.appendChild(document.createTextNode('Inner text'));
875                a.appendChild(text);
876                li.appendChild(a);
877                menuInner.appendChild(li);
878                menuInner.appendChild(divider);
879                if (header) menu.appendChild(header);
880                if (search) {
881                    // create a span instead of input as creating an input element is slower
882                    var input = document.createElement('span');
883                    search.className = 'bs-searchbox';
884                    input.className = 'form-control';
885                    search.appendChild(input);
886                    menu.appendChild(search);
887                }
888                if (actions) menu.appendChild(actions);
889                menu.appendChild(menuInner);
890                if (doneButton) menu.appendChild(doneButton);
891                newElement.appendChild(menu);
892
893                document.body.appendChild(newElement);
894
895                var liHeight = a.offsetHeight,
896                    headerHeight = header ? header.offsetHeight : 0,
897                    searchHeight = search ? search.offsetHeight : 0,
898                    actionsHeight = actions ? actions.offsetHeight : 0,
899                    doneButtonHeight = doneButton ? doneButton.offsetHeight : 0,
900                    dividerHeight = $(divider).outerHeight(true),
901                    // fall back to jQuery if getComputedStyle is not supported
902                    menuStyle = getComputedStyle ? getComputedStyle(menu) : false,
903                    $menu = menuStyle ? $(menu) : null,
904                    menuPadding = parseInt(menuStyle ? menuStyle.paddingTop : $menu.css('paddingTop')) +
905                        parseInt(menuStyle ? menuStyle.paddingBottom : $menu.css('paddingBottom')) +
906                        parseInt(menuStyle ? menuStyle.borderTopWidth : $menu.css('borderTopWidth')) +
907                        parseInt(menuStyle ? menuStyle.borderBottomWidth : $menu.css('borderBottomWidth')),
908                    menuExtras = menuPadding +
909                        parseInt(menuStyle ? menuStyle.marginTop : $menu.css('marginTop')) +
910                        parseInt(menuStyle ? menuStyle.marginBottom : $menu.css('marginBottom')) + 2;
911
912                document.body.removeChild(newElement);
913
914                this.sizeInfo = {
915                    liHeight: liHeight,
916                    headerHeight: headerHeight,
917                    searchHeight: searchHeight,
918                    actionsHeight: actionsHeight,
919                    doneButtonHeight: doneButtonHeight,
920                    dividerHeight: dividerHeight,
921                    menuPadding: menuPadding,
922                    menuExtras: menuExtras
923                };
924            },
925
926            setSize: function () {
927                this.findLis();
928                this.liHeight();
929                var that = this,
930                    $menu = this.$menu,
931                    $menuInner = this.$menuInner,
932                    $window = $(window),
933                    selectHeight = this.$newElement[0].offsetHeight,
934                    liHeight = this.sizeInfo['liHeight'],
935                    headerHeight = this.sizeInfo['headerHeight'],
936                    searchHeight = this.sizeInfo['searchHeight'],
937                    actionsHeight = this.sizeInfo['actionsHeight'],
938                    doneButtonHeight = this.sizeInfo['doneButtonHeight'],
939                    divHeight = this.sizeInfo['dividerHeight'],
940                    menuPadding = this.sizeInfo['menuPadding'],
941                    menuExtras = this.sizeInfo['menuExtras'],
942                    notDisabled = this.options.hideDisabled ? '.disabled' : '',
943                    menuHeight,
944                    getHeight,
945                    selectOffsetTop,
946                    selectOffsetBot,
947                    posVert = function () {
948                        selectOffsetTop = that.$newElement.offset().top - $window.scrollTop();
949                        selectOffsetBot = $window.height() - selectOffsetTop - selectHeight;
950                    };
951
952                posVert();
953
954                if (this.options.header) $menu.css('padding-top', 0);
955
956                if (this.options.size === 'auto') {
957                    var getSize = function () {
958                        var minHeight,
959                            hasClass = function (className, include) {
960                                return function (element) {
961                                    if (include) {
962                                        return (element.classList ? element.classList.contains(className) : $(element).hasClass(className));
963                                    } else {
964                                        return !(element.classList ? element.classList.contains(className) : $(element).hasClass(className));
965                                    }
966                                };
967                            },
968                            lis = that.$menuInner[0].getElementsByTagName('li'),
969                            lisVisible = Array.prototype.filter ? Array.prototype.filter.call(lis, hasClass('hidden', false)) : that.$lis.not('.hidden'),
970                            optGroup = Array.prototype.filter ? Array.prototype.filter.call(lisVisible, hasClass('dropdown-header', true)) : lisVisible.filter('.dropdown-header');
971
972                        posVert();
973                        menuHeight = selectOffsetBot - menuExtras;
974
975                        if (that.options.container) {
976                            if (!$menu.data('height')) $menu.data('height', $menu.height());
977                            getHeight = $menu.data('height');
978                        } else {
979                            getHeight = $menu.height();
980                        }
981
982                        if (that.options.dropupAuto) {
983                            that.$newElement.toggleClass('dropup', selectOffsetTop > selectOffsetBot && (menuHeight - menuExtras) < getHeight);
984                        }
985                        if (that.$newElement.hasClass('dropup')) {
986                            menuHeight = selectOffsetTop - menuExtras;
987                        }
988
989                        if ((lisVisible.length + optGroup.length) > 3) {
990                            minHeight = liHeight * 3 + menuExtras - 2;
991                        } else {
992                            minHeight = 0;
993                        }
994
995                        $menu.css({
996                            'max-height': menuHeight + 'px',
997                            'overflow': 'hidden',
998                            'min-height': minHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight + 'px'
999                        });
1000                        $menuInner.css({
1001                            'max-height': menuHeight - headerHeight - searchHeight - actionsHeight - doneButtonHeight - menuPadding + 'px',
1002                            'overflow-y': 'auto',
1003                            'min-height': Math.max(minHeight - menuPadding, 0) + 'px'
1004                        });
1005                    };
1006                    getSize();
1007                    this.$searchbox.off('input.getSize propertychange.getSize').on('input.getSize propertychange.getSize', getSize);
1008                    $window.off('resize.getSize scroll.getSize').on('resize.getSize scroll.getSize', getSize);
1009                } else if (this.options.size && this.options.size != 'auto' && this.$lis.not(notDisabled).length > this.options.size) {
1010                    var optIndex = this.$lis.not('.divider').not(notDisabled).children().slice(0, this.options.size).last().parent().index(),
1011                        divLength = this.$lis.slice(0, optIndex + 1).filter('.divider').length;
1012                    menuHeight = liHeight * this.options.size + divLength * divHeight + menuPadding;
1013
1014                    if (that.options.container) {
1015                        if (!$menu.data('height')) $menu.data('height', $menu.height());
1016                        getHeight = $menu.data('height');
1017                    } else {
1018                        getHeight = $menu.height();
1019                    }
1020
1021                    if (that.options.dropupAuto) {
1022                        //noinspection JSUnusedAssignment
1023                        this.$newElement.toggleClass('dropup', selectOffsetTop > selectOffsetBot && (menuHeight - menuExtras) < getHeight);
1024                    }
1025                    $menu.css({
1026                        'max-height': menuHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight + 'px',
1027                        'overflow': 'hidden',
1028                        'min-height': ''
1029                    });
1030                    $menuInner.css({
1031                        'max-height': menuHeight - menuPadding + 'px',
1032                        'overflow-y': 'auto',
1033                        'min-height': ''
1034                    });
1035                }
1036            },
1037
1038            setWidth: function () {
1039                if (this.options.width === 'auto') {
1040                    this.$menu.css('min-width', '0');
1041
1042                    // Get correct width if element is hidden
1043                    var $selectClone = this.$menu.parent().clone().appendTo('body'),
1044                        $selectClone2 = this.options.container ? this.$newElement.clone().appendTo('body') : $selectClone,
1045                        ulWidth = $selectClone.children('.dropdown-menu').outerWidth(),
1046                        btnWidth = $selectClone2.css('width', 'auto').children('button').outerWidth();
1047
1048                    $selectClone.remove();
1049                    $selectClone2.remove();
1050
1051                    // Set width to whatever's larger, button title or longest option
1052                    this.$newElement.css('width', Math.max(ulWidth, btnWidth) + 'px');
1053                } else if (this.options.width === 'fit') {
1054                    // Remove inline min-width so width can be changed from 'auto'
1055                    this.$menu.css('min-width', '');
1056                    this.$newElement.css('width', '').addClass('fit-width');
1057                } else if (this.options.width) {
1058                    // Remove inline min-width so width can be changed from 'auto'
1059                    this.$menu.css('min-width', '');
1060                    this.$newElement.css('width', this.options.width);
1061                } else {
1062                    // Remove inline min-width/width so width can be changed
1063                    this.$menu.css('min-width', '');
1064                    this.$newElement.css('width', '');
1065                }
1066                // Remove fit-width class if width is changed programmatically
1067                if (this.$newElement.hasClass('fit-width') && this.options.width !== 'fit') {
1068                    this.$newElement.removeClass('fit-width');
1069                }
1070            },
1071
1072            selectPosition: function () {
1073                var that = this,
1074                    drop = '<div />',
1075                    $drop = $(drop),
1076                    pos,
1077                    actualHeight,
1078                    getPlacement = function ($element) {
1079                        $drop.addClass($element.attr('class').replace(/form-control|fit-width/gi, '')).toggleClass('dropup', $element.hasClass('dropup'));
1080                        pos = $element.offset();
1081                        actualHeight = $element.hasClass('dropup') ? 0 : $element[0].offsetHeight;
1082                        $drop.css({
1083                            'top': pos.top + actualHeight,
1084                            'left': pos.left,
1085                            'width': $element[0].offsetWidth,
1086                            'position': 'absolute'
1087                        });
1088                    };
1089
1090                this.$newElement.on('click', function () {
1091                    if (that.isDisabled()) {
1092                        return;
1093                    }
1094                    getPlacement($(this));
1095                    $drop.appendTo(that.options.container);
1096                    $drop.toggleClass('open', !$(this).hasClass('open'));
1097                    $drop.append(that.$menu);
1098                });
1099
1100                $(window).on('resize scroll', function () {
1101                    getPlacement(that.$newElement);
1102                });
1103
1104                this.$element.on('hide.bs.select', function () {
1105                    that.$menu.data('height', that.$menu.height());
1106                    $drop.detach();
1107                });
1108            },
1109
1110            setSelected: function (index, selected, $lis) {
1111                if (!$lis) {
1112                    var $lis = this.findLis().eq(this.liObj[index]);
1113                }
1114
1115                $lis.toggleClass('selected', selected);
1116            },
1117
1118            setDisabled: function (index, disabled, $lis) {
1119                if (!$lis) {
1120                    var $lis = this.findLis().eq(this.liObj[index]);
1121                }
1122
1123                if (disabled) {
1124                    $lis.addClass('disabled').children('a').attr('href', '#').attr('tabindex', -1);
1125                } else {
1126                    $lis.removeClass('disabled').children('a').removeAttr('href').attr('tabindex', 0);
1127                }
1128            },
1129
1130            isDisabled: function () {
1131                return this.$element[0].disabled;
1132            },
1133
1134            checkDisabled: function () {
1135                var that = this;
1136
1137                if (this.isDisabled()) {
1138                    this.$newElement.addClass('disabled');
1139                    this.$button.addClass('disabled').attr('tabindex', -1);
1140                } else {
1141                    if (this.$button.hasClass('disabled')) {
1142                        this.$newElement.removeClass('disabled');
1143                        this.$button.removeClass('disabled');
1144                    }
1145
1146                    if (this.$button.attr('tabindex') == -1 && !this.$element.data('tabindex')) {
1147                        this.$button.removeAttr('tabindex');
1148                    }
1149                }
1150
1151                this.$button.click(function () {
1152                    return !that.isDisabled();
1153                });
1154            },
1155
1156            tabIndex: function () {
1157                if (this.$element.is('[tabindex]')) {
1158                    this.$element.data('tabindex', this.$element.attr('tabindex'));
1159                    this.$button.attr('tabindex', this.$element.data('tabindex'));
1160                }
1161            },
1162
1163            clickListener: function () {
1164                var that = this,
1165                    $document = $(document);
1166
1167                this.$newElement.on('touchstart.dropdown', '.dropdown-menu', function (e) {
1168                    e.stopPropagation();
1169                });
1170
1171                $document.data('spaceSelect', false);
1172
1173                this.$button.on('keyup', function (e) {
1174                    if (/(32)/.test(e.keyCode.toString(10)) && $document.data('spaceSelect')) {
1175                        e.preventDefault();
1176                        $document.data('spaceSelect', false);
1177                    }
1178                });
1179
1180                this.$newElement.on('click', function () {
1181                    that.setSize();
1182                    that.$element.on('shown.bs.select', function () {
1183                        if (!that.options.liveSearch && !that.multiple) {
1184                            that.$menu.find('.selected a').focus();
1185                        } else if (!that.multiple) {
1186                            var selectedIndex = that.liObj[that.$element[0].selectedIndex];
1187
1188                            if (typeof selectedIndex !== 'number') return;
1189
1190                            // scroll to selected option
1191                            var offset = that.$lis.eq(selectedIndex)[0].offsetTop - that.$menuInner[0].offsetTop;
1192                            offset = offset - that.$menuInner[0].offsetHeight / 2 + that.sizeInfo.liHeight / 2;
1193                            that.$menuInner[0].scrollTop = offset;
1194                        }
1195                    });
1196                });
1197
1198                this.$menu.on('click', 'li a', function (e) {
1199                    var $this = $(this),
1200                        clickedIndex = $this.parent().data('originalIndex'),
1201       
1201                 prevValue = that.$element.val(),
1202                        prevIndex = that.$element.prop('selectedIndex');
1203
1204                    // Don't close on multi choice menu
1205                    if (that.multiple) {
1206                        e.stopPropagation();
1207                    }
1208
1209                    e.preventDefault();
1210
1211                    //Don't run if we have been disabled
1212                    if (!that.isDisabled() && !$this.parent().hasClass('disabled')) {
1213                        var $options = that.$element.find('option'),
1214                            $option = $options.eq(clickedIndex),
1215                            state = $option.prop('selected'),
1216                            $optgroup = $option.parent('optgroup'),
1217                            maxOptions = that.options.maxOptions,
1218                            maxOptionsGrp = $optgroup.data('maxOptions') || false;
1219
1220                        if (!that.multiple) { // Deselect all others if not multi select box
1221                            $options.prop('selected', false);
1222                            $option.prop('selected', true);
1223                            that.$menu.find('.selected').removeClass('selected');
1224                            that.setSelected(clickedIndex, true);
1225                        } else { // Toggle the one we have chosen if we are multi select.
1226                            $option.prop('selected', !state);
1227                            that.setSelected(clickedIndex, !state);
1228                            $this.blur();
1229
1230                            if (maxOptions !== false || maxOptionsGrp !== false) {
1231                                var maxReached = maxOptions < $options.filter(':selected').length,
1232                                    maxReachedGrp = maxOptionsGrp < $optgroup.find('option:selected').length;
1233
1234                                if ((maxOptions && maxReached) || (maxOptionsGrp && maxReachedGrp)) {
1235                                    if (maxOptions && maxOptions == 1) {
1236                                        $options.prop('selected', false);
1237                                        $option.prop('selected', true);
1238                                        that.$menu.find('.selected').removeClass('selected');
1239                                        that.setSelected(clickedIndex, true);
1240                                    } else if (maxOptionsGrp && maxOptionsGrp == 1) {
1241                                        $optgroup.find('option:selected').prop('selected', false);
1242                                        $option.prop('selected', true);
1243                                        var optgroupID = $this.parent().data('optgroup');
1244                                        that.$menu.find('[data-optgroup="' + optgroupID + '"]').removeClass('selected');
1245                                        that.setSelected(clickedIndex, true);
1246                                    } else {
1247                                        var maxOptionsArr = (typeof that.options.maxOptionsText === 'function') ?
1248                                            that.options.maxOptionsText(maxOptions, maxOptionsGrp) : that.options.maxOptionsText,
1249                                            maxTxt = maxOptionsArr[0].replace('{n}', maxOptions),
1250                                            maxTxtGrp = maxOptionsArr[1].replace('{n}', maxOptionsGrp),
1251                                            $notify = $('<div class="notify"></div>');
1252                                        // If {var} is set in array, replace it
1253                                        /** @deprecated */
1254                                        if (maxOptionsArr[2]) {
1255                                            maxTxt = maxTxt.replace('{var}', maxOptionsArr[2][maxOptions > 1 ? 0 : 1]);
1256                                            maxTxtGrp = maxTxtGrp.replace('{var}', maxOptionsArr[2][maxOptionsGrp > 1 ? 0 : 1]);
1257                                        }
1258
1259                                        $option.prop('selected', false);
1260
1261                                        that.$menu.append($notify);
1262
1263                                        if (maxOptions && maxReached) {
1264                                            $notify.append($('<div>' + maxTxt + '</div>'));
1265                                            that.$element.trigger('maxReached.bs.select');
1266                                        }
1267
1268                                        if (maxOptionsGrp && maxReachedGrp) {
1269                                            $notify.append($('<div>' + maxTxtGrp + '</div>'));
1270                                            that.$element.trigger('maxReachedGrp.bs.select');
1271                                        }
1272
1273                                        setTimeout(function () {
1274                                            that.setSelected(clickedIndex, false);
1275                                        }, 10);
1276
1277                                        $notify.delay(750).fadeOut(300, function () {
1278                                            $(this).remove();
1279                                        });
1280                                    }
1281                                }
1282                            }
1283                        }
1284
1285                        if (!that.multiple) {
1286                            that.$button.focus();
1287                        } else if (that.options.liveSearch) {
1288                            that.$searchbox.focus();
1289                        }
1290
1291                        // Trigger select 'change'
1292                        if ((prevValue != that.$element.val() && that.multiple) || (prevIndex != that.$element.prop('selectedIndex') && !that.multiple)) {
1293                            that.$element.change();
1294                            // $option.prop('selected') is current option state (selected/unselected). state is previous option state.
1295                            that.$element.trigger('changed.bs.select', [clickedIndex, $option.prop('selected'), state]);
1296                        }
1297                    }
1298                });
1299
1300                this.$menu.on('click', 'li.disabled a, .popover-title, .popover-title :not(.close)', function (e) {
1301                    if (e.currentTarget == this) {
1302                        e.preventDefault();
1303                        e.stopPropagation();
1304                        if (that.options.liveSearch && !$(e.target).hasClass('close')) {
1305                            that.$searchbox.focus();
1306                        } else {
1307                            that.$button.focus();
1308                        }
1309                    }
1310                });
1311
1312                this.$menu.on('click', 'li.divider, li.dropdown-header', function (e) {
1313                    e.preventDefault();
1314                    e.stopPropagation();
1315                    if (that.options.liveSearch) {
1316                        that.$searchbox.focus();
1317                    } else {
1318                        that.$button.focus();
1319                    }
1320                });
1321
1322                this.$menu.on('click', '.popover-title .close', function () {
1323                    that.$button.click();
1324                });
1325
1326                this.$searchbox.on('click', function (e) {
1327                    e.stopPropagation();
1328                });
1329
1330                this.$menu.on('click', '.actions-btn', function (e) {
1331                    if (that.options.liveSearch) {
1332                        that.$searchbox.focus();
1333                    } else {
1334                        that.$button.focus();
1335                    }
1336
1337                    e.preventDefault();
1338                    e.stopPropagation();
1339
1340                    if ($(this).hasClass('bs-select-all')) {
1341                        that.selectAll();
1342                    } else {
1343                        that.deselectAll();
1344                    }
1345                    that.$element.change();
1346                });
1347
1348                this.$element.change(function () {
1349                    that.render(false);
1350                });
1351            },
1352
1353            liveSearchListener: function () {
1354                var that = this,
1355                    $no_results = $('<li class="no-results"></li>');
1356
1357                this.$newElement.on('click.dropdown.data-api touchstart.dropdown.data-api', function () {
1358                    that.$menuInner.find('.active').removeClass('active');
1359                    if (!!that.$searchbox.val()) {
1360                        that.$searchbox.val('');
1361                        that.$lis.not('.is-hidden').removeClass('hidden');
1362                        if (!!$no_results.parent().length) $no_results.remove();
1363                    }
1364                    if (!that.multiple) that.$menuInner.find('.selected').addClass('active');
1365                    setTimeout(function () {
1366                        that.$searchbox.focus();
1367                    }, 10);
1368                });
1369
1370                this.$searchbox.on('click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api', function (e) {
1371                    e.stopPropagation();
1372                });
1373
1374                this.$searchbox.on('input propertychange', function () {
1375                    if (that.$searchbox.val()) {
1376                        var $searchBase = that.$lis.not('.is-hidden').removeClass('hidden').children('a');
1377                        if (that.options.liveSearchNormalize) {
1378                            $searchBase = $searchBase.not(':a' + that._searchStyle() + '(' + normalizeToBase(that.$searchbox.val()) + ')');
1379                        } else {
1380                            $searchBase = $searchBase.not(':' + that._searchStyle() + '(' + that.$searchbox.val() + ')');
1381                        }
1382                        $searchBase.parent().addClass('hidden');
1383
1384                        that.$lis.filter('.dropdown-header').each(function () {
1385                            var $this = $(this),
1386                                optgroup = $this.data('optgroup');
1387
1388                            if (that.$lis.filter('[data-optgroup=' + optgroup + ']').not($this).not('.hidden').length === 0) {
1389                                $this.addClass('hidden');
1390                                that.$lis.filter('[data-optgroup=' + optgroup + 'div]').addClass('hidden');
1391                            }
1392                        });
1393
1394                        var $lisVisible = that.$lis.not('.hidden');
1395
1396                        // hide divider if first or last visible, or if followed by another divider
1397                        $lisVisible.each(function (index) {
1398                            var $this = $(this);
1399
1400                            if ($this.hasClass('divider') && (
1401                                $this.index() === $lisVisible.eq(0).index() ||
1402                                $this.index() === $lisVisible.last().index() ||
1403                                $lisVisible.eq(index + 1).hasClass('divider'))) {
1404                                $this.addClass('hidden');
1405                            }
1406                        });
1407
1408                        if (!that.$lis.not('.hidden, .no-results').length) {
1409                            if (!!$no_results.parent().length) {
1410                                $no_results.remove();
1411                            }
1412                            $no_results.html(that.options.noneResultsText.replace('{0}', '"' + htmlEscape(that.$searchbox.val()) + '"')).show();
1413                            that.$menuInner.append($no_results);
1414                        } else if (!!$no_results.parent().length) {
1415                            $no_results.remove();
1416                        }
1417
1418                    } else {
1419                        that.$lis.not('.is-hidden').removeClass('hidden');
1420                        if (!!$no_results.parent().length) {
1421                            $no_results.remove();
1422                        }
1423                    }
1424
1425                    that.$lis.filter('.active').removeClass('active');
1426                    that.$lis.not('.hidden, .divider, .dropdown-header').eq(0).addClass('active')
1427                       // .children('a')
1428                        .focus();
1429                    $(this).focus();
1430                });
1431            },
1432
1433            _searchStyle: function () {
1434                var style = 'icontains';
1435                switch (this.options.liveSearchStyle) {
1436                    case 'begins':
1437                    case 'startsWith':
1438                        style = 'ibegins';
1439                        break;
1440                    case 'contains':
1441                    default:
1442                        break; //no need to change the default
1443                }
1444
1445                return style;
1446            },
1447
1448            val: function (value) {
1449                if (typeof value !== 'undefined') {
1450                    this.$element.val(value);
1451                    this.render();
1452
1453                    return this.$element;
1454                } else {
1455                    return this.$element.val();
1456                }
1457            },
1458
1459            selectAll: function () {
1460                this.findLis();
1461                this.$element.find('option:enabled').not('[data-divider], [data-hidden]').prop('selected', true);
1462                this.$lis.not('.divider, .dropdown-header, .disabled, .hidden').addClass('selected');
1463                this.render(false);
1464            },
1465
1466            deselectAll: function () {
1467                this.findLis();
1468                this.$element.find('option:enabled').not('[data-divider], [data-hidden]').prop('selected', false);
1469                this.$lis.not('.divider, .dropdown-header, .disabled, .hidden').removeClass('selected');
1470                this.render(false);
1471            },
1472
1473            keydown: function (e) {
1474                var $this = $(this),
1475                    $parent = $this.is('input') ? $this.parent().parent() : $this.parent(),
1476                    $items,
1477                    that = $parent.data('this'),
1478                    index,
1479                    next,
1480                    first,
1481                    last,
1482                    prev,
1483                    nextPrev,
1484                    prevIndex,
1485                    isActive,
1486                    selector = ':not(.disabled, .hidden, .dropdown-header, .divider)',
1487                    keyCodeMap = {
1488                        32: ' ',
1489                        48: '0',
1490                        49: '1',
1491                        50: '2',
1492                        51: '3',
1493                        52: '4',
1494                        53: '5',
1495                        54: '6',
1496                        55: '7',
1497                        56: '8',
1498                        57: '9',
1499                        59: ';',
1500                        65: 'a',
1501                        66: 'b',
1502                        67: 'c',
1503                        68: 'd',
1504                        69: 'e',
1505                        70: 'f',
1506                        71: 'g',
1507                        72: 'h',
1508                        73: 'i',
1509                        74: 'j',
1510                        75: 'k',
1511                        76: 'l',
1512                        77: 'm',
1513                        78: 'n',
1514                        79: 'o',
1515                        80: 'p',
1516                        81: 'q',
1517                        82: 'r',
1518                        83: 's',
1519                        84: 't',
1520                        85: 'u',
1521                        86: 'v',
1522                        87: 'w',
1523                        88: 'x',
1524                        89: 'y',
1525                        90: 'z',
1526                        96: '0',
1527                        97: '1',
1528                        98: '2',
1529                        99: '3',
1530                        100: '4',
1531                        101: '5',
1532                        102: '6',
1533                        103: '7',
1534                        104: '8',
1535                        105: '9'
1536                    };
1537
1538                if (that.options.liveSearch) $parent = $this.parent().parent();
1539
1540                if (that.options.container) $parent = that.$menu;
1541
1542                $items = $('[role=menu] li a', $parent);
1543
1544                isActive = that.$menu.parent().hasClass('open');
1545
1546                if (!isActive && (e.keyCode >= 48 && e.keyCode <= 57 || event.keyCode >= 65 && event.keyCode <= 90)) {
1547                    if (!that.options.container) {
1548                        that.setSize();
1549                        that.$menu.parent().addClass('open');
1550                        isActive = true;
1551                    } else {
1552                        that.$newElement.trigger('click');
1553                    }
1554                    that.$searchbox.focus();
1555                }
1556
1557                if (that.options.liveSearch) {
1558                    if (/(^9$|27)/.test(e.keyCode.toString(10)) && isActive && that.$menu.find('.active').length === 0) {
1559                        e.preventDefault();
1560                        that.$menu.parent().removeClass('open');
1561                        if (that.options.container) that.$newElement.removeClass('open');
1562                        that.$button.focus();
1563                    }
1564                    // $items contains li elements when liveSearch is enabled
1565                    $items = $('[role=menu] li:not(.disabled, .hidden, .dropdown-header, .divider)', $parent);
1566                    if (!$this.val() && !/(38|40)/.test(e.keyCode.toString(10))) {
1567                        if ($items.filter('.active').length === 0) {
1568                            $items = that.$newElement.find('li');
1569                            if (that.options.liveSearchNormalize) {
1570                                $items = $items.filter(':a' + that._searchStyle() + '(' + normalizeToBase(keyCodeMap[e.keyCode]) + ')');
1571                            } else {
1572                                $items = $items.filter(':' + that._searchStyle() + '(' + keyCodeMap[e.keyCode] + ')');
1573                            }
1574                        }
1575                    }
1576                }
1577
1578                if (!$items.length) return;
1579
1580                if (/(38|40)/.test(e.keyCode.toString(10))) {
1581                    index = $items.index($items.filter(':focus'));
1582                    first = $items.parent(selector).first().data('originalIndex');
1583                    last = $items.parent(selector).last().data('originalIndex');
1584                    next = $items.eq(index).parent().nextAll(selector).eq(0).data('originalIndex');
1585                    prev = $items.eq(index).parent().prevAll(selector).eq(0).data('originalIndex');
1586                    nextPrev = $items.eq(next).parent().prevAll(selector).eq(0).data('originalIndex');
1587
1588                    if (that.options.liveSearch) {
1589                        $items.each(function (i) {
1590                            if (!$(this).hasClass('disabled')) {
1591                                $(this).data('index', i);
1592                            }
1593                        });
1594                        index = $items.index($items.filter('.active'));
1595                        first = $items.first().data('index');
1596                        last = $items.last().data('index');
1597                        next = $items.eq(index).nextAll().eq(0).data('index');
1598                        prev = $items.eq(index).prevAll().eq(0).data('index');
1599                        nextPrev = $items.eq(next).prevAll().eq(0).data('index');
1600                    }
1601
1602                    prevIndex = $this.data('prevIndex');
1603
1604                    if (e.keyCode == 38) {
1605                        if (that.options.liveSearch) index -= 1;
1606                        if (index != nextPrev && index > prev) index = prev;
1607                        if (index < first) index = first;
1608                        if (index == prevIndex) index = last;
1609                    } else if (e.keyCode == 40) {
1610                        if (that.options.liveSearch) index += 1;
1611                        if (index == -1) index = 0;
1612                        if (index != nextPrev && index < next) index = next;
1613                        if (index > last) index = last;
1614                        if (index == prevIndex) index = first;
1615                    }
1616
1617                    $this.data('prevIndex', index);
1618
1619                    if (!that.options.liveSearch) {
1620                        $items.eq(index).focus();
1621                    } else {
1622                        e.preventDefault();
1623                        if (!$this.hasClass('dropdown-toggle')) {
1624                            $items.removeClass('active').eq(index).addClass('active').children('a').focus();
1625                            $this.focus();
1626                        }
1627                    }
1628
1629                } else if (!$this.is('input')) {
1630                    var keyIndex = [],
1631                        count,
1632                        prevKey;
1633
1634                    $items.each(function () {
1635                        if (!$(this).parent().hasClass('disabled')) {
1636                            if ($.trim($(this).text().toLowerCase()).substring(0, 1) == keyCodeMap[e.keyCode]) {
1637                                keyIndex.push($(this).parent().index());
1638                            }
1639                        }
1640                    });
1641
1642                    count = $(document).data('keycount');
1643                    count++;
1644                    $(document).data('keycount', count);
1645
1646                    prevKey = $.trim($(':focus').text().toLowerCase()).substring(0, 1);
1647
1648                    if (prevKey != keyCodeMap[e.keyCode]) {
1649                        count = 1;
1650                        $(document).data('keycount', count);
1651                    } else if (count >= keyIndex.length) {
1652                        $(document).data('keycount', 0);
1653                        if (count > keyIndex.length) count = 1;
1654                    }
1655
1656                    $items.eq(keyIndex[count - 1]).focus();
1657                }
1658
1659                // Select focused option if "Enter", "Spacebar" or "Tab" (when selectOnTab is true) are pressed inside the menu.
1660                if ((/(13|32)/.test(e.keyCode.toString(10)) || (/(^9$)/.test(e.keyCode.toString(10)) && that.options.selectOnTab)) && isActive) {
1661                    if (!/(32)/.test(e.keyCode.toString(10))) e.preventDefault();
1662                    if (!that.options.liveSearch) {
1663                        var elem = $(':focus');
1664                        elem.click();
1665                        // Bring back focus for multiselects
1666                        elem.focus();
1667                        // Prevent screen from scrolling if the user hit the spacebar
1668                        e.preventDefault();
1669                        // Fixes spacebar selection of dropdown items in FF & IE
1670                        $(document).data('spaceSelect', true);
1671                    } else if (!/(32)/.test(e.keyCode.toString(10))) {
1672                        that.$menu.find('.active a').click();
1673                        $this.focus();
1674                    }
1675                    $(document).data('keycount', 0);
1676                }
1677
1678                if ((/(^9$|27)/.test(e.keyCode.toString(10)) && isActive && (that.multiple || that.options.liveSearch)) || (/(27)/.test(e.keyCode.toString(10)) && !isActive)) {
1679                    that.$menu.parent().removeClass('open');
1680                    if (that.options.container) that.$newElement.removeClass('open');
1681                    that.$button.focus();
1682                }
1683            },
1684
1685            mobile: function () {
1686                this.$element.addClass('mobile-device').appendTo(this.$newElement);
1687                if (this.options.container) this.$menu.hide();
1688            },
1689
1690            refresh: function () {
1691                this.$lis = null;
1692                this.reloadLi();
1693                this.render();
1694                this.checkDisabled();
1695                this.liHeight(true);
1696                this.setStyle();
1697                this.setWidth();
1698                if (this.$lis) this.$searchbox.trigger('propertychange');
1699
1700                this.$element.trigger('refreshed.bs.select');
1701            },
1702
1703            hide: function () {
1704                this.$newElement.hide();
1705            },
1706
1707            show: function () {
1708                this.$newElement.show();
1709            },
1710
1711            remove: function () {
1712                this.$newElement.remove();
1713                this.$element.remove();
1714            }
1715        };
1716
1717        // SELECTPICKER PLUGIN DEFINITION
1718        // ==============================
1719        function Plugin(option, event) {
1720            // get the args of the outer function..
1721            var args = arguments;
1722            // The arguments of the function are explicitly re-defined from the argument list, because the shift causes them
1723            // to get lost/corrupted in android 2.3 and IE9 #715 #775
1724            var _option = option,
1725                _event = event;
1726            [].shift.apply(args);
1727
1728            var value;
1729            var chain = this.each(function () {
1730                var $this = $(this);
1731                if ($this.is('select')) {
1732                    var data = $this.data('selectpicker'),
1733                        options = typeof _option == 'object' && _option;
1734
1735                    if (!data) {
1736                        var config = $.extend({}, Selectpicker.DEFAULTS, $.fn.selectpicker.defaults || {}, $this.data(), options);
1737                        $this.data('selectpicker', (data = new Selectpicker(this, config, _event)));
1738                    } else if (options) {
1739                        for (var i in options) {
1740                            if (options.hasOwnProperty(i)) {
1741                                data.options[i] = options[i];
1742                            }
1743                        }
1744                    }
1745
1746                    if (typeof _option == 'string') {
1747                        if (data[_option] instanceof Function) {
1748                            value = data[_option].apply(data, args);
1749                        } else {
1750                            value = data.options[_option];
1751                        }
1752                    }
1753                }
1754            });
1755
1756            if (typeof value !== 'undefined') {
1757                //noinspection JSUnusedAssignment
1758                return value;
1759            } else {
1760                return chain;
1761            }
1762        }
1763
1764        var old = $.fn.selectpicker;
1765        $.fn.selectpicker = Plugin;
1766        $.fn.selectpicker.Constructor = Selectpicker;
1767
1768        // SELECTPICKER NO CONFLICT
1769        // ========================
1770        $.fn.selectpicker.noConflict = function () {
1771            $.fn.selectpicker = old;
1772            return this;
1773        };
1774
1775        $(document)
1776            .data('keycount', 0)
1777            .on('keydown', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input', Selectpicker.prototype.keydown)
1778            .on('focusin.modal', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input', function (e) {
1779                e.stopPropagation();
1780            });
1781
1782        // SELECTPICKER DATA-API
1783        // =====================
1784        $(window).on('load.bs.select.data-api', function () {
1785            $('.selectpicker:not(.bs-select-hidden)').each(function () {
1786                var $selectpicker = $(this);
1787                Plugin.call($selectpicker, $selectpicker.data());
1788            })
1789        });
1790    })(jQuery);
1791
1792
1793}));
1794;
1795/* NUGET: BEGIN LICENSE TEXT
1796 *
vendor: 4,721 bytes, lines 1797-1815
1797 * Microsoft grants you the right to use these script files for the sole
1798 * purpose of either: (i) interacting through your browser with the Microsoft
1799 * website or online service, subject to the applicable licensing or use
1800 * terms; or (ii) using the files as included with a Microsoft product subject
1801 * to that product's license terms. Microsoft reserves all other rights to the
1802 * files not expressly granted by Microsoft, whether by implication, estoppel
1803 * or otherwise. Insofar as a script file is dual licensed under GPL,
1804 * Microsoft neither took the code under GPL nor distributes it thereunder but
1805 * under the terms set out in this paragraph. All notices and licenses
1806 * below are for informational purposes only.
1807 *
1808 * NUGET: END LICENSE TEXT */
1809
1810/**
1811* bootstrap.js v3.0.0 by @fat and @mdo
1812* Copyright 2013 Twitter Inc.
1813* http://www.apache.org/licenses/LICENSE-2.0
1814*/
1815if (!jQuery) throw new Error("Bootstrap requires jQuery"); +function (a) { "use strict"; function b() { var a = document.createElement("bootstrap"), b = { WebkitTransition: "webkitTransitionEnd", MozTransition: "transitionend", OTransition: "oTransitionEnd otransitionend", transition: "transitionend" }; for (var c in b) if (void 0 !== a.style[c]) return { end: b[c] } } a.fn.emulateTransitionEnd = function (b) { var c = !1, d = this; a(this).one(a.support.transition.end, function () { c = !0 }); var e = function () { c || a(d).trigger(a.support.transition.end) }; return setTimeout(e, b), this }, a(function () { a.support.transition = b() }) }(window.jQuery), +function (a) { "use strict"; var b = '[data-dismiss="alert"]', c = function (c) { a(c).on("click", b, this.close) }; c.prototype.close = function (b) { function c() { f.trigger("closed.bs.alert").remove() } var d = a(this), e = d.attr("data-target"); e || (e = d.attr("href"), e = e && e.replace(/.*(?=#[^\s]*$)/, "")); var f = a(e); b && b.preventDefault(), f.length || (f = d.hasClass("alert") ? d : d.parent()), f.trigger(b = a.Event("close.bs.alert")), b.isDefaultPrevented() || (f.removeClass("in"), a.support.transition && f.hasClass("fade") ? f.one(a.support.transition.end, c).emulateTransitionEnd(150) : c()) }; var d = a.fn.alert; a.fn.alert = function (b) { return this.each(function () { var d = a(this), e = d.data("bs.alert"); e || d.data("bs.alert", e = new c(this)), "string" == typeof b && e[b].call(d) }) }, a.fn.alert.Constructor = c, a.fn.alert.noConflict = function () { return a.fn.alert = d, this }, a(document).on("click.bs.alert.data-api", b, c.prototype.close) }(window.jQuery), +function (a) { "use strict"; var b = function (c, d) { this.$element = a(c), this.options = a.extend({}, b.DEFAULTS, d) }; b.DEFAULTS = { loadingText: "loading..." }, b.prototype.setState = function (a) { var b = "disabled", c = this.$element, d = c.is("input") ? "val" : "html", e = c.data(); a += "Text", e.resetText || c.data("resetText", c[d]()), c[d](e[a] || this.options[a]), setTimeout(function () { "loadingText" == a ? c.addClass(b).attr(b, b) : c.removeClass(b).removeAttr(b) }, 0) }, b.prototype.toggle = function () { var a = this.$element.closest('[data-toggle="buttons"]'); if (a.length) { var b = this.$element.find("input").prop("checked", !this.$element.hasClass("active")).trigger("change"); "radio" === b.prop("type") && a.find(".active").removeClass("active") } this.$element.toggleClass("active") }; var c = a.fn.button; a.fn.button = function (c) { return this.each(function () { var d = a(this), e = d.data("bs.button"), f = "object" == typeof c && c; e || d.data("bs.button", e = new b(this, f)), "toggle" == c ? e.toggle() : c && e.setState(c) }) }, a.fn.button.Constructor = b, a.fn.button.noConflict = function () { return a.fn.button = c, this }, a(document).on("click.bs.button.data-api", "[data-toggle^=button]", function (b) { var c = a(b.target); c.hasClass("btn") || (c = c.closest(".btn")), c.button("toggle"), b.preventDefault() }) }(window.jQuery), +function (a) { "use strict"; var b = function (b, c) { this.$element = a(b), this.$indicators = this.$element.find(".carousel-indicators"), this.options = c, this.paused = this.sliding = this.interval = this.$active = this.$items = null, "hover" == this.options.pause && this.$element.on("mouseenter", a.proxy(this.pause, this)).on("mouseleave", a.proxy(this.cycle, this)) }; b.DEFAULTS = { interval: 5e3, pause: "hover", wrap: !0 }, b.prototype.cycle = function (b) { return b || (this.paused = !1), this.interval && clearInterval(this.interval), this.options.interval && !this.paused && (this.interval = setInterval(a.proxy(this.next, this), this.options.interval)), this }, b.prototype.getActiveIndex = function () { return this.$active = this.$element.find(".
1815item.active"), this.$items = this.$active.parent().children(), this.$items.index(this.$active) }, b.prototype.to = function (b) { var c = this, d = this.getActiveIndex(); return b > this.$items.length - 1 || 0 > b ? void 0 : this.sliding ? this.$element.one("slid", function () { c.to(b) }) : d == b ? this.pause().cycle() : this.slide(b > d ? "next" : "prev", a(this.$items[b])) }, b.prototype.pause = function (b) { return b || (this.paused = !0), this.$element.find(".next, .prev").length && a.support.transition.end && (this.$element.trigger(a.support.transition.end), this.cycle(!0)), this.interval = clearInterval(this.interval), this }, b.prototype.next = function () { return this.sliding ? void 0 : this.slide("next") }, b.prototype.prev = function () { return this.sliding ? void 0 : this.slide("prev") }, b.prototype.slide = function (b, c) { var d = this.$element.find(".item.active"), e = c || d[b](), f = this.interval, g = "next" == b ? "left" : "right", h = "next" == b ? "first" : "last", i = this; if (!e.length) { if (!this.options.wrap) return; e = this.$element.find(".item")[h]() } this.sliding = !0, f && this.pause(); var j = a.Event("slide.bs.carousel", { relatedTarget: e[0], direction: g }); if (!e.hasClass("active")) { if (this.$indicators.length && (this.$indicators.find(".active").removeClass("active"), this.$element.one("slid", function () { var b = a(i.$indicators.children()[i.getActiveIndex()]); b && b.addClass("active") })), a.support.transition && this.$element.hasClass("slide")) { if (this.$element.trigger(j), j.isDefaultPrevented()) return; e.addClass(b), e[0].offsetWidth, d.addClass(g), e.addClass(g), d.one(a.support.transition.end, function () { e.removeClass([b, g].join(" ")).addClass("active"), d.removeClass(["active", g].join(" ")), i.sliding = !1, setTimeout(function () { i.$element.trigger("slid") }, 0) }).emulateTransitionEnd(600) } else { if (this.$element.trigger(j), j.isDefaultPrevented()) return; d.removeClass("active"), e.addClass("active"), this.sliding = !1, this.$element.trigger("slid") } return f && this.cycle(), this } }; var c = a.fn.carousel; a.fn.carousel = function (c) { return this.each(function () { var d = a(this), e = d.data("bs.carousel"), f = a.extend({}, b.DEFAULTS, d.data(), "object" == typeof c && c), g = "string" == typeof c ? c : f.slide; e || d.data("bs.carousel", e = new b(this, f)), "number" == typeof c ? e.to(c) : g ? e[g]() : f.interval && e.pause().cycle() }) }, a.fn.carousel.Constructor = b, a.fn.carousel.noConflict = function () { return a.fn.carousel = c, this }, a(document).on("click.bs.carousel.data-api", "[data-slide], [data-slide-to]", function (b) { var c, d = a(this), e = a(d.attr("data-target") || (c = d.attr("href")) && c.replace(/.*(?=#[^\s]+$)/, "")), f = a.extend({}, e.data(), d.data()), g = d.attr("data-slide-to"); g && (f.interval = !1), e.carousel(f), (g = d.attr("data-slide-to")) && e.data("bs.carousel").to(g), b.preventDefault() }), a(window).on("load", function () { a('[data-ride="carousel"]').each(function () { var b = a(this); b.carousel(b.data()) }) }) }(window.jQuery), +function (a) { "use strict"; var b = function (c, d) { this.$element = a(c), this.options = a.extend({}, b.DEFAULTS, d), this.transitioning = null, this.options.parent && (this.$parent = a(this.options.parent)), this.options.toggle && this.toggle() }; b.DEFAULTS = { toggle: !0 }, b.prototype.dimension = function () { var a = this.$element.hasClass("width"); return a ? "width" : "height" }, b.prototype.show = function () { if (!this.transitioning && !this.$element.hasClass("in")) { var b = a.Event("show.bs.collapse"); if (this.$element.trigger(b), !b.isDefaultPrevented()) { var c = this.$parent && this.$parent.find("> .panel > .in"); if (c && c.length) { var d = c.data("bs.collapse"); if (d && d.transitioning) return; c.collapse("hide"), d || c.data("bs.collapse", null) } var e = this.dimension(); this.$element.removeClass("collapse").addClass("collapsing")[e](0), this.transitioning = 1; var f = function () { this.$element.removeClass("collapsing").addClass("in")[e]("auto"), this.transitioning = 0, this.$element.trigger("shown.bs.collapse") }; if (!a.support.transition) return f.call(this); var g = a.camelCase(["scroll", e].join("-")); this.$element.one(a.support.transition.end, a.proxy(f, this)).emulateTransitionEnd(350)[e](this.$element[0][g]) } } }, b.prototype.hide = function () { if (!this.transitioning && this.$element.hasClass("in")) { var b = a.Event("hide.bs.collapse"); if (this.$element.trigger(b), !b.isDefaultPrevented()) { var c = this.dimension(); this.$element[c](this.$element[c]())[0].offsetHeight, this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"), this.transitioning = 1; var d = function () { this.transitioning = 0, this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse") }; return a.support.transition ? (this.$element[c](0).one(a.support.transition.end, a.proxy(d, this)).emulateTransitionEnd(350), void 0) : d.call(this) } } }, b.prototype.toggle = function () { this[this.$element.hasClass("in") ? "hide" : "show"]() }; var c = a.fn.collapse; a.fn.collapse = function (c) { return this.each(function () { var d = a(this), e = d.data("bs.collapse"), f = a.extend({}, b.DEFAULTS, d.data(), "object" == typeof c && c); e || d.data("bs.collapse", e = new b(this, f)), "string" == typeof c && e[c]() }) }, a.fn.collapse.Constructor = b, a.fn.collapse.noConflict = function () { return a.fn.collapse = c, this }, a(document).on("click.bs.collapse.data-api", "[data-toggle=collapse]", function (b) { var c, d = a(this), e = d.attr("data-target") || b.preventDefault() || (c = d.attr("href")) && c.replace(/.*(?=#[^\s]+$)/, ""), f = a(e), g = f.data("bs.collapse"), h = g ? "toggle" : d.data(), i = d.attr("data-parent"), j = i && a(i); g && g.transitioning || (j && j.find('[data-toggle=collapse][data-parent="' + i + '"]').not(d).addClass("collapsed"), d[f.hasClass("in") ? "addClass" : "removeClass"]("collapsed")), f.collapse(h) }) }(window.jQuery), +function (a) { "use strict"; function b() { a(d).remove(), a(e).each(function (b) { var d = c(a(this)); d.hasClass("open") && (d.trigger(b = a.Event("hide.bs.dropdown")), b.isDefaultPrevented() || d.removeClass("open").trigger("hidden.bs.dropdown")) }) } function c(b) { var c = b.attr("data-target"); c || (c = b.attr("href"), c = c && /#/.test(c) && c.replace(/.*(?=#[^\s]*$)/, "")); var d = c && a(c); return d && d.length ? d : b.parent() } var d = ".dropdown-backdrop", e = "[data-toggle=dropdown]", f = function (b) { a(b).on("click.bs.dropdown", this.toggle) }; f.prototype.toggle = function (d) { var e = a(this); if (!e.is(".disabled, :disabled")) { var f = c(e), g = f.hasClass("open"); if (b(), !g) { if ("ontouchstart" in document.documentElement && !f.closest(".
1815navbar-nav").length && a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click", b), f.trigger(d = a.Event("show.bs.dropdown")), d.isDefaultPrevented()) return; f.toggleClass("open").trigger("shown.bs.dropdown"), e.focus() } return !1 } }, f.prototype.keydown = function (b) { if (/(38|40|27)/.test(b.keyCode)) { var d = a(this); if (b.preventDefault(), b.stopPropagation(), !d.is(".disabled, :disabled")) { var f = c(d), g = f.hasClass("open"); if (!g || g && 27 == b.keyCode) return 27 == b.which && f.find(e).focus(), d.click(); var h = a("[role=menu] li:not(.divider):visible a", f); if (h.length) { var i = h.index(h.filter(":focus")); 38 == b.keyCode && i > 0 && i-- , 40 == b.keyCode && i < h.length - 1 && i++ , ~i || (i = 0), h.eq(i).focus() } } } }; var g = a.fn.dropdown; a.fn.dropdown = function (b) { return this.each(function () { var c = a(this), d = c.data("dropdown"); d || c.data("dropdown", d = new f(this)), "string" == typeof b && d[b].call(c) }) }, a.fn.dropdown.Constructor = f, a.fn.dropdown.noConflict = function () { return a.fn.dropdown = g, this }, a(document).on("click.bs.dropdown.data-api", b).on("click.bs.dropdown.data-api", ".dropdown form", function (a) { a.stopPropagation() }).on("click.bs.dropdown.data-api", e, f.prototype.toggle).on("keydown.bs.dropdown.data-api", e + ", [role=menu]", f.prototype.keydown) }(window.jQuery), +function (a) { "use strict"; var b = function (b, c) { this.options = c, this.$element = a(b), this.$backdrop = this.isShown = null, this.options.remote && this.$element.load(this.options.remote) }; b.DEFAULTS = { backdrop: !0, keyboard: !0, show: !0 }, b.prototype.toggle = function (a) { return this[this.isShown ? "hide" : "show"](a) }, b.prototype.show = function (b) { var c = this, d = a.Event("show.bs.modal", { relatedTarget: b }); this.$element.trigger(d), this.isShown || d.isDefaultPrevented() || (this.isShown = !0, this.escape(), this.$element.on("click.dismiss.modal", '[data-dismiss="modal"]', a.proxy(this.hide, this)), this.backdrop(function () { var d = a.support.transition && c.$element.hasClass("fade"); c.$element.parent().length || c.$element.appendTo(document.body), c.$element.show(), d && c.$element[0].offsetWidth, c.$element.addClass("in").attr("aria-hidden", !1), c.enforceFocus(); var e = a.Event("shown.bs.modal", { relatedTarget: b }); d ? c.$element.find(".modal-dialog").one(a.support.transition.end, function () { c.$element.focus().trigger(e) }).emulateTransitionEnd(300) : c.$element.focus().trigger(e) })) }, b.prototype.hide = function (b) { b && b.preventDefault(), b = a.Event("hide.bs.modal"), this.$element.trigger(b), this.isShown && !b.isDefaultPrevented() && (this.isShown = !1, this.escape(), a(document).off("focusin.bs.modal"), this.$element.removeClass("in").attr("aria-hidden", !0).off("click.dismiss.modal"), a.support.transition && this.$element.hasClass("fade") ? this.$element.one(a.support.transition.end, a.proxy(this.hideModal, this)).emulateTransitionEnd(300) : this.hideModal()) }, b.prototype.enforceFocus = function () { a(document).off("focusin.bs.modal").on("focusin.bs.modal", a.proxy(function (a) { this.$element[0] === a.target || this.$element.has(a.target).length || this.$element.focus() }, this)) }, b.prototype.escape = function () { this.isShown && this.options.keyboard ? this.$element.on("keyup.dismiss.bs.modal", a.proxy(function (a) { 27 == a.which && this.hide() }, this)) : this.isShown || this.$element.off("keyup.dismiss.bs.modal") }, b.prototype.hideModal = function () { var a = this; this.$element.hide(), this.backdrop(function () { a.removeBackdrop(), a.$element.trigger("hidden.bs.modal") }) }, b.prototype.removeBackdrop = function () { this.$backdrop && this.$backdrop.remove(), this.$backdrop = null }, b.prototype.backdrop = function (b) { var c = this.$element.hasClass("fade") ? "fade" : ""; if (this.isShown && this.options.backdrop) { var d = a.support.transition && c; var obj = null; if ($(".modal-backdrop").length == 0) { obj = $('<div class="modal-backdrop ' + c + '" />'); } else { obj = $('<div class=" ' + c + '" />') } if (this.$backdrop = obj
vendor: 14,511 bytes, line 1815
1815.appendTo(document.body),this.$element.on("click.dismiss.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;d?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()):b&&b()};var c=a.fn.modal;a.fn.modal=function(c,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},b.DEFAULTS,e.data(),"object"==typeof c&&c);f||e.data("bs.modal",f=new b(this,g)),"string"==typeof c?f[c](d):g.show&&f.show(d)})},a.fn.modal.Constructor=b,a.fn.modal.noConflict=function(){return a.fn.modal=c,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());b.preventDefault(),e.modal(f,this).one("hide",function(){c.is(":visible")&&c.focus()})}),a(document).on("show.bs.modal",".modal",function(){a(document.body).addClass("modal-open")}).on("hidden.bs.modal",".modal",function(){a(document.body).removeClass("modal-open")})}(window.jQuery),+function(a){"use strict";var b=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};b.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},b.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focus",i="hover"==g?"mouseleave":"blur";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},b.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},b.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show),void 0):c.show()},b.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide),void 0):c.hide()},b.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){if(this.$element.trigger(b),b.isDefaultPrevented())return;var c=this.tip();this.setContent(),this.options.animation&&c.addClass("fade");var d="function"==typeof this.options.placement?this.options.placement.call(this,c[0],this.$element[0]):this.options.placement,e=/\s?auto?\s?/i,f=e.test(d);f&&(d=d.replace(e,"")||"top"),c.detach().css({top:0,left:0,display:"block"}).addClass(d),this.options.container?c.appendTo(this.options.container):c.insertAfter(this.$element);var g=this.getPosition(),h=c[0].offsetWidth,i=c[0].offsetHeight;if(f){var j=this.$element.parent(),k=d,l=document.documentElement.scrollTop||document.body.scrollTop,m="body"==this.options.container?window.innerWidth:j.outerWidth(),n="body"==this.options.container?window.innerHeight:j.outerHeight(),o="body"==this.options.container?0:j.offset().left;d="bottom"==d&&g.top+g.height+i-l>n?"top":"top"==d&&g.top-l-i<0?"bottom":"right"==d&&g.right+h>m?"left":"left"==d&&g.left-h<o?"right":d,c.removeClass(k).addClass(d)}var p=this.getCalculatedOffset(d,g,h,i);this.applyPlacement(p,d),this.$element.trigger("shown.bs."+this.type)}},b.prototype.applyPlacement=function(a,b){var c,d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),a.top=a.top+g,a.left=a.left+h,d.offset(a).addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;if("top"==b&&j!=f&&(c=!0,a.top=a.top+f-j),/bottom|top/.test(b)){var k=0;a.left<0&&(k=-2*a.left,a.left=0,d.offset(a),i=d[0].offsetWidth,j=d[0].offsetHeight),this.replaceArrow(k-e+i,i,"left")}else this.replaceArrow(j-f,j,"top");c&&d.offset(a)},b.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},b.prototype.hide=function(){function b(){"in"!=c.hoverState&&d.detach()}var c=this,d=this.tip(),e=a.Event("hide.bs."+this.type);return this.$element.trigger(e),e.isDefaultPrevented()?void 0:(d.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d.one(a.support.transition.end,b).emulateTransitionEnd(150):b(),this.$element.trigger("hidden.bs."+this.type),this)},b.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},b.prototype.hasContent=function(){return this.getTitle()},b.prototype.getPosition=function(){var b=this.$element[0];return a.extend({},"function"==typeof b.getBoundingClientRect?b.getBoundingClientRect():{width:b.offsetWidth,height:b.offsetHeight},this.$element.offset())},b.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},b.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},b.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},b.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},b.prototype.enable=function(){this.enabled=!0},b.prototype.disable=function(){this.enabled=!1},b.prototype.toggleEnabled=function(){this.enabled=!this.enabled},b.prototype.toggle=function(b){var c=b?a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type):this;c.tip().hasClass("in")?c.leave(c):c.enter(c)},b.prototype.destroy=function(){this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var c=a.fn.tooltip;a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof c&&c;e||d.data("bs.tooltip",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=c,this}}(window.jQuery),+function(a){"use strict";var b=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");b.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"html":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(window.jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(c).is("body")?a(window):a(c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#\w/.test(e)&&a(e);return f&&f.length&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parents(".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.attr("data-target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top()),"function"==typeof h&&(h=f.bottom());var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;this.affixed!==i&&(this.unpin&&this.$element.css("top",""),this.affixed=i,this.unpin="bottom"==i?e.top-d:null,this.$element.removeClass(b.RESET).addClass("affix"+(i?"-"+i:"")),"bottom"==i&&this.$element.offset({top:document.body.offsetHeight-h-this.$element.height()}))}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(window.jQuery);
vendor: 7,881 bytes, lines 1815-1994
1815;
1816/**
1817* Detect Element Resize
1818*
1819* https://github.com/sdecima/javascript-detect-element-resize
1820* Sebastian Decima
1821*
1822* version: 0.5.3
1823**/
1824
1825(function () {
1826    var attachEvent = document.attachEvent,
1827		stylesCreated = false;
1828
1829    if (!attachEvent) {
1830        var requestFrame = (function () {
1831            var raf = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame ||
1832								function (fn) { return window.setTimeout(fn, 20); };
1833            return function (fn) { return raf(fn); };
1834        })();
1835
1836        var cancelFrame = (function () {
1837            var cancel = window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame ||
1838								   window.clearTimeout;
1839            return function (id) { return cancel(id); };
1840        })();
1841
1842        function resetTriggers(element) {
1843            if (element) {
1844                var triggers = element.__resizeTriggers__,
1845                    expand = triggers.firstElementChild,
1846                    contract = triggers.lastElementChild,
1847                    expandChild = expand.firstElementChild;
1848                contract.scrollLeft = contract.scrollWidth;
1849                contract.scrollTop = contract.scrollHeight;
1850                expandChild.style.width = expand.offsetWidth + 1 + 'px';
1851                expandChild.style.height = expand.offsetHeight + 1 + 'px';
1852                expand.scrollLeft = expand.scrollWidth;
1853                expand.scrollTop = expand.scrollHeight;
1854            }            
1855        };
1856
1857        function checkTriggers(element) {
1858            return element.offsetWidth != element.__resizeLast__.width ||
1859						 element.offsetHeight != element.__resizeLast__.height;
1860        }
1861
1862        function scrollListener(e) {
1863            var element = this;
1864            resetTriggers(this);
1865            if (this.__resizeRAF__) cancelFrame(this.__resizeRAF__);
1866            this.__resizeRAF__ = requestFrame(function () {
1867                if (checkTriggers(element)) {
1868                    element.__resizeLast__.width = element.offsetWidth;
1869                    element.__resizeLast__.height = element.offsetHeight;
1870                    element.__resizeListeners__.forEach(function (fn) {
1871                        fn.call(element, e);
1872                    });
1873                }
1874            });
1875        };
1876
1877        /* Detect CSS Animations support to detect element display/re-attach */
1878        var animation = false,
1879			animationstring = 'animation',
1880			keyframeprefix = '',
1881			animationstartevent = 'animationstart',
1882			domPrefixes = 'Webkit Moz O ms'.split(' '),
1883			startEvents = 'webkitAnimationStart animationstart oAnimationStart MSAnimationStart'.split(' '),
1884			pfx = '';
1885        {
1886            var elm = document.createElement('fakeelement');
1887            if (elm.style.animationName !== undefined) { animation = true; }
1888
1889            if (animation === false) {
1890                for (var i = 0; i < domPrefixes.length; i++) {
1891                    if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) {
1892                        pfx = domPrefixes[i];
1893                        animationstring = pfx + 'Animation';
1894                        keyframeprefix = '-' + pfx.toLowerCase() + '-';
1895                        animationstartevent = startEvents[i];
1896                        animation = true;
1897                        break;
1898                    }
1899                }
1900            }
1901        }
1902
1903        var animationName = 'resizeanim';
1904        var animationKeyframes = '@' + keyframeprefix + 'keyframes ' + animationName + ' { from { opacity: 0; } to { opacity: 0; } } ';
1905        var animationStyle = keyframeprefix + 'animation: 1ms ' + animationName + '; ';
1906    }
1907
1908    function createStyles() {
1909        if (!stylesCreated) {
1910            //opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360
1911            var css = (animationKeyframes ? animationKeyframes : '') +
1912					'.resize-triggers { ' + (animationStyle ? animationStyle : '') + 'visibility: hidden; opacity: 0; } ' +
1913					'.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \" \"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',
1914				head = document.head || document.getElementsByTagName('head')[0],
1915				style = document.createElement('style');
1916
1917            style.type = 'text/css';
1918            if (style.styleSheet) {
1919                style.styleSheet.cssText = css;
1920            } else {
1921                style.appendChild(document.createTextNode(css));
1922            }
1923
1924            head.appendChild(style);
1925            stylesCreated = true;
1926        }
1927    }
1928
1929    window.addResizeListener = function (element, fn) {
1930        if (element) {
1931            if (attachEvent) element.attachEvent('onresize', fn);
1932            else {
1933                if (!element.__resizeTriggers__) {
1934                    if (getComputedStyle(element).position == 'static') element.style.position = 'relative';
1935                    createStyles();
1936                    element.__resizeLast__ = {};
1937                    element.__resizeListeners__ = [];
1938                    (element.__resizeTriggers__ = document.createElement('div')).className = 'resize-triggers';
1939                    element.__resizeTriggers__.innerHTML = '<div class="expand-trigger"><div></div></div>' +
1940                        '<div class="contract-trigger"></div>';
1941                    element.appendChild(element.__resizeTriggers__);
1942                    resetTriggers(element);
1943                    element.addEventListener('scroll', scrollListener, true);
1944
1945                    /* Listen for a css animation to detect element display/re-attach */
1946                    animationstartevent && element.__resizeTriggers__.addEventListener(animationstartevent, function (e) {
1947                        if (e.animationName == animationName)
1948                            resetTriggers(element);
1949                    });
1950                }
1951                element.__resizeListeners__.push(fn);
1952            }
1953        }       
1954    };
1955
1956    window.removeResizeListener = function (element, fn) {
1957        if (element) {
1958            if (attachEvent) element.detachEvent('onresize', fn);
1959            else {
1960                element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);
1961                if (!element.__resizeListeners__.length) {
1962                    element.removeEventListener('scroll', scrollListener);
1963                    element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);
1964                }
1965            }
1966        }       
1967    }
1968})();;
1969//Loại hóa đơn
1970var hoadons = [
1971    {
1972        value: 1,
1973        kyhieu: "01GTKT0",
1974        text: "Hóa đơn giá trị gia tăng",
1975        mucdich:
1976            "Sử dụng cho mục đích khai, nộp thuế GTGT theo phương pháp khấu trừ với hàng hóa, dịch vụ cung ứng trong nội địa"
1977    },
1978    {
1979        value: 2,
1980        kyhieu: "02GTTT0",
1981        text: "Hóa đơn bán hàng",
1982        mucdich:
1983            "Sử dụng cho mục đích khai, nộp thuế GTGT theo phương pháp trực tiếp với hàng hóa, dịch vụ cung ứng nội địa"
1984    },
1985    {
1986        value: 3,
1987        kyhieu: "06HDXK0",
1988        text: "Hóa đơn xuất khẩu",
1989        mucdich:
1990            "Sử dụng trong hoạt động kinh doanh xuất khẩu hàng hóa, cung ứng dịch vụ nước ngoài, xuất vào khu phi thuế quan và các trường hợp coi như xuất khẩu"
1991    },
1992    {
1993        value: 4,
1994        kyhieu: "07KPTQ0",
1995        text: "Hóa đơn bán hàng(dành cho tổ chức, cá nhân khu phi thuế quan)",
1996        mucdich: "Sử dụng với hàng hóa, dịch vụ cung ứng trong khu phi thuế quan"
1997    },
1998    {
1999        value: 5,
2000        kyhieu: "03XKNB0",
2001        text: "Phiếu xuất kho kiêm vận chuyển hàng hóa nội bộ",
2002        mucdich:
2003            "Sử dụng trong việc xuất kho kiêm vận chuyển hàng hóa nội bộ kèm theo Lệnh điều động nội bộ theo quy định."
2004    },
2005    {
2006        value: 6,
2007        kyhieu: "04HGDL0",
2008        text: "Phiếu xuất kho hàng gửi bán đại lý",
2009        mucdich: "Sử dụng trong việc xuất kho kiêm gửi bán hàng đại lý."
2010    },
2011    {
2012        value: 7,
2013        kyhieu: "TNCN",
2014        text: "Chứng từ khấu trừ thuế TNCN",
2015        mucdich:
2016            "Chứng từ khấu trừ thuế TNCN"
2017    },
2018    {
2019        value: 8,
2020        kyhieu: "01TEBD",
2021        text: "Tem, thẻ",
2022        mucdich:
2023            "Tem, thẻ"
2024    }
2025];
2026
2027const TinhChatDongHang = Object.freeze({
2028    HHDV: 1, //Hàng hóa, dịch vụ
2029    KM: 2, //Khuyến mại
2030    CKTM: 3, //Chiết khấu thương mại
2031    NOTE: 4,//Ghi chú/diễn giải
2032    LHDT: 5 //Hàng hóa đặc trưng
2033})
2034
2035const TrangThaiDieuChinh = Object.freeze({
2036    Goc: 1, //Hóa đơn gốc
2037    BiThayThe: 2, //Hóa đơn bị thay thế
2038    ThayThe: 3, //Hóa đơn thay thế
2039    BiDieuChinh: 4,//Hóa đơn bị điều chỉnh
2040    DieuChinh: 5, //Hóa đơn điều chỉnh
2041    BiXoaBo: 6, //Hóa đơn bị xóa bỏ
2042    DcChietKhau: 9, //Hóa đơn điều chỉnh chiết khấu
2043    BiThueTuChoi: 99 //Hóa đơn bị từ chới
2044})
2045
2046/**
2047 * Trạng thái điều chỉnh dòng hàng của hóa đơn điều chỉnh (5)
2048 */
2049const EDieuChinh = Object.freeze({
2050    Tang: 1,
2051    Giam: -1
2052})
2053
2054/**
2055 * Mã loại hóa đơn
2056 */
2057const MaLoaiHoaDon = Object.freeze({
2058    HD_GTGT: "01", //Hóa đơn giá trị gia tăng
2059    HD_BH: "02", //Hóa đơn bán hàng
2060    HD_XK: "03", //Hóa đơn xuất khẩu
2061    HD_PTQ: "04",//Hóa đơn phi thuế quan
2062    PXK: "05", //Phiếu xuất kho
2063    PXK_GDL: "06",//Phiếu xuất kho gửi đại lý
2064    TEMP_TNCN: "07",//tempTNCN
2065    TEM_THE: "08", //Tem vé thẻ     ",//tempTNCN
2066    TEM_THE_BH: "09", //Tem vé thẻ
2067    BIEN_LAI_KCG: "10",  // Biên lai không mã
2068    BIEN_LAI_CMG: "11", // Biên lai có mã
2069    HD_TSC: "12", //Tài sản công
2070    BIEN_LAI_TTLPHQ: "13", // Biên lai HQ
2071    HD_TM: "14", //Hóa đơn thương mại
2072})
2073
2074const IS_TTEinvoice = Object.freeze({
2075    TT32: 0,
2076    TT68: 1,
2077    TT92: 2,
2078    TT78: 3,
2079    ND70: 5,
2080})
2081
2082const ELoaiSignServer = Object.freeze({
2083    BAO_CAO_BIEN_LAI: 9
2084})
2085
2086const ChietKhauThuongMaiValueType = Object.freeze({
2087    CKTM_AM: -1,      /// Hóa đơn chiết khấu thương mại luôn âm không tích 2.4
2088    HDBT: 0, /// Hóa đơn bình thường không phải cktm
2089    CKTM_DUONG: 1,        /// Hóa đơn chiết khấu thương mại luôn dương tích 2.4
2090})
2091
2092const VatType = Object.freeze({
2093    KHONG_CHIU_KHAI_THUE: -1,
2094    KHONG_KE_KHAI_THUE: -2,
2095    KHAC: -3
2096})
2097const ELoaiTTHDDT = Object.freeze({
2098    HHDTND123: 1,      ///Hóa đơn điện tử theo Nghị định 123/2020/NĐ-CP
2099    HHHDTCOMA: 2,        /// Hóa đơn điện tử có mã xác thực của CQT theo Nghị định số 51/2010/NĐ-CP và Nghị định số 04/2014/NĐ-CP
2100    HDND51: 3, /// Các loại hóa đơn theo Nghị định số 51/2010/NĐ-CP và nghị định số 04/2014/NĐ-CP(Trừ hóa đơn điện tử có mã xác thực của CQT theo Quyết định số 1209/QĐ-BTC và Quyết định số 2660/QĐ-BTC)
2101})
2102const regextMTT = /^([a-z]{1}[1-2]{1}[1-9]{1}[M]{1}[a-z]{2})$/i;
2103
2104const EBaoCaoBangKeExcelType = Object.freeze({
2105    /**
2106     * Xuất excel theo template có sẵn
2107     */
2108    ByTemplateExcel: 0,
2109    /**
2110     * Xuất excel theo cấu hình hiển thị cột
2111     */
2112    ByDisplayConfig: 1
2113})
2114
2115const KhongKeKhaiNopThueText = "Không kê khai nộp thuế";
2116
2117var toCurrency = function (n) {
2118    if (n == null) n = 0;
2119    return n.toFixed(0).replace(/\B(?=(\d{3})+(?!\d))/g, ".");
2120};
2121
2122var toCurrencyUSD = function (n) {
2123    if (n == null) n = 0;
2124    return n.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,');
2125};
2126
2127var toCurrencyFix = function (n, fix) {
2128    if (n == null) n = 0;
2129    fix = fix ? fix : 0;
2130    return $.number(n, fix, ".", ",");
2131};
2132
2133function resize() {
2134    topOffset = 0;
2135    width = (this.window.innerWidth > 0) ? this.window.innerWidth : this.screen.width;
2136    if (width < 768) {
2137        $('div.navbar-collapse').addClass('collapse')
2138        topOffset = 100; // 2-row-menu
2139    } else {
2140        $('div.navbar-collapse').removeClass('collapse')
2141    }
2142
2143    height = (this.window.innerHeight > 0) ? this.window.innerHeight : this.screen.height;
2144    height = height - topOffset;
2145    if (height < 1) height = 1;
2146    if (height > topOffset) {
2147        $("#page-wrapper").css({ "min-height": height + "px", height: height + "px" });
2148    }
2149}
2150
2151$(function () {
2152    $(document).on("ready resize", function () {
2153        resize();
2154    })
2155});
2156
2157/*
2158 ===================== Chứng từ khấu trừ thuế TNCN ================================
2159 */
2160
2161/**
2162 *
2163 * @param {any} title
2164 * @param {any} message
2165 * @param {any} callback
2166 * @param {any} showCloseButton
2167 */
2168var app = app || {};
2169
2170app.confirmDialog = function (title, message, callback, options = {}) {
2171    options = Object.assign({
2172        title: title,
2173        html: `<div class="swal2-icon swal2-warning swal2-animate-warning-icon" style="display: flex;"></div><div style="display: flex; align-items: center;text-align: left;"><div>${message}</div></div>`,
2174        type: 'warning',
2175        showCloseButton: true,
2176        showCancelButton: true,
2177        showConfirmButton: true,
2178        allowOutsideClick: false,
2179        customClass: {
2180            container: `lbl-new notify-info notify-custom ${options.container ? options.container : ''}`,
2181            content: options.content ? options.content : '',
2182            cancelButton: 'btn btn-sm btn-primary btnfixwidth btn-backnd',
2183            confirmButton: `btn btn-sm ${options.confirmButton ? options.confirmButton : 'btn-primary'} btnMinWidth`
2184        }
2185    }, options);
2186
2187    if (!options.cancelButtonText) {
2188        options.cancelButtonText = '<i class="svg-boqua"></i> Đóng';
2189    }
2190
2191    if (!options.confirmButtonText) {
2192        options.confirmButtonText = 'Thực hiện';
2193    }
2194
2195    if (options.hideIcon) {
2196        options.html = message;
2197    }
2198
2199    if (!options.onBeforeOpen) {
2200        options.onBeforeOpen = function (dialog) {
2201            var $form = $(dialog).find('form:first');
2202
2203            $form.find('.tncn-number-js').each(function () {
2204                $(this).number(true, +$form.find('#LamTronTien').val());
2205                if ($(this).val() === "") $(this).val("0");
2206            });
2207
2208            $form.find('select.selectpicker')
2209                .change(function () {
2210                    if ($(this).valid()) {
2211                        $(this).closest('.error').removeClass('error');
2212                    }
2213                })
2214                .selectpicker();
2215
2216            $form.find('.datepicker').datepicker({ format: "dd/mm/yyyy", autoclose: true, todayHighlight: true });
2217
2218            if (typeof options.beforeOpen === "function")
2219                options.beforeOpen(dialog);
2220        }
2221    }
2222
2223    if (!options.onOpen) {
2224        options.onOpen = function (dialog) {
2225            var $form = $(dialog).find('form:first');
2226
2227            $form.find('input:not([type=hidden]):first').focus();
2228        }
2229    }
2230
2231    Swal.fire(options).then((result) => {
2232        if (typeof callback === 'function') {
2233            callback(result.value);
2234        }
2235    });
2236}
2237
2238app.alertDialog = function (title, msg, type, options = {}) {
2239    options = Object.assign({
2240        title: title,
2241        html: msg,
2242        type: type,
2243        showCloseButton: true,
2244        showCancelButton: true,
2245        showConfirmButton: false,
2246        allowOutsideClick: false,
2247        cancelButtonText: '<i class="icon-close white"></i> Đóng',
2248        customClass: {
2249            container: `lbl-new ${options.container ? options.container : ''}`,
2250            content: options.content ? options.content : 'content-err',
2251            htmlContainer: 'chungTu-sweetAlert',
2252            cancelButton: 'btn btnfixwidth create-err',
2253        }
2254    }, options);
2255
2256    Swal.fire(options);
2257}
2258
2259app.alertHozironDialog = function (title, msg, type, options = {}) {
2260    options = {
2261        title: title,
2262        html: '<div class="swal2-icon swal2-warning swal2-animate-warning-icon" style="display:flex;"></div><div style="display:flex;align-items: center;text-align: left;"><div>' + msg + '</div></div>',
2263        type: type,
2264        showCancelButton: true,
2265        showConfirmButton: false,
2266        allowOutsideClick: false,
2267        cancelButtonText: '<i class="icon-close white"></i> Đóng',
2268        customClass: {
2269            container: 'lbl-new notify-info',
2270            cancelButton: 'btn btnfixwidth ',
2271        }
2272    };
2273
2274    Swal.fire(options);
2275}
2276
2277app.getBrowserName = function () {
2278    var ua = navigator.userAgent,
2279        M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
2280    return M[1];
2281}
2282
2283app.checkKySoExtension = function () {
2284    if (document.body.classList.contains("[email protected]"))
2285        return true;
2286
2287    ShowHelper();
2288    return false;
2289}
2290
2291app.notifyMessageWarning = function (content, options) {
2292    $.notify({ message: content }, { type: 'warning', delay: options.delay });
2293}
2294app.notifyMessage = function (obj = {}) {
2295    if (obj.url) {
2296        localStorage.setItem("StatusMessage", JSON.stringify(obj));
2297        window.location.href = obj.url;
2298    }
2299    else {
2300        showStatusMessage(obj);
2301
2302        if (obj.type == "error") {
2303            console.error("StatusMessage:");
2304            console.error(obj);
2305        }
2306    }
2307}
2308
2309function showStatusMessage(obj = {}) {
2310    if (!obj.Status)
2311        return;
2312
2313    if (obj.type === 'warning_dialog' || obj.type === 'success_dialog') {
2314        app.alertDialog('Thông báo', obj.Status, obj.type.replace('_dialog', ''));
2315    }
2316    else if (obj.type === 'sign_data_null') {
2317        app.showKySoError();
2318    }
2319    else {
2320        $.notify({ message: obj.Status }, { type: obj.type });
2321    }
2322}
2323
2324$(function () {
2325    var statusMessage = localStorage.getItem("StatusMessage");
2326
2327    if (statusMessage != undefined) {
2328        var obj = JSON.parse(statusMessage);
2329        showStatusMessage(obj);
2330        localStorage.removeItem("StatusMessage");
2331    }
2332});
2333
2334app.checkKySoVersion = function (signData, signCallback = null, minVersion = null) {
2335    $.ajax({
2336        url: "/SignEiv/CheckVersion",
2337        method: "POST",
2338        data: {
2339            "__RequestVerificationToken": $("input[name='__RequestVerificationToken']").val(),
2340            "data": signData.data.data,
2341            "minVersion": minVersion
2342        },
2343        async: false,
2344        success: result => {
2345            if (result === "CERT_VERSION") {
2346                Swal.fire({
2347                    title: 'Thông báo',
2348                    html: '<div class="notify-text text-left">' + GetContentSign(ShowHelperVerSion(), true, false) + '</div>',
2349                    type: 'warning',
2350                    showCloseButton: true,
2351                    focusConfirm: false,
2352                    showCancelButton: true,
2353                    showConfirmButton: true,
2354                    allowOutsideClick: false,
2355                    confirmButtonText: '<i class=""></i> Tải xuống ngay',
2356                    cancelButtonText: "<i class='icon-close'></i> Để lần sau",
2357                    customClass: {
2358                        container: 'lbl-new notify-info',
2359                        confirmButton: 'btn btn-sm btn-primary ',
2360                        cancelButton: 'btn btn-sm btn-primary btn-backnd',
2361                    }
2362                }).then((result) => {
2363                    if (result.value) {
2364                        let urlTool = $(".tsdSign").attr("href");
2365                        const a = document.createElement('a')
2366                        a.href = urlTool
2367                        a.download = urlTool.split('/').pop()
2368                        document.body.appendChild(a)
2369                        a.click()
2370                        document.body.removeChild(a)
2371                    }
2372                    else if (result.dismiss === Swal.DismissReason.cancel) {
2373                        if (typeof signCallback === "function")
2374                            signCallback();
2375                    }
2376                });
2377            }
2378            else if (result === "VERSION_REQUIRED") {
2379                app.showUpdateSignTool();
2380            }
2381            else if (result != null && result != "") { $.notify({ message: result }, { type: "warning" }); }
2382            else if (typeof signCallback === "function") {
2383                signCallback();
2384            }
2385        }
2386    });
2387}
2388app.showUpdateSignTool = function () {
2389    var msg = (`Công cụ hỗ trợ đã có phiên bản mới (<a download class="tsdSign no-outline" href="${winFile}" target="_blank" style="text-decoration: underline;color: #2c8dda;">Phiên bản ${signName.split('_')[4]}</a>), vui lòng cập nhật phiên bản mới trước khi thực hiện ký số.`);
2390    Swal.fire({
2391        title: 'Thông báo',
2392        html: '<div class="notify-text text-left">' + GetContentSign(msg, true, false) + '</div>',
2393        type: 'warning',
2394        showCloseButton: true,
2395        showCancelButton: false,
2396        showConfirmButton: true,
2397        allowOutsideClick: false,
2398        confirmButtonText: '<i class=""></i> Tải xuống',
2399        customClass: {
2400            container: 'lbl-new notify-info',
2401            confirmButton: 'btn btn-sm btn-primary ',
2402        }
2403    }).then((result) => {
2404        if (result.value) {
2405            let urlTool = $(".tsdSign").attr("href");
2406            const a = document.createElement('a')
2407            a.href = urlTool
2408            a.download = urlTool.split('/').pop()
2409            document.body.appendChild(a)
2410            a.click()
2411            document.body.removeChild(a)
2412        }
2413    });
2414}
2415
2416var rsUpdTimeHdsString = "";
2417app.signToDataBase = function (signData, updateContentUri, callback = null, isList = false, minVersion = null) {
2418    $.post(updateContentUri, {
2419        "__RequestVerificationToken": $("input[name='__RequestVerificationToken']").val(),
2420        "data": signData,
2421        "isList": isList,
2422        "rsUpdTimeHdsString": rsUpdTimeHdsString
2423    },
2424        function (rs) {
2425            if (typeof callback === "function")
2426                callback(rs);
2427            else
2428                app.notifyMessage(rs);
2429        }).always(function () {
2430            loaddingByEinvoice(false);
2431        });
2432}
2433
2434app.sign = function (signData, updateContentUri, callback = null, isList = false, minVersion = null, listTimeHd = null) {
2435    target = "hoadonMTT";
2436    urlSign = getUrlSign(target);
2437    var methodSending = app.getBrowserName() === "Chrome" ? SendToChromeExtension(signData) : SendToFirefoxExtension(signData);
2438    loaddingByEinvoice(true);
2439    rsUpdTimeHdsString = listTimeHd;
2440    methodSending.then(mess => {
2441        if (mess && mess.data && (!mess.data.data || mess.data.data && mess.data.data.indexOf('Result') >= 0)) {
2442            loaddingByEinvoice(false);
2443
2444            if (mess.data.data)
2445                app.showKySoError(JSON.parse(mess.data.data).Note);
2446            else
2447                app.showKySoError();
2448        }
2449        else {
2450            app.checkKySoVersion(mess, function () {
2451                loaddingByEinvoice(true);
2452                SignEivValidateCA2(mess.data.data).then((typeCert) => {
2453                    switch (typeCert) {
2454                        case 0:
2455                            app.signToDataBase(mess.data.data, updateContentUri, callback, isList, minVersion);
2456                            break;
2457                        case 1:
2458                        case 2:
2459                            _viewSignSha1.open({ data: mess.data.data, TypeCert: typeCert, TargetName: target });
2460                            return;
2461                            break;
2462                        case 4:
2463                        case 5:
2464                            _viewSignSha256.open({ data: mess.data.data, TypeCert: typeCert, TargetName: target });
2465                            return;
2466                            break;
2467                        default:
2468                            ShowSignEivTool();
2469                            loaddingByEinvoice(false)
2470                            break;
2471                    }
2472                })
2473            }, minVersion);
2474        }
2475    });
2476}
2477
2478app.messageDataTableError = function (type) {
2479    if (type == 1) {//Thông báo loại 1
2480        $.notify({ message: `Không thể truy xuất dữ liệu với điều kiện tìm kiếm` }, { type: 'warning' });
2481    }
2482    loading(false);
2483    loadingBC(false);
2484    loaddingByEinvoice(false);
2485}
2486function SendToChromeExtension(data) {
2487    // The ID of the extension we want to talk to.
2488    var editorExtensionId = "jedojckniofllhnphffhlhhobpiloaok";
2489    var json = { data: data };
2490    return new Promise((resolve, reject) => {
2491        chrome.runtime.sendMessage(editorExtensionId, json,
2492            function (response) {
2493                if (response) {
2494                    console.log("==============Webpage - Received============");
2495                    resolve(response);
2496                } else {
2497                    reject("Đã có lỗi xảy ra!");
2498                }
2499            });
2500    });
2501}
2502
2503function SendToFirefoxExtension(data) {
2504    window.postMessage({ src: "eiv.js", from: window.location.href, "data": data }, "*");
2505}
2506
2507var errorMsgObj = {
2508    CERT_CANCEL: `Bạn cần chọn chữ ký để thực hiện ký hóa đơn.`,
2509    NO_CERT: `Không tìm thấy chữ ký hoặc chữ ký hết hạn.
2510			        <br />Vui lòng kiểm tra lại hoặc liên hệ tổng đài 24/7 để được hỗ trợ:
2511		            <br />- Tổng đài hỗ trợ miền Bắc: <a href="tel:19004767" class="text-highlight color-F8B023">1900.47.67</a>
2512		            <br />- Tổng đài hỗ trợ miền Trung - Nam: <a href="tel:19004768" class="text-highlight color-F8B023">1900.47.68</a>`,
2513    CERT_NOTMATCH: `Chữ ký không hợp lệ! Vui lòng kiểm tra để chắc chắn rằng bạn đang sử dụng đúng chữ ký với Mã số thuế đang đăng nhập.`,
2514    CERT_EXPIRED: `Chữ ký của bạn đã hết hạn.`,
2515    CERT_INSPIRE: `Ngày hóa đơn đang nhỏ hơn ngày bắt đầu sử dụng của chữ ký!
2516			        <br /> Vui lòng kiểm tra lại hoặc liên hệ tổng đài 24/7 để được hỗ trợ:
2517			        <br />- Tổng đài hỗ trợ miền Bắc: <a href="tel:19004767" class="text-highlight color-F8B023">1900.47.67</a>
2518			        <br />- Tổng đài hỗ trợ miền Trung - Nam: <a href="tel:19004768" class="text-highlight color-F8B023">1900.47.68</a>`,
2519    SIGN_ERROR: `Ký số không thành công!
2520			        <br />Mọi thắc mắc xin vui lòng liên hệ qua số Tổng đài 24/7 để được hỗ trợ:
2521			        <br />- Tổng đài hỗ trợ miền Bắc: <a href="tel:19004767" class="text-highlight color-F8B023">1900.47.67</a>
2522			        <br />- Tổng đài hỗ trợ miền Trung - Nam: <a href="tel:19004768" class="text-highlight color-F8B023">1900.47.68</a>`,
2523}
2524
2525app.showKySoError = function (key) {
2526    var content = '';
2527    if (Object.keys(errorMsgObj).includes(key)) {
2528        content = errorMsgObj[key];
2529    }
2530    else {
2531        content = `<div style="font-size: 15px; text-align:left;">Đã có lỗi xảy ra khi thực hiện ký số!
2532                    <p style='margin-top: 10px;'>Bạn vui lòng tải và cài đặt chương trình hỗ trợ ký số phù hợp với máy tính của bạn:
2533                        <br><span style="margin-left: 8px;color: #2c8dda;">• <a class="tsdSign no-outline" href="${winFile}" style="text-decoration: underline;color: #2c8dda;">${winName}</a></span></span>
2534                    </p>
2535                    Trong trường hợp bạn đã tải và cài đặt chương trình ký số theo các thông tư trên mà vẫn không thể thực hiện ký số, vui lòng kiểm tra lại chữ ký số (Token) hoặc dữ liệu hóa đơn (Có chứa ký tự đặc biệt?)
2536                    <div style="padding-bottom: 10px;"></div>
2537			        Mọi thắc mắc xin vui lòng liên hệ qua số Tổng đài 24/7 để được hỗ trợ:
2538			        <br />- Tổng đài hỗ trợ miền Bắc: <a href="tel:19004767" class="text-highlight color-F8B023">1900.47.67</a>
2539			        <br />- Tổng đài hỗ trợ miền Trung - Nam: <a href="tel:19004768" class="text-highlight color-F8B023">1900.47.68</a></div>`;
2540    }
2541
2542    Swal.fire({
2543        title: 'Thông báo',
2544        html: '<div class="swal2-icon swal2-warning swal2-animate-warning-icon" style="display:flex;"></div><div style="display:flex;align-items: center;text-align: left;"><div>' + content + '</div></div>',
2545        type: "success",
2546        showCancelButton: true,
2547        showConfirmButton: false,
2548        allowOutsideClick: false,
2549        cancelButtonText: '<i class="icon-close white"></i> Đóng',
2550        customClass: {
2551            container: 'lbl-new notify-info',
2552            cancelButton: 'btn btnfixwidth ',
2553        }
2554    });
2555}
2556
2557/*
2558 ===================== Chứng từ khấu trừ thuế TNCN ================================
2559 */
2560
2561function AddClassForButtonAction() {
2562    var checkedItem = $("[class='cbItem']:checked").length;
2563    if (checkedItem > 0) {
2564        $('#deletechecked').removeClass('disabled');
2565    } else {
2566        $('#deletechecked').addClass('disabled');
2567    }
2568
2569    if (checkedItem === 1 && $('#btnPhanQuyenNhom') != null) {
2570        $('#btnPhanQuyenNhom').removeClass('disabled');
2571    } else {
2572        $('#btnPhanQuyenNhom').addClass('disabled');
2573    }
2574}
2575
2576function readPdfFileToBase64(file, maxFileSize) {
2577    if (!file) return;
2578
2579    if (file.size > maxFileSize * 1024 * 1024) {
2580        $.notify({ message: `Tệp đính kèm vượt quá dung lượng cho phép (${maxFileSize}MB)<br/>Vui lòng chọn tệp phù hợp` }, { type: 'warning' });
2581        return;
2582    }
2583
2584    if (file.type === "application/pdf") {
2585        return new Promise((resolve, reject) => {
2586            const fileReader = new FileReader();
2587            fileReader.readAsDataURL(file);
2588            fileReader.onload = () => resolve(fileReader.result);
2589            fileReader.onerror = error => reject(error);
2590        });
2591    }
2592    else {
2593        $.notify({ message: 'File không hợp lệ. Vui lòng chọn đúng định dạng file!' }, { type: 'warning' });
2594    }
2595}
2596
2597function readFileToBase64(file, maxFileSize, accept = null) {
2598    if (!file) return;
2599
2600    if (file.size > maxFileSize * 1024 * 1024) {
2601        $.notify({ message: `Tệp đính kèm vượt quá dung lượng cho phép (${maxFileSize}MB)<br/>Vui lòng chọn tệp phù hợp` }, { type: 'warning' });
2602        return;
2603    }
2604
2605    if (accept) {
2606        var checkAccept = accept.split(',').filter(p => $.trim(p)).map(p => $.trim(p));
2607        var isAccept = false;
2608        checkAccept.forEach(function (acceptType) {
2609            if (acceptType.indexOf('.') > 0 && file.name.endsWith(acceptType) || file.type.search(acceptType) >= 0) {
2610                isAccept = true;
2611            }
2612        });
2613
2614        if (isAccept) {
2615            return new Promise((resolve, reject) => {
2616                const fileReader = new FileReader();
2617                fileReader.readAsDataURL(file);
2618                fileReader.onload = () => resolve(fileReader.result);
2619                fileReader.onerror = error => reject(error);
2620            });
2621        }
2622    }
2623
2624    $.notify({ message: 'File không hợp lệ. Vui lòng chọn đúng định dạng file!' }, { type: 'warning' });
2625}
2626
2627function humanFileSize(bytes) {
2628    if (!bytes) return '0 B';
2629    const thresh = 1024;
2630    if (Math.abs(bytes) < thresh) {
2631        return bytes + ' B';
2632    }
2633
2634    const units = ['KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']
2635    let u = -1;
2636    const r = 10 ** 1
2637
2638    do {
2639        bytes /= thresh
2640        ++u
2641    } while (Math.round(Math.abs(bytes) * r) / r >= thresh && u < units.length - 1);
2642    return bytes.toFixed(1) + ' ' + units[u];
2643}
2644
2645//Thuế khác
2646const vatTempHtml = `<ul id="vat_dropdown_container" style="display: none;">
2647    <li value="0">0</li>
2648    <li value="5">5</li>
2649    <li value="8">8</li>
2650    <li value="10">10</li>
2651    <li value="-1">Không chịu thuế</li>
2652    <li value="-2">${KhongKeKhaiNopThueText}</li>
2653    </ul>`;
2654
2655$.fn.vatDropdown = function (value = '') {
2656    let $list = this;
2657
2658    if ($list.length === 0) return $list;
2659
2660    for (let $this of Array.from($list).map(p => $(p))) {
2661        let $display = $this.prev();
2662
2663        if ($display.length === 0 || $display.length > 0 && !$display.hasClass('vat_dropdown')) {
2664            $this.attr('type', 'hidden');
2665            $this.before('<input type="text">');
2666        }
2667
2668        $display = $this.prev();
2669        $display[0].className = $this[0].className;
2670        $display.removeClass('vat_donghang').addClass('vat_dropdown')
2671
2672        setValue(value !== '' ? value : $this.val());
2673
2674        if ($this.attr("disabled") || $this.attr("readonly"))
2675            $display.attr("readonly", "");
2676
2677        function setValue(value) {
2678            $this.val(value);
2679
2680            if (value == -1) {
2681                $display.val('Không chịu thuế');
2682            }
2683            else if (value == -2) {
2684                $display.val(KhongKeKhaiNopThueText);
2685            }
2686            else if (value == -3) {
2687                $display.val('KHAC');
2688            }
2689            else if ($.isNumeric(value)) {
2690                $display.val(value);
2691            }
2692            else {
2693                $display.val('');
2694            }
2695        }
2696
2697        if (document.getElementById('vat_dropdown_container') === null) {
2698            $('body').append(vatTempHtml);
2699
2700            $('ul#vat_dropdown_container > li')
2701                .off('mousedown')
2702                .on('mousedown', function () {
2703                    let target = $('ul#vat_dropdown_container').data('target');
2704                    target.displayInput.val($(this).text());
2705                    target.valueInput.val($(this).attr('value'));
2706
2707                    // trigger change -> tính tiền
2708                    target.valueInput.change();
2709
2710                    //isThueKhac() ? $('.tongThueKhac').show() : $('.tongThueKhac').hide();
2711                });
2712        }
2713
2714        let dropdown = document.getElementById('vat_dropdown_container');
2715
2716        $display.off('focus').on('focus', function () {
2717            if (this.hasAttribute('readonly'))
2718                return;
2719
2720            let bodyRect = document.body.getBoundingClientRect();
2721            let inputRect = this.getBoundingClientRect();
2722
2723            let top = inputRect.y - bodyRect.y + $display.outerHeight();
2724            let left = inputRect.x - bodyRect.x;
2725
2726            $(dropdown).children('li').removeClass("selected");
2727            $(dropdown).children(`li[value="${$this.val()}"]`).addClass('selected');
2728
2729            $(dropdown).css({
2730                width: $display.outerWidth() + 'px',
2731                minWidth: '140px',
2732                top: top + 'px',
2733                left: left + 'px',
2734                display: 'block'
2735            });
2736
2737            $(dropdown).data('target', {
2738                displayInput: $display,
2739                valueInput: $this
2740            });
2741        });
2742
2743        $display.off('blur').on('blur', function () {
2744            $(dropdown).css({
2745                display: 'none'
2746            });
2747
2748            $(dropdown).data('target', null);
2749        });
2750
2751        $display.off('keydown').on('keydown', function (e) {
2752            if (this.value) {
2753                let newValue = this.value.substr(0, this.selectionStart) + e.key + this.value.substr(this.selectionEnd);
2754
2755                if ($.isNumeric(newValue)) {
2756                    if (newValue >= 100)
2757                        e.preventDefault();
2758
2759                    let dotIndex = this.value.indexOf('.');
2760                    if (dotIndex > 0 && newValue.substr(dotIndex + 1).length > 2)
2761                        e.preventDefault();
2762                }
2763            }
2764
2765            if (e.key === '.' && (this.selectionStart === 0 || this.value.length > 0 && this.value.indexOf('.') >= 0)) {
2766                e.preventDefault();
2767            }
2768
2769            //Không phải từ 1 -> 9 hoặc '.'
2770            if (e.key.length === 1 && /^\d+$|\./g.test(e.key) === false && !e.ctrlKey && !e.altKey && !e.metaKey && !e.shiftKey) {
2771                e.preventDefault();
2772            }
2773        });
2774
2775        $display.off('change').on('change', function () {
2776            if ($.isNumeric(this.value) || $.trim(this.value) === '') {
2777                $this.val(this.value);
2778            }
2779            else if ($.trim(this.value) === 'Không chịu thuế') {
2780                $this.val(-1);
2781            }
2782            else if ($.trim(this.value) === KhongKeKhaiNopThueText) {
2783                $this.val(-2);
2784            }
2785            else if ($.trim(this.value) === 'KHAC') {
2786                $this.val(-3);
2787            }
2788            else // trường hợp ngoại lệ lấy ngược giá trị value để xét display
2789            {
2790                let value = $this.val();
2791
2792                setValue(value);
2793            }
2794
2795            $this.change();
2796
2797            //isThueKhac() ? $('.tongThueKhac').show() : $('.tongThueKhac').hide();
2798        });
2799
2800        $this.off('change.vatDropdown').on('change.vatDropdown', function (e) {
2801            if ($this.attr("data-bv-field")) {
2802                $this.trigger('input');
2803            }
2804            if (typeof $this.valid === 'function') {
2805                $this.valid() ? $display.removeClass('error') : $display.addClass('error')
2806            }
2807        });
2808    }
2809
2810    return $list;
2811}
2812
2813function isThueKhac() {
2814    let arrayVat = Array.from($('#bodyContent tr:visible input[name$=VAT]')).map(p => p.value);
2815    if (arrayVat.every(p => [-2, -1, 0, 5, 8, 10].indexOf(+p) >= 0)) {
2816        $('#TONG_VAT_KHAC').val(0);
2817        return false;
2818    }
2819
2820    return true;
2821}
2822
2823window.mobileCheck = function () {
2824    let check = false;
2825    (function (a) { if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4))) check = true; })(navigator.userAgent || navigator.vendor || window.opera);
2826    return check;
2827};
2828
2829window.mobileIos = function () {
2830    var userAgent = navigator.userAgent || navigator.vendor || window.opera;
2831    return (userAgent.match(/iPad/i) || userAgent.match(/iPhone/i) || userAgent.match(/iPod/i));
2832};
2833
2834String.prototype.replaceAll = function (str, replacer) {
2835    let newStr = this.toString();
2836
2837    if (replacer !== null && replacer !== undefined)
2838        while (newStr.indexOf(str) >= 0)
2839            newStr = newStr.replace(str, replacer);
2840
2841    return newStr;
2842}
2843
2844$(document).ready(function () {
2845    $('input.vat_donghang').each(function () {
2846        $(this).vatDropdown();
2847    });
2848});
2849
2850$.fn.setBusy = function (busy = true) {
2851    this.css('position', 'relative');
2852    this.find('.loading-container3').remove();
2853
2854    if (busy) {
2855        this.append(`<div class="loading-container3" style="display:block;">
2856            <div class="loading">
2857            </div>
2858        </div>`);
2859    }
2860
2861    return this;
2862}
2863
2864$.fn.serializeToObject = function () {
2865    let object = {};
2866    this.find('input:not([disabled]), textarea:not([disabled]), select:not([disabled])').each(function (i, el) {
2867        if (el.getAttribute('name')) {
2868            if (el.getAttribute('type') === 'checkbox') {
2869                if (el.checked) {
2870                    object[el.getAttribute('name')] = $(this).val();
2871                }
2872            }
2873            else {
2874                object[el.getAttribute('name')] = $(this).val();
2875            }
2876        }
2877    });
2878
2879    return object;
2880}
2881signalrConnected = function (mst, isNotify) {
2882    let obj = $.connection.requestCountUser;
2883    $.connection.hub.qs = { "Name": mst };
2884    $.connection.hub.start().done();
2885    if (isNotify == true) {
2886        GetCountNotify();
2887        obj.client.sendNotify = function (title, message, url, classIcon, icon) {
2888            SendNotification(title, message, url, classIcon, icon);
2889            GetCountNotifyUnRead();
2890        };
2891        obj.client.sendNotifyByMST = function (mst) {
2892            ConsumerData(mst);
2893        };
2894
2895        document.addEventListener('DOMContentLoaded', function () {
2896            setTimeout(function () {
2897                GetCountNotifyUnReadAutoSync();
2898                GetCountNotifyTabAutoSync();
2899            }, 100);
2900        });
2901
2902        setInterval(() => {
2903            ConsumerData(mst)
2904        }, 30000);
2905    }
2906};
2907
2908async function ConsumerData(mst) {
2909    return await new Promise(resolve => {
2910        $.ajax({
2911            type: "POST",
2912            url: '/ThongBaoMenu/ConsumerData/',
2913            dataType: "json",
2914            data: { mst: mst, isNotifyWindow: ("Notification" in window && Notification.permission === "granted") },
2915            async: false,
2916            success: function (data) { },
2917            error: function (er) { }
2918        });
2919    });
2920}
2921
2922async function GetCountNotifyTabAutoSync() {
2923    setInterval(() => {
2924        GetCountNotifyTab();
2925    }, 60000);
2926}
2927
2928async function GetCountNotifyUnReadAutoSync() {
2929    setInterval(() => {
2930        GetCountNotifyUnRead();
2931    }, 30000);
2932}
2933
2934async function GetCountNotify() {
2935    await Promise.all([GetCountNotifyUnRead(), GetCountNotifyTab()]);
2936}
2937
2938async function GetCountNotifyUnRead() {
2939    await fetch('/ThongBaoMenu/GetCountNotifyUnRead/').then(response => response.json()).then(data => {
2940        if (data != null) {
2941            if (data.total == '99+' || parseInt(data.total) > 0) {
2942                $("div.notifyAlert").show();
2943                $("div.notifyAlert>span").text(data.total);
2944            } else {
2945                $("div.notifyAlert").hide();
2946            }
2947        }
2948    }).catch(error => {
2949        console.log(error);
2950    })
2951}
2952
2953async function GetCountNotifyTab() {
2954    await fetch('/ThongBaoMenu/GetCountNotify/').then(response => response.json()).then(data => {
2955        if (data != null) {
2956            $("button[name='contentTabNotifyAll'] span").text(data.total);
2957            $("button[name='contentTabNotifyHeThong'] span").text(data.totalHeThong);
2958            $("button[name='contentTabNotifyTinTuc'] span").text(data.totalTinTuc);
2959            $("button[name='contentTabNotifyHoatDong'] span").text(data.totalHoatDong);
2960        }
2961    }).catch(error => {
2962        console.log(error);
2963    })
2964}
2965
2966function timeSince(date) {
2967    let seconds = Math.floor((new Date() - date) / 1000);
2968    if (seconds < 0)
2969        return timeSince(Math.abs(seconds)).replace("trước", "sau");
2970    var interval = seconds / 31536000;
2971
2972    if (interval > 1) {
2973        return Math.floor(interval) + " năm trước";
2974    }
2975    interval = seconds / 2592000;
2976    if (interval > 1) {
2977        return Math.floor(interval) + " tháng trước";
2978    }
2979    interval = seconds / 86400;
2980    if (interval > 1) {
2981        return Math.floor(interval) + " ngày trước";
2982    }
2983    interval = seconds / 3600;
2984    if (interval > 1) {
2985        return Math.floor(interval) + " giờ trước";
2986    }
2987    interval = seconds / 60;
2988    if (interval > 1) {
2989        return Math.floor(interval) + " phút trước";
2990    }
2991    return Math.floor(seconds) + " giây trước";
2992}
2993
2994async function SendNotification(title, message, url, classIcon, icon) {
2995    if ("Notification" in window && Notification.permission === "granted") {
2996        var options = {
2997            body: message,
2998            icon: icon,
2999            dir: 'ltr'
3000        };
3001        let hrefURL = window.location.host + url;
3002        var notification = new Notification(title, options);
3003        notification.onclick = function () {
3004            window.open(hrefURL, "_blank")
3005        };
3006    } else {
3007        $.notifyMenu({
3008            message: message,
3009            title: title,
3010            icon: classIcon,
3011            url: url
3012        });
3013    }
3014}
3015
3016function notifyWindow(isNotify) {
3017    if (isNotify == true && ("Notification" in window) && Notification.permission !== 'denied') {
3018        Notification.requestPermission(function (permission) {
3019            if (!('permission' in Notification)) {
3020                Notification.permission = permission;
3021            }
3022        });
3023    }
3024}
3025String.prototype.countDecimals = function () {
3026    if (Math.floor(this.valueOf()) === this.valueOf()) return 0;
3027    if (this.toString().includes(".")) {
3028        return this.toString().split(".")[1].length || 0;
3029    }
3030    return 0;
3031}
3032
3033function getCookie(name) {
3034    const value = `; ${document.cookie}`;
3035    const parts = value.split(`; ${name}=`);
3036    if (parts.length === 2) return parts.pop().split(';').shift();
3037}
3038
3039function isHaveCookie(cookeiname) {
3040    var ca = document.cookie.split(';')
3041    for (var i = 0; i < ca.length; i++) {
3042        if (ca[i].indexOf(cookeiname) != -1) {
3043            return true;
3044        }
3045    }
3046    return false;
3047}
3048
3049var countDownSign = 0;     // Set count
3050var timerCountDownSign = null;  // For referencing the timer
3051
3052function initCountDownSign(countDownSecond) {
3053    let isRun = countDownSign > 0;
3054    countDownSign = parseInt(countDownSecond);
3055    $(".save-button-signTime").attr("disabled", true);
3056    if (isRun == true) {
3057        $(".clsCountDown").text(countDownSign);
3058    }
3059    else
3060        countDownSignRetrie(countDownSign);
3061}
3062
3063var countDownSignRetrie = function () {
3064    // Display counter and start counting down
3065    $(".clsCountDown").text(countDownSign);
3066    // Run the function again every second if the count is not zero
3067    if (countDownSign !== 0) {
3068        timerCountDownSign = setTimeout(countDownSignRetrie, 1000);
3069        countDownSign--; // decrease the timer
3070    } else {
3071        // Enable the button
3072        $(".countDownSign").hide();
3073        $(".save-button-signTime").attr("disabled", false);
3074    }
3075};;
3076const regexpEmail = /^[\w-\.+]+@([a-zA-Z0-9-]+\.)+[a-zA-Z0-9-]{2,100}$/i ;;
3077;
3078/*!
3079 * jQuery Typeahead
3080 * Copyright (C) 2016 RunningCoder.org
3081 * Licensed under the MIT license
3082 *
3083 * @author Tom Bertrand
3084 * @version 2.6.1 (2016-5-2)
3085 * @link http://www.runningcoder.org/jquerytypeahead/
3086 */;
3087(function (factory) {
3088    if (typeof define === 'function' && define.amd) {
3089        define('jquery-typeahead', ['jquery'], function (jQuery) {
3090            return factory(jQuery);
3091        });
3092    } else if (typeof module === 'object' && module.exports) {
3093        module.exports = function (jQuery, root) {
3094            if (jQuery === undefined) {
3095                if (typeof window !== 'undefined') {
3096                    jQuery = require('jquery');
3097                }
3098                else {
3099                    jQuery = require('jquery')(root);
3100                }
3101            }
3102            return factory(jQuery);
3103        };
3104    } else {
3105        factory(jQuery);
3106    }
3107}(function ($) {
3108
3109    "use strict";
3110
3111    window.Typeahead = {
3112        version: '2.6.1'
3113    };
3114
3115    /**
3116     * @private
3117     * Default options
3118     *
3119     * @link http://www.runningcoder.org/jquerytypeahead/documentation/
3120     */
3121    var _options = {
3122        input: null,
3123        minLength: 2,           // Modified feature, now accepts 0 to search on focus
3124        maxItem: 8,             // Modified feature, now accepts 0 as "Infinity" meaning all the results will be displayed
3125        dynamic: false,
3126        delay: 300,
3127        order: null,            // ONLY sorts the first "display" key
3128        offset: false,
3129        hint: false,            // -> Improved feature, Added support for excessive "space" characters
3130        accent: false,          // -> Improved feature, define a custom replacement object
3131        highlight: true,        // ->
3131 Added "any" to highlight any word in the template, by default true will only highlight display keys
3132        group: false,           // -> Improved feature, Boolean,string,object(key, template (string, function))
3133        groupOrder: null,       // -> New feature, order groups "asc", "desc", Array, Function
3134        maxItemPerGroup: null,  // -> Renamed option
3135        dropdownFilter: false,  // -> Renamed option, true will take group options string will filter on object key
3136        dynamicFilter: null,    // -> New feature, filter the typeahead results based on dynamic value, Ex: Players based on TeamID
3137        backdrop: false,
3138        backdropOnFocus: false, // -> New feature, display the backdrop option as the Typeahead input is :focused
3139        cache: false,           // -> Improved option, true OR 'localStorage' OR 'sessionStorage'
3140        ttl: 3600000,
3141        compression: false,     // -> Requires LZString library
3142        suggestion: false,      // -> *Coming soon* New feature, save last searches and display suggestion on matched characters
3143        searchOnFocus: false,   // -> New feature, display search results on input focus
3144        resultContainer: null,  // -> New feature, list the results inside any container string or jQuery object
3145        generateOnLoad: null,   // -> New feature, forces the source to be generated on page load even if the input is not focused!
3146        mustSelectItem: false,  // -> New option, the submit function only gets called if an item is selected
3147        href: null,             // -> New feature, String or Function to format the url for right-click & open in new tab on link results
3148        display: ["display"],   // -> Improved feature, allows search in multiple item keys ["display1", "display2"]
3149        template: null,
3150        groupTemplate: null,    // -> New feature, set a custom template for the groups
3151        correlativeTemplate: false, // -> New feature, compile display keys, enables multiple key search from the template string
3152        emptyTemplate: false,   // -> New feature, display an empty template if no result
3153        cancelButton: true,     // -> New feature, if text is detected in the input, a cancel button will be available to reset the input (pressing ESC also cancels)
3154        loadingAnimation: true, // -> New feature, will display a loading animation when typeahead is doing request / searching for results
3155        filter: true,           // -> New feature, set to false or function to bypass Typeahead filtering. WARNING: accent, correlativeTemplate, offset & matcher will not be interpreted
3156        matcher: null,          // -> New feature, add an extra filtering function after the typeahead functions
3157        source: null,
3158        callback: {
3159            onInit: null,
3160            onReady: null,              // -> New callback, when the Typeahead initial preparation is completed
3161            onShowLayout: null,         // -> New callback, called when the layout is shown
3162            onHideLayout: null,         // -> New callback, called when the layout is hidden
3163            onSearch: null,             // -> New callback, when data is being fetched & analyzed to give search results
3164            onResult: null,
3165            onLayoutBuiltBefore: null,  // -> New callback, when the result HTML is build, modify it before it get showed
3166            onLayoutBuiltAfter: null,   // -> New callback, modify the dom right after the results gets inserted in the result container
3167            onNavigateBefore: null,     // -> New callback, when a key is pressed to navigate the results
3168            onNavigateAfter: null,      // -> New callback, when a key is pressed to navigate the results
3169            onMouseEnter: null,
3170            onMouseLeave: null,
3171            onClickBefore: null,        // -> Improved feature, possibility to e.preventDefault() to prevent the Typeahead behaviors
3172            onClickAfter: null,         // -> New feature, happens after the default clicked behaviors has been executed
3173            onSendRequest: null,        // -> New callback, gets called when the Ajax request(s) are sent
3174            onReceiveRequest: null,     // -> New callback, gets called when the Ajax request(s) are all received
3175            onPopulateSource: null,     // -> New callback, Perform operation on the source data before it gets in Typeahead data
3176            onCacheSave: null,          // -> New callback, Perform operation on the source data before it gets in Typeahead cache
3177            onSubmit: null
3178        },
3179        selector: {
3180            container: "typeahead__container",
3181            result: "typeahead__result",
3182            list: "typeahead__list",
3183            group: "typeahead__group",
3184            item: "typeahead__item",
3185            empty: "typeahead__empty",
3186            display: "typeahead__display",
3187            query: "typeahead__query",
3188            filter: "typeahead__filter",
3189            filterButton: "typeahead__filter-button",
3190            dropdown: "typeahead__dropdown",
3191            dropdownItem: "typeahead__dropdown-item",
3192            button: "typeahead__button",
3193            backdrop: "typeahead__backdrop",
3194            hint: "typeahead__hint",
3195            cancelButton: "typeahead__cancel-button"
3196        },
3197        debug: false
3198    };
3199
3200    /**
3201     * @private
3202     * Event namespace
3203     */
3204    var _namespace = ".typeahead";
3205
3206    /**
3207     * @private
3208     * Accent equivalents
3209     */
3210    var _accent = {
3211        from: "ãàáäâẽèéëêìíïîõòóöôùúüûñç",
3212        to: "aaaaaeeeeeiiiiooooouuuunc"
3213    };
3214
3215    /**
3216     * #62 IE9 doesn't trigger "input" event when text gets removed (backspace, ctrl+x, etc)
3217     * @private
3218     */
3219    var _isIE9 = ~window.navigator.appVersion.indexOf("MSIE 9.");
3220
3221    // SOURCE GROUP RESERVED WORDS: ajax, data, url
3222    // SOURCE ITEMS RESERVED KEYS: group, display, data, matchedKey, compiled, href
3223
3224    /**
3225     * @constructor
3226     * Typeahead Class
3227     *
3228     * @param {object} node jQuery input object
3229     * @param {object} options User defined options
3230     */
3231    var Typeahead = function (node, options) {
3232
3233        this.rawQuery = node.val() || '';   // Unmodified input query
3234        this.query = node.val() || '';
3234      // Input query
3235        this.namespace = '.' + node.selector + _namespace; // Every Typeahead instance gets its own namespace for events
3236        this.tmpSource = {};                // Temp var to preserve the source order for the searchResult function
3237        this.source = {};                   // The generated source kept in memory
3238        this.isGenerated = null;            // Generated results -> null: not generated, false: generating, true generated
3239        this.generatedGroupCount = 0;       // Number of groups generated, if limit reached the search can be done
3240        this.groupCount = 0;                // Number of groups, this value gets counted on the initial source unification
3241        this.groupBy = "group";             // This option will change according to filtering or custom grouping
3242        this.groups = [];                   // Array of all the available groups, used to build the groupTemplate
3243        this.result = {};                   // Results based on Source-query match (only contains the displayed elements)
3244        this.groupTemplate = '';            // Result template at the {{group}} level
3245        this.resultHtml = null;             // HTML Results (displayed elements)
3246        this.resultCount = 0;               // Total results based on Source-query match
3247        this.resultCountPerGroup = {};      // Total results based on Source-query match per group
3248        this.options = options;             // Typeahead options (Merged default & user defined)
3249        this.node = node;                   // jQuery object of the Typeahead <input>
3250        this.container = null;              // Typeahead container, usually right after <form>
3251        this.resultContainer = null;        // Typeahead result container (html)
3252        this.item = null;                   // The selected item
3253        this.xhr = {};                      // Ajax request(s) stack
3254        this.hintIndex = null;              // Numeric value of the hint index in the result list
3255        this.filters = {                    // Filter list for searching, dropdown and dynamic(s)
3256            dropdown: {},                   // Dropdown menu if options.dropdownFilter is set
3257            dynamic: {}                     // Checkbox / Radio / Select to filter the source data
3258        };
3259        this.dropdownFilter = {
3260            static: [],                 // Objects that has a value
3261            dynamic: []
3262        };
3263        this.dropdownFilterAll = null;  // The last "all" definition
3264
3265        this.requests = {};             // Store the group:request instead of generating them every time
3266
3267        this.backdrop = {};             // The backdrop object
3268        this.hint = {};                 // The hint object
3269        this.hasDragged = false;
3269        // Will cancel mouseend events if true
3270        this.focusOnly = false;         // Focus the input preventing any operations
3271
3272        this.__construct();
3273
3274    };
3275
3276    Typeahead.prototype = {
3277
3278        extendOptions: function () {
3279
3280            // If the Typeahead is dynamic, force no cache & no compression
3281            if (this.options.dynamic) {
3282                this.options.cache = false;
3283                this.options.compression = false;
3284            }
3285
3286            if (this.options.cache) {
3287                this.options.cache = (function (cache) {
3288
3289                    var supportedCache = ['localStorage', 'sessionStorage'],
3290                        supported;
3291
3292                    if (cache === true) {
3293                        cache = 'localStorage';
3294                    } else if (typeof cache === "string" && !~supportedCache.indexOf(cache)) {
3295                        // {debug}
3296                        if (this.options.debug) {
3297                            _debug.log({
3298                                'node': this.node.selector,
3299                                'function': 'extendOptions()',
3300                                'message': 'Invalid options.cache, possible options are "localStorage" or "sessionStorage"'
3301                            });
3302
3303                            _debug.print();
3304                        }
3305                        // {/debug}
3306                        return false;
3307                    }
3308
3309                    supported = typeof window[cache] !== "undefined"
3310
3311                    try {
3312                        window[cache].setItem("typeahead", "typeahead");
3313                        window[cache].removeItem("typeahead");
3314                    } catch (e) {
3315                        supported = false;
3316                    }
3317
3318                    return supported && cache || false;
3319                }).call(this, this.options.cache);
3320            }
3321
3322            if (this.options.compression) {
3323                if (typeof LZString !== 'object' || !this.options.cache) {
3324                    // {debug}
3325                    if (this.options.debug) {
3326                        _debug.log({
3327                            'node': this.node.selector,
3328                            'function': 'extendOptions()',
3329                            'message': 'Missing LZString Library or options.cache, no compression will occur.'
3330                        });
3331
3332                        _debug.print();
3333                    }
3334                    // {/debug}
3335                    this.options.compression = false;
3336                }
3337            }
3338
3339            if (typeof this.options.maxItem !== "undefined" && (!/^\d+$/.test(this.options.maxItem) || this.options.maxItem === 0)) {
3340                this.options.maxItem = Infinity;
3341            }
3342
3343            if (this.options.maxItemPerGroup && !/^\d+$/.test(this.options.maxItemPerGroup)) {
3344                this.options.maxItemPerGroup = null;
3345            }
3346
3347            if (this.options.display && !Array.isArray(this.options.display)) {
3348                this.options.display = [this.options.display];
3349            }
3350
3351            if (this.options.group) {
3352                
3353                if (!Array.isArray(this.options.group)) {
3354                    if (typeof this.options.group === "string") {
3355                        this.options.group = {
3356                            key: this.options.group
3357                        }
3358                    } else if (typeof this.options.group === "boolean") {
3359                        this.options.group = {
3360                            key: 'group'
3361                        }
3362                    }
3363
3364                    this.options.group.key = this.options.group.key || "group";
3365                }
3366                // {debug}
3367                else {
3368                    if (this.options.debug) {
3369                        _debug.log({
3370                            'node': this.node.selector,
3371                            'function': 'extendOptions()',
3372                            'message': 'options.group must be a boolean|string|object as of 2.5.0'
3373                        });
3374
3375                        _debug.print();
3376                    }
3377                }
3378                // {/debug}
3379            }
3380
3381            if (this.options.highlight && !~["any", true].indexOf(this.options.highlight)) {
3382                this.options.highlight = false;
3383            }
3384
3385            if (this.options.dropdownFilter && this.options.dropdownFilter instanceof Object) {
3386                if (!Array.isArray(this.options.dropdownFilter)) {
3387                    this.options.dropdownFilter = [this.options.dropdownFilter];
3388                }
3389                for (var i = 0, ii = this.options.dropdownFilter.length; i < ii; ++i) {
3390                    this.dropdownFilter[this.options.dropdownFilter[i].value ? 'static' : 'dynamic'].push(this.options.dropdownFilter[i]);
3391                }
3392            }
3393
3394            if (this.options.dynamicFilter && !Array.isArray(this.options.dynamicFilter)) {
3395                this.options.dynamicFilter = [this.options.dynamicFilter]
3396            }
3397
3398            if (this.options.accent) {
3399                if (typeof this.options.accent === "object") {
3400                    if (this.options.accent.from && this.options.accent.to && this.options.accent.from.length === this.options.accent.to.length) {
3401
3402                    }
3403                    // {debug}
3404                    else {
3405                        if (this.options.debug) {
3406                            _debug.log({
3407                                'node': this.node.selector,
3408                                'function': 'extendOptions()',
3409                                'message': 'Invalid "options.accent", from and to must be defined and same length.'
3410                            });
3411
3412                            _debug.print();
3413                        }
3414                    }
3415                    // {/debug}
3416                } else {
3417                    this.options.accent = _accent;
3418                }
3419            }
3420
3421            if (this.options.groupTemplate) {
3422                this.groupTemplate = this.options.groupTemplate;
3423            }
3424
3425            if (this.options.resultContainer) {
3426                if (typeof this.options.resultContainer === "string") {
3427                    this.options.resultContainer = $(this.options.resultContainer);
3428                }
3429
3430                if (!(this.options.resultContainer instanceof $) || !this.options.resultContainer[0]) {
3431                    // {debug}
3432                    if (this.options.debug) {
3433                        _debug.log({
3434                            'node': this.node.selector,
3435                            'function': 'extendOptions()',
3436                            'message': 'Invalid jQuery selector or jQuery Object for "options.resultContainer".'
3437                        });
3438
3439                        _debug.print();
3440                    }
3441                    // {/debug}
3442                } else {
3443                    this.resultContainer = this.options.resultContainer;
3444                }
3445            }
3446
3447            if (this.options.maxItemPerGroup && this.options.group && this.options.group.key) {
3448                this.groupBy = this.options.group.key;
3449            }
3450
3451            // Compatibility onClick callback
3452            if (this.options.callback && this.options.callback.onClick) {
3453                this.options.callback.onClickBefore = this.options.callback.onClick;
3454                delete this.options.callback.onClick;
3455            }
3456
3457            // Compatibility onNavigate callback
3458            if (this.options.callback && this.options.callback.onNavigate) {
3459                this.options.callback.onNavigateBefore = this.options.callback.onNavigate;
3460                delete this.options.callback.onNavigate;
3461            }
3462
3463            this.options = $.extend(
3464                true,
3465                {},
3466                _options,
3467                this.options
3468            );
3469
3470        },
3471
3472        unifySourceFormat: function () {
3473
3474            this.groupCount = 0;
3475
3476            // source: ['item1', 'item2', 'item3']
3477            if (Array.isArray(this.options.source)) {
3478                this.options.source = {
3479                    group: {
3480                        data: this.options.source
3481                    }
3482                };
3483
3484                this.groupCount = 1;
3485                return true;
3486            }
3487
3488            // source: "http://www.test.com/url.json"
3489            if (typeof this.options.source === "string") {
3490                this.options.source = {
3491                    group: {
3492                        ajax: {
3493                            url: this.options.source
3494                        }
3495                    }
3496                };
3497            }
3498
3499            if (this.options.source.ajax) {
3500                this.options.source = {
3501                    group: {
3502                        ajax: this.options.source.ajax
3503                    }
3504                };
3505            }
3506
3507
3508            // source: {data: ['item1', 'item2'], url: "http://www.test.com/url.json"}
3509            if (this.options.source.url || this.options.source.data) {
3510                this.options.source = {
3511                    group: this.options.source
3512                };
3513            }
3514
3515            var group,
3516                groupSource,
3517                tmpAjax;
3518
3519            for (group in this.options.source) {
3520                if (!this.options.source.hasOwnProperty(group)) continue;
3521
3522                groupSource = this.options.source[group];
3523
3524                // source: {group: "http://www.test.com/url.json"}
3525                if (typeof groupSource === "string") {
3526                    groupSource = {
3527                        ajax: {
3528                            url: groupSource
3529                        }
3530                    };
3531                }
3532
3533                // source: {group: {url: ["http://www.test.com/url.json", "json.path"]}}
3534                tmpAjax = groupSource.url || groupSource.ajax;
3535                if (Array.isArray(tmpAjax)) {
3536                    groupSource.ajax = typeof tmpAjax[0] === "string" ? {
3537                        url: tmpAjax[0]
3538                    } : tmpAjax[0];
3539                    groupSource.ajax.path = groupSource.ajax.path || tmpAjax[1] || null;
3540                    delete groupSource.url;
3541                } else {
3542                    // source: {group: {url: {url: "http://www.test.com/url.json", method: "GET"}}}
3543                    // source: {group: {url: "http://www.test.com/url.json", dataType: "jsonp"}}
3544                    if (typeof groupSource.url === "object") {
3545                        groupSource.ajax = groupSource.url;
3546                    } else if (typeof groupSource.url === "string") {
3547                        groupSource.ajax = {
3548                            url: groupSource.url
3549                        };
3550                    }
3551                    delete groupSource.url;
3552                }
3553
3554                if (!groupSource.data && !groupSource.ajax) {
3555
3556                    // {debug}
3557                    if (this.options.debug) {
3558                        _debug.log({
3559                            'node': this.node.selector,
3560                            'function': 'unifySourceFormat()',
3561                            'arguments': JSON.stringify(this.options.source),
3562                            'message': 'Undefined "options.source.' + group + '.[data|ajax]" is Missing - Typeahead dropped'
3563                        });
3564
3565                        _debug.print();
3566                    }
3567                    // {/debug}
3568
3569                    return false;
3570                }
3571
3572                if (groupSource.display && !Array.isArray(groupSource.display)) {
3573                    groupSource.display = [groupSource.display];
3574                }
3575
3576                this.options.source[group] = groupSource;
3577
3578                this.groupCount++;
3579
3580            }
3581
3582            return true;
3583        },
3584
3585        init: function () {
3586
3587            this.helper.executeCallback.call(this, this.options.callback.onInit, [this.node]);
3588
3589            this.container = this.node.closest('.' + this.options.selector.container);
3590
3591            // {debug}
3592            if (this.options.debug) {
3593                _debug.log({
3594                    'node': this.node.selector,
3595                    'function': 'init()',
3596                    //'arguments': JSON.stringify(this.options),
3597                    'message': 'OK - Typeahead activated on ' + this.node.selector
3598                });
3599
3600                _debug.print();
3601            }
3602            // {/debug}
3603
3604        },
3605
3606        delegateEvents: function () {
3607
3608            var scope = this,
3609                events = [
3610                    'focus' + this.namespace,
3611                    'input' + this.namespace,
3612                    'propertychange' + this.namespace,  // IE8 Fix
3613                    'keydown' + this.namespace,
3614                    'keyup' + this.namespace,           // IE9 Fix
3615                    'dynamic' + this.namespace,
3616                    'generate' + this.namespace
3617                ];
3618
3619            //#149 - Adding support for Mobiles
3620            $('html').on("touchmove", function () {
3621                scope.hasDragged = true;
3622            }).on("touchstart", function () {
3623                scope.hasDragged = false;
3624            });
3625
3626            this.node.closest('form').on("submit", function (e) {
3627                if (scope.options.mustSelectItem && scope.helper.isEmpty(scope.item)) {
3628                    e.preventDefault();
3629                    return;
3630                }
3631
3632                if (!scope.options.backdropOnFocus) {
3633                    scope.hideLayout();
3634                }
3635
3636                if (scope.options.callback.onSubmit) {
3637                    return scope.helper.executeCallback.call(scope, scope.options.callback.onSubmit, [scope.node, this, scope.item, e]);
3638                }
3639            });
3640
3641            // IE8 fix
3642            var preventNextEvent = false;
3643
3644            this.node.off(this.namespace).on(events.join(' '), function (e) {
3645
3646                switch (e.type) {
3647                    case "generate":
3648                        scope.isGenerated = null;
3649                        scope.generateSource();
3650                        break;
3651                    case "focus":
3652                        scope.rawQuery = '';   // Unmodified input query
3653                        scope.query = '';
3654                        scope.isGenerated = null;
3655                        if (scope.focusOnly) {
3656                            scope.focusOnly = false;
3657                            break;
3658                        }
3659                        if (scope.options.backdropOnFocus) {
3660                            scope.buildBackdropLayout();
3661                            scope.showLayout();
3662                        }
3663                        if (scope.options.searchOnFocus && scope.query.length >= scope.options.minLength) {
3664                            if (scope.isGenerated) {
3665                                scope.showLayout();
3666                            } else if (scope.isGenerated === null) {
3667                                scope.generateSource();
3668                            }
3669                        }
3670                    case "keydown":
3671                        if (e.keyCode && ~[9, 13, 27, 38, 39, 40].indexOf(e.keyCode)) {
3672                            preventNextEvent = true;
3673                            scope.navigate(e);
3674                        }
3675                        break;
3676                    case "keyup":
3677                        if (scope.isGenerated === null && !scope.options.dynamic) {
3678                            scope.generateSource();
3679                        }
3680                        if (_isIE9 && scope.node[0].value.replace(/^\s+/, '').toString().length < scope.query.length) {
3681                            scope.node.trigger('input' + scope.namespace);
3682                        }
3683                        break;
3684                    case "propertychange":
3685                        if (preventNextEvent) {
3686                            preventNextEvent = false;
3687                            break;
3688                        }
3689                    case "input":
3690
3691                        scope.rawQuery = scope.node[0].value.toString();
3692                        scope.query = scope.rawQuery.replace(/^\s+/, '');
3693
3694                        scope.options.cancelButton && scope.toggleCancelButton();
3695
3696                        if (scope.options.hint && scope.hint.container && scope.hint.container.val() !== '') {
3697                            if (scope.hint.container.val().indexOf(scope.rawQuery) !== 0) {
3698                                scope.hint.container.val('')
3699                            }
3700                        }
3701                        if (scope.options.dynamic) {
3702                            scope.isGenerated = null;
3703                            scope.helper.typeWatch(function () {
3704                                if (scope.query.length >= scope.options.minLength) {
3705                                    scope.generateSource();
3706                                } else {
3707                                    scope.hideLayout();
3708                                }
3709                            }, scope.options.delay);
3710                            return;
3711                        }
3712                    case "dynamic":
3713                        if (!scope.isGenerated) {
3714                            break;
3715                        }
3716
3717                        scope.searchResult();
3718                        scope.buildLayout();
3719
3720                        if ((scope.result.length > 0 || scope.options.emptyTemplate) &&
3721                            scope.query.length >= scope.options.minLength
3722                        ) {
3723                            scope.showLayout();
3724                        } else {
3725                            scope.hideLayout();
3726                        }
3727
3728                        break;
3729                }
3730
3731            });
3732
3733            if (this.options.generateOnLoad) {
3734                this.node.trigger('generate' + this.namespace);
3735            }
3736
3737        },
3738
3739        generateSource: function () {
3740
3741            if (this.isGenerated && !this.options.dynamic) {
3742                return;
3743            }
3744
3745            this.generatedGroupCount = 0;
3746            this.isGenerated = false;
3747            this.options.loadingAnimation && this.container.addClass('loading');
3748
3749            if (!this.helper.isEmpty(this.xhr)) {
3750                for (var i in this.xhr) {
3751                    if (!this.xhr.hasOwnProperty(i)) continue;
3752                    this.xhr[i].abort();
3753                }
3754                this.xhr = {};
3755            }
3756
3757            var group,
3758                groupSource,
3759                dataInStorage,
3760                isValidStorage;
3761
3762            for (group in this.options.source) {
3763                if (!this.options.source.hasOwnProperty(group)) continue;
3764
3765                groupSource = this.options.source[group];
3766
3767                // Get group source from Localstorage
3768                if (this.options.cache) {
3769
3770                    dataInStorage = window[this.options.cache].getItem('TYPEAHEAD_' + this.node.selector + ":" + group);
3771
3772                    if (dataInStorage) {
3773                        if (this.options.compression) {
3774                            dataInStorage = LZString.decompressFromUTF16(dataInStorage);
3775                        }
3776
3777                        // In case the storage key:value are not readable anymore
3778                        isValidStorage = false;
3779                        try {
3780                            dataInStorage = JSON.parse(dataInStorage + "");
3781
3782                            if (dataInStorage.data && dataInStorage.ttl > new Date().getTime()) {
3783
3784                                this.populateSource(dataInStorage.data, group);
3785                                isValidStorage = true;
3786
3787                                // {debug}
3788                                if (this.options.debug) {
3789                                    _debug.log({
3790                                        'node': this.node.selector,
3791                                        'function': 'generateSource()',
3792                                        'message': 'Source for group "' + group + '" found in ' + this.options.cache
3793                                    });
3794                                    _debug.print();
3795                                }
3796                                // {/debug}
3797
3798                            } else {
3799                                window[this.options.cache].removeItem('TYPEAHEAD_' + this.node.selector + ":" + group);
3800                            }
3801                        } catch (error) {
3802                        }
3803
3804                        if (isValidStorage) continue;
3805                    }
3806                }
3807
3808                // Get group source from data
3809                if (groupSource.data && !groupSource.ajax) {
3810                    this.populateSource(
3811                        $.extend(true, [], groupSource.data),
3812                        group
3813                    );
3814                    continue;
3815                }
3816
3817                // Get group source from Ajax / JsonP
3818                if (groupSource.ajax) {
3819                    if (!this.requests[group]) {
3820                        this.requests[group] = this.generateRequestObject(group);
3821                    }
3822                }
3823            }
3824
3825            this.handleRequests();
3826
3827        },
3828
3829        generateRequestObject: function (group) {
3830
3831            var scope = this,
3832                groupSource = this.options.source[group];
3833
3834            var xhrObject = {
3835                request: {
3836                    url: groupSource.ajax.url || null,
3837                    dataType: 'json',
3838                    beforeSend: function (jqXHR, options) {
3839                        // Important to call .abort() in case of dynamic requests
3840                        scope.xhr[group] = jqXHR;
3841
3842                        var beforeSend = scope.requests[group].callback.beforeSend || groupSource.ajax.beforeSend;
3843                        typeof beforeSend === "function" && beforeSend.apply(null, arguments);
3844                    }
3845                },
3846                callback: {
3847                    beforeSend: null,
3848                    done: null,
3849                    fail: null,
3850                    then: null,
3851                    always: null
3852                },
3853                extra: {
3854                    path: groupSource.ajax.path || null,
3855                    group: group
3856                },
3857                validForGroup: [group]
3858            };
3859
3860            if (typeof groupSource.ajax !== "function") {
3861                if (groupSource.ajax instanceof Object) {
3862                    xhrObject = this.extendXhrObject(xhrObject, groupSource.ajax);
3863                }
3864
3865                if (Object.keys(this.options.source).length > 1) {
3866                    for (var _group in this.requests) {
3867                        if (!this.requests.hasOwnProperty(_group)) continue;
3868                        if (this.requests[_group].isDuplicated) continue;
3869
3870                        if (xhrObject.request.url && xhrObject.request.url === this.requests[_group].request.url) {
3871                            this.requests[_group].validForGroup.push(group);
3872                            xhrObject.isDuplicated = true;
3873                            delete xhrObject.validForGroup;
3874                        }
3875                    }
3876                }
3877            }
3878
3879            return xhrObject;
3880
3881        },
3882
3883        extendXhrObject: function (xhrObject, groupRequest) {
3884
3885            if (typeof groupRequest.callback === "object") {
3886                xhrObject.callback = groupRequest.callback;
3887                delete groupRequest.callback;
3888            }
3889
3890            // #132 Fixed beforeSend when using a function as the request object
3891            if (typeof groupRequest.beforeSend === "function") {
3892                xhrObject.callback.beforeSend = groupRequest.beforeSend;
3893                delete groupRequest.beforeSend;
3894            }
3895
3896            // Fixes #105 Allow user to define their beforeSend function.
3897            // Fixes #181 IE8 incompatibility
3898            xhrObject.request = $.extend(true, xhrObject.request, groupRequest/*, {beforeSend: xhrObject.request.beforeSend}*/);
3899
3900            // JSONP needs a unique jsonpCallback to run concurrently
3901            if (xhrObject.request.dataType.toLowerCase() === 'jsonp' && !xhrObject.request.jsonpCallback) {
3902                xhrObject.request.jsonpCallback = 'callback_' + xhrObject.extra.group;
3903            }
3904
3905            return xhrObject;
3906
3907        },
3908
3909        handleRequests: function () {
3910
3911            var scope = this,
3912                requestsCount = Object.keys(this.requests).length;
3913
3914            if (this.helper.executeCallback.call(this, this.options.callback.onSendRequest, [this.node, this.query]) === false) {
3915                this.isGenerated = null;
3916                return;
3917            }
3918
3919
3920            for (var group in this.requests) {
3921                if (!this.requests.hasOwnProperty(group)) continue;
3922                if (this.requests[group].isDuplicated) continue;
3923
3924                (function (group, xhrObject) {
3925
3926                    if (typeof scope.options.source[group].ajax === "function") {
3927
3928                        var _groupRequest = scope.options.source[group].ajax.call(scope, scope.query);
3929                        xhrObject = scope.extendXhrObject(xhrObject, _groupRequest);
3930
3931                        if (typeof xhrObject.request !== "object" || !xhrObject.request.url) {
3932                            // {debug}
3933                            if (scope.options.debug) {
3934                                _debug.log({
3935                                    'node': scope.node.selector,
3936                                    'function': 'handleRequests',
3937                                    'message': 'Source function must return an object c
3937ontaining ".url" key for group "' + group + '"'
3938                                });
3939                                _debug.print();
3940                            }
3941                            // {/debug}
3942                            return;
3943                        }
3944                    }
3945
3946                    var _request,
3947                        _isExtended = false; // Prevent the main request from being changed
3948
3949                    if (~xhrObject.request.url.indexOf('{{query}}')) {
3950                        if (!_isExtended) {
3951                            xhrObject = $.extend(true, {}, xhrObject);
3952                            _isExtended = true;
3953                        }
3954                        xhrObject.request.url = xhrObject.request.url.replace('{{query}}', scope.query);
3955                    }
3956
3957                    if (xhrObject.request.data) {
3958                        for (var i in xhrObject.request.data) {
3959                            if (!xhrObject.request.data.hasOwnProperty(i)) continue;
3960                            if (~String(xhrObject.request.data[i]).indexOf('{{query}}')) {
3961                                if (!_isExtended) {
3962                                    xhrObject = $.extend(true, {}, xhrObject);
3963                                    _isExtended = true;
3964                                }
3965                                xhrObject.request.data[i] = xhrObject.request.data[i].replace('{{query}}', scope.query);
3966                                break;
3967                            }
3968                        }
3969                    }
3970
3971                    $.ajax(xhrObject.request).done(function (data, textStatus, jqXHR) {
3972
3973                        var tmpData;
3974                        for (var i = 0, ii = xhrObject.validForGroup.length; i < ii; i++) {
3975
3976                            _request = scope.requests[xhrObject.validForGroup[i]];
3977
3978                            if (_request.callback.done instanceof Function) {
3979
3980                                tmpData = _request.callback.done(data, textStatus, jqXHR);
3981                                data = Array.isArray(tmpData) && tmpData || data;
3982
3983                                // {debug}
3984                                if (!Array.isArray(tmpData)) {
3985                                    if (scope.options.debug) {
3986                                        _debug.log({
3987                                            'node': scope.node.selector,
3988                                            'function': 'Ajax.callback.done()',
3989                                            'message': 'Invalid returned data has to be an Array'
3990                                        });
3991                                        _debug.print();
3992                                    }
3993                                }
3994                                // {/debug}
3995                            }
3996
3997                            scope.populateSource(data, _request.extra.group, _request.extra.path || _request.request.path);
3998
3999                            requestsCount -= 1;
4000                            if (requestsCount === 0) {
4001                                scope.helper.executeCallback.call(scope, scope.options.callback.onReceiveRequest, [scope.node, scope.query]);
4002                            }
4003
4004                        }
4005
4006                    }).fail(function (jqXHR, textStatus, errorThrown) {
4007
4008                        for (var i = 0, ii = xhrObject.validForGroup.length; i < ii; i++) {
4009                            _request = scope.requests[xhrObject.validForGroup[i]];
4010                            _request.callback.fail instanceof Function && _request.callback.fail(jqXHR, textStatus, errorThrown);
4011                        }
4012
4013                        // {debug}
4014                        if (scope.options.debug) {
4015                            _debug.log({
4016                                'node': scope.node.selector,
4017                                'function': 'Ajax.callback.fail()',
4018                                'arguments': JSON.stringify(xhrObject.request),
4019                                'message': textStatus
4020                            });
4021
4022                            console.log(errorThrown);
4023
4024                            _debug.print();
4025                        }
4026                        // {/debug}
4027
4028                    }).always(function (data, textStatus, jqXHR) {
4029
4030                        for (var i = 0, ii = xhrObject.validForGroup.length; i < ii; i++) {
4031                            _request = scope.requests[xhrObject.validForGroup[i]];
4032                            _request.callback.always instanceof Function && _request.callback.always(data, textStatus, jqXHR);
4033                        }
4034
4035                    }).then(function (jqXHR, textStatus) {
4036
4037                        for (var i = 0, ii = xhrObject.validForGroup.length; i < ii; i++) {
4038                            _request = scope.requests[xhrObject.validForGroup[i]];
4039                            _request.callback.then instanceof Function && _request.callback.then(jqXHR, textStatus);
4040                        }
4041
4042                    });
4043
4044                }(group, this.requests[group]));
4045
4046            }
4047
4048        },
4049
4050        /**
4051         * Build the source groups to be cycled for matched results
4052         *
4053         * @param {Array} data Array of Strings or Array of Objects
4054         * @param {String} group
4055         * @param {String} [path]
4056         * @return {*}
4057         */
4058        populateSource: function (data, group, path) {
4059
4060            var scope = this,
4061                groupSource = this.options.source[group],
4062                extraData = groupSource.ajax && groupSource.data;
4063
4064            data = typeof path === "string" ? this.helper.namespace(path, data) : data;
4065
4066            if (typeof data === 'undefined') {
4067                // {debug}
4068                if (this.options.debug) {
4069                    _debug.log({
4070                        'node': this.node.selector,
4071                        'function': 'populateSource()',
4072                        'arguments': path,
4073                        'message': 'Invalid data path.'
4074                    });
4075
4076                    _debug.print();
4077                }
4078                // {/debug}
4079            }
4080
4081            if (!Array.isArray(data)) {
4082                // {debug}
4083                if (this.options.debug) {
4084                    _debug.log({
4085                        'node': this.node.selector,
4086                        'function': 'populateSource()',
4087                        'arguments': JSON.stringify({group: group}),
4088                        'message': 'Invalid data type, must be Array type.'
4089                    });
4090                    _debug.print();
4091                }
4092                // {/debug}
4093                data = [];
4094            }
4095
4096            if (extraData) {
4097                if (typeof extraData === "function") {
4098                    extraData = extraData();
4099                }
4100
4101                if (Array.isArray(extraData)) {
4102                    data = data.concat(extraData);
4103                }
4104                // {debug}
4105                else {
4106                    if (this.options.debug) {
4107                        _debug.log({
4108                            'node': this.node.selector,
4109                            'function': 'populateSource()',
4110                            'arguments': JSON.stringify(extraData),
4111                            'message': 'WARNING - this.options.source.' + group + '.data Must be an Array or a function that returns an Array.'
4112                        });
4113
4114                        _debug.print();
4115                    }
4116                }
4117                // {/debug}
4118            }
4119
4120            var tmpObj,
4121                display = groupSource.display ?
4122                    (groupSource.display[0] === 'compiled' ? groupSource.display[1] : groupSource.display[0]) :
4123                    (this.options.display[0] === 'compiled' ? this.options.display[1] : this.options.display[0]);
4124
4125            for (var i = 0, ii = data.length; i < ii; i++) {
4126                if (typeof data[i] === "string") {
4127                    tmpObj = {};
4128                    tmpObj[display] = data[i];
4129                    data[i] = tmpObj;
4130                }
4131                data[i].group = group;
4132            }
4133
4134            if (!this.options.dynamic && this.dropdownFilter.dynamic.length) {
4135
4136                var key,
4137                    value,
4138                    tmpValues = {};
4139
4140                for (var i = 0, ii = data.length; i < ii; i++) {
4141                    for (var k = 0, kk = this.dropdownFilter.dynamic.length; k < kk; k++) {
4142                        key = this.dropdownFilter.dynamic[k].key;
4143
4144                        value = data[i][key];
4145                        if (!value) continue;
4146                        if (!this.dropdownFilter.dynamic[k].value) {
4147                            this.dropdownFilter.dynamic[k].value = [];
4148                        }
4149                        if (!tmpValues[key]) {
4150                            tmpValues[key] = [];
4151                        }
4152                        if (!~tmpValues[key].indexOf(value.toLowerCase())) {
4153                            tmpValues[key].push(value.toLowerCase());
4154                            this.dropdownFilter.dynamic[k].value.push(value);
4155                        }
4156                    }
4157                }
4158            }
4159
4160            if (this.options.correlativeTemplate) {
4161
4162                var template = groupSource.template || this.options.template,
4163                    compiledTemplate = "";
4164
4165                if (typeof template === "function") {
4166                    template = template();
4167                }
4168
4169                if (!template) {
4170                    // {debug}
4171                    if (this.options.debug) {
4172                        _debug.log({
4173                            'node': this.node.selector,
4174                            'function': 'populateSource()',
4175                            'arguments': JSON.stringify(group),
4176                            'message': 'WARNING - this.options.correlativeTemplate is enabled but no template was found.'
4177                        });
4178
4179                        _debug.print();
4180                    }
4181                    // {/debug}
4182                } else {
4183
4184                    // #109 correlativeTemplate can be an array of display keys instead of the complete template
4185                    if (Array.isArray(this.options.correlativeTemplate)) {
4186                        for (var i = 0, ii = this.options.correlativeTemplate.length; i < ii; i++) {
4187                            compiledTemplate += "{{" + this.options.correlativeTemplate[i] + "}} "
4188                        }
4189                    } else {
4190                        compiledTemplate = template
4191                            .replace(/<.+?>/g, '');
4192                    }
4193
4194                    for (var i = 0, ii = data.length; i < ii; i++) {
4195                        data[i]['compiled'] = compiledTemplate.replace(/\{\{([\w\-\.]+)(?:\|(\w+))?}}/g, function (match, index) {
4196                                return scope.helper.namespace(index, data[i], 'get', '');
4197                            }
4198                        ).trim();
4199                    }
4200
4201                    if (groupSource.display) {
4202                        if (!~groupSource.display.indexOf('compiled')) {
4203                            groupSource.display.unshift('compiled');
4204                        }
4205                    } else if (!~this.options.display.indexOf('compiled')) {
4206                        this.options.display.unshift('compiled');
4207                    }
4208
4209                }
4210            }
4211
4212            if (this.options.callback.onPopulateSource) {
4213                data = this.helper.executeCallback.call(this, this.options.callback.onPopulateSource, [this.node, data, group, path]);
4214
4215                // {debug}
4216                if (!data || !Array.isArray(data)) {
4217                    _debug.log({
4218                        'node': this.node.selector,
4219                        'function': 'callback.populateSource()',
4220                        'message': 'callback.onPopulateSource must return the "data" parameter'
4221                    });
4222
4223                    _debug.print();
4224                }
4225                // {/debug}
4226            }
4227
4228            // Save the data inside a tmpSource var to later have the right order once every request are completed
4229            this.tmpSource[group] = data;
4230
4231            if (this.options.cache && !window[this.options.cache].getItem('TYPEAHEAD_' + this.node.selector + ":" + group)) {
4232
4233                if (this.options.callback.onCacheSave) {
4234                    data = this.helper.executeCallback.call(this, this.options.callback.onCacheSave, [this.node, data, group, path]);
4235
4236                    // {debug}
4237                    if (!data || !Array.isArray(data)) {
4238                        _debug.log({
4239                            'node': this.node.selector,
4240                            'function': 'callback.populateSource()',
4241                            'message': 'callback.onCacheSave must return the "data" parameter'
4242                        });
4243
4244                        _debug.print();
4245                    }
4246                    // {/debug}
4247                }
4248
4249                var storage = JSON.stringify({
4250                    data: data,
4251                    ttl: new Date().getTime() + this.options.ttl
4252                });
4253
4254                if (this.options.compression) {
4255                    storage = LZString.compressToUTF16(storage);
4256                }
4257
4258                window[this.options.cache].setItem(
4259                    'TYPEAHEAD_' + this.node.selector + ":" + group,
4260                    storage
4261                );
4262            }
4263
4264            this.incrementGeneratedGroup();
4265
4266        },
4267
4268        incrementGeneratedGroup: function () {
4269
4270            this.generatedGroupCount++;
4271
4272            if (this.groupCount !== this.generatedGroupCount) {
4273                return;
4274            }
4275
4276            this.isGenerated = true;
4277
4278            this.xhr = {};
4279
4280            var sourceKeys = Object.keys(this.options.source);
4281
4282            for (var i = 0, ii = sourceKeys.length; i < ii; i++) {
4283                this.source[sourceKeys[i]] = this.tmpSource[sourceKeys[i]];
4284            }
4285
4286            this.tmpSource = {};
4287
4288            if (!this.options.dynamic) {
4289                this.buildDropdownItemLayout('dynamic');
4290            }
4291
4292            this.options.loadingAnimation && this.container.removeClass('loading');
4293
4294            this.node.trigger('dynamic' + this.namespace);
4295
4296        },
4297
4298        /**
4299         * Key Navigation
4300         * tab 9: @TODO, what should tab do?
4301         * Up 38: select previous item, skip "group" item
4302         * Down 40: select next item, skip "group" item
4303         * Right 39: change charAt, if last char fill hint (if options is true)
4304         * Esc 27: clears input (is not empty) / blur (if empty)
4305         * Enter 13: Select item + submit search
4306         *
4307         * @param {Object} e Event object
4308         * @returns {*}
4309         */
4310        navigate: function (e) {
4311
4312            this.helper.executeCallback.call(this, this.options.callback.onNavigateBefore, [this.node, this.query, e]);
4313
4314            if (e.keyCode === 27) {
4315                // #166 Different browsers do not have the same behaviors by default, lets enforce what we want instead
4316                e.preventDefault();
4317                if (this.query.length) {
4318                    this.node.val('')
4319                    this.node.trigger('input' + this.namespace);
4320                } else {
4321                    this.node.blur();
4322                    this.hideLayout();
4323                }
4324                return;
4325            }
4326
4327            if (!this.isGenerated || !this.result.length) return;
4328
4329            var itemList = this.resultContainer.find('.' + this.options.selector.item),
4330                activeItem = itemList.filter('.active'),
4331                activeItemIndex = activeItem[0] && itemList.index(activeItem) || null,
4332                newActiveItemIndex = null;
4333
4334            if (e.keyCode === 13) {
4335                if (activeItem.length > 0) {
4336                    // Prevent form submit if an element is selected
4337                    e.preventDefault();
4338                    activeItem.find('a:first')[0].click();
4339                }
4340                return;
4341            }
4342
4343            if (e.keyCode === 39) {
4344                if (activeItemIndex) {
4345                    itemList.eq(activeItemIndex).find('a:first')[0].click();
4346                } else if (this.options.hint &&
4347                    this.hint.container.val() !== "" &&
4348                    this.helper.getCaret(this.node[0]) >= this.query.length) {
4349
4350                    itemList.find('a[data-index="' + this.hintIndex + '"]')[0].click();
4351
4352                }
4353                return;
4354            }
4355
4356            if (itemList.length > 0) {
4357                activeItem.removeClass('active');
4358            }
4359
4360            if (e.keyCode === 38) {
4361
4362                e.preventDefault();
4363
4364                if (activeItem.length > 0) {
4365                    if (activeItemIndex - 1 >= 0) {
4366                        newActiveItemIndex = activeItemIndex - 1;
4367                        itemList.eq(newActiveItemIndex).addClass('active');
4368                    }
4369                } else {
4370                    newActiveItemIndex = itemList.length - 1;
4371                    itemList.last().addClass('active');
4372                }
4373
4374            } else if (e.keyCode === 40) {
4375
4376                e.preventDefault();
4377
4378                if (activeItem.length > 0) {
4379                    if (activeItemIndex + 1 < itemList.length) {
4380                        newActiveItemIndex = activeItemIndex + 1;
4381                        itemList.eq(newActiveItemIndex).addClass('active');
4382                    }
4383                } else {
4384                    newActiveItemIndex = 0;
4385                    itemList.first().addClass('active');
4386                }
4387            }
4388
4389            // #115 Prevent the input from changing when navigating (arrow up / down) the results
4390            if (e.preventInputChange && ~[38, 40].indexOf(e.keyCode)) {
4391                this.buildHintLayout(
4392                    newActiveItemIndex !== null && newActiveItemIndex < this.result.length ?
4393                        [this.result[newActiveItemIndex]] :
4394                        null
4395                )
4396            }
4397
4398            if (this.options.hint && this.hint.container) {
4399                this.hint.container.css(
4400                    'color',
4401                    e.preventInputChange ?
4402                        this.hint.css.color :
4403                    newActiveItemIndex === null && this.hint.css.color || this.hint.container.css('background-color') || 'fff'
4404                )
4405            }
4406
4407            this.node.val(
4408                newActiveItemIndex !== null && !e.preventInputChange ?
4409                    this.result[newActiveItemIndex][this.result[newActiveItemIndex].matchedKey] :
4410                    this.rawQuery
4411            );
4412
4413            this.helper.executeCallback.call(this, this.options.callback.onNavigateAfter, [
4414              
4414  this.node,
4415                itemList,
4416                newActiveItemIndex !== null && itemList.eq(newActiveItemIndex).find('a:first') || undefined,
4417                newActiveItemIndex !== null && this.result[newActiveItemIndex] || undefined,
4418                this.query,
4419                e
4420            ]);
4421
4422        },
4423
4424        searchResult: function (preserveItem) {
4425
4426            // #54 In case the item is being clicked, we want to preserve it for onSubmit callback
4427            if (!preserveItem) {
4428                this.item = {};
4429            }
4430
4431            this.resetLayout();
4432
4433            if (this.helper.executeCallback.call(this, this.options.callback.onSearch, [this.node, this.query]) === false) return;
4434
4435            if (this.query.length >= this.options.minLength) {
4436                this.searchResultData();
4437            }
4438
4439            this.helper.executeCallback.call(this, this.options.callback.onResult, [this.node, this.query, this.result, this.resultCount, this.resultCountPerGroup]);
4440
4441        },
4442
4443        searchResultData: function () {
4444
4445            var scope = this,
4446                group,
4447                groupBy = this.groupBy,
4448                groupReference = null,
4449                item,
4450                match,
4451                comparedDisplay,
4452                comparedQuery = this.query.toLowerCase(),
4453                maxItemPerGroup = this.options.maxItemPerGroup,
4454                hasDynamicFilters = this.filters.dynamic && !this.helper.isEmpty(this.filters.dynamic),
4455                displayKeys,
4456                displayValue,
4457                missingDisplayKey = {},
4458                groupFilter,
4459                groupFilterResult,
4460                groupMatcher,
4461                groupMatcherResult,
4462                matcher = typeof this.options.matcher === "function" && this.options.matcher,
4463                correlativeMatch,
4464                correlativeQuery,
4465                correlativeDisplay;
4466
4467            if (this.options.accent) {
4468                comparedQuery = this.helper.removeAccent.call(this, comparedQuery);
4469            }
4470            for (group in this.source) {
4471                if (!this.source.hasOwnProperty(group)) continue;
4472                // dropdownFilter by source groups
4473                if (this.filters.dropdown && this.filters.dropdown.key === "group" && this.filters.dropdown.value !== group) continue;
4474
4475                groupFilter = typeof this.options.source[group].filter !== "undefined" ? this.options.source[group].filter : this.options.filter;
4476                groupMatcher = typeof this.options.source[group].matcher === "function" && this.options.source[group].matcher || matcher;
4477
4478                for (var k = 0, kk = this.source[group].length; k < kk; k++) {
4479                    if (this.result.length >= this.options.maxItem && !this.options.callback.onResult) break;
4480                    if (hasDynamicFilters && !this.dynamicFilter.validate.apply(this, [this.source[group][k]])) continue;
4481
4482                    item = this.source[group][k];
4483
4484                    // dropdownFilter by custom groups
4485                    if (this.filters.dropdown && (item[this.filters.dropdown.key] || "").toLowerCase() !== (this.filters.dropdown.value || "").toLowerCase()) continue;
4486
4487                    groupReference = groupBy === "group" ? group : item[groupBy];
4488
4489                    if (groupReference && !this.result[groupReference]) {
4490                        this.result[groupReference] = [];
4491                        this.resultCountPerGroup[groupReference] = 0;
4492                    }
4493
4494                    if (maxItemPerGroup) {
4495                        if (groupBy === "group" && this.result[groupReference].length >= maxItemPerGroup && !this.options.callback.onResult) {
4496                            break;
4497                        }
4498                    }
4499
4500                    displayKeys = this.options.source[group].display || this.options.display;
4501
4502                    for (var i = 0, ii = displayKeys.length; i < ii; i++) {
4503
4504                        // #183 Allow searching for deep source object keys
4505                        displayValue = /\./.test(displayKeys[i]) ?
4506                            this.helper.namespace(displayKeys[i], item) :
4507                            item[displayKeys[i]];
4508
4509                        // #182 Continue looping if empty or undefined key
4510                        if (typeof displayValue === 'undefined' || displayValue === '') {
4511                            // {debug}
4512                            if (this.options.debug) {
4513                                missingDisplayKey[i] = {
4514                                    display: displayKeys[i],
4515                                    data: item
4516                                };
4517                            }
4518                            // {/debug}
4519                            continue;
4520                        }
4521
4522                        displayValue = this.helper.cleanStringFromScript(displayValue);
4523
4524                        if (typeof groupFilter === "function") {
4525                            groupFilterResult = groupFilter.call(this, item, displayValue);
4526
4527                            // return undefined to skip to next item
4528                            // return false to attempt the matching function on the next displayKey
4529                            // return true to add the item to the result list
4530                            // return item object to modify the item and add it to the result list
4531
4532                            if (groupFilterResult === undefined) break;
4533                            if (!groupFilterResult) continue;
4534                            if (typeof groupFilterResult === "object") {
4535                                item = groupFilterResult;
4536                            }
4537                        }
4538
4539                        if (~[undefined, true].indexOf(groupFilter)) {
4540                            //comparedDisplay = displayValue;
4541                           comparedDisplay = (displayValue ? displayValue : "");
4542                            comparedDisplay = comparedDisplay.toString().toLowerCase();
4543
4544                            if (this.options.accent) {
4545                                comparedDisplay = this.helper.removeAccent.call(this, comparedDisplay);
4546                            }
4547
4548                            match = comparedDisplay.indexOf(comparedQuery);
4549
4550                            if (this.options.correlativeTemplate && displayKeys[i] === 'compiled' && match < 0 && /\s/.test(comparedQuery)) {
4551                                correlativeMatch = true;
4552                                correlativeQuery = comparedQuery.split(' ');
4553                                correlativeDisplay = comparedDisplay;
4554                                for (var x = 0, xx = correlativeQuery.length; x < xx; x++) {
4555                                    if (correlativeQuery[x] === "") continue;
4556                                    if (!~correlativeDisplay.indexOf(correlativeQuery[x])) {
4557                                        correlativeMatch = false;
4558                                        break;
4559                                    }
4560                                    correlativeDisplay = correlativeDisplay.replace(correlativeQuery[x], '');
4561                                }
4562                            }
4563
4564                            if (match < 0 && !correlativeMatch) continue;
4565                            // @TODO Deprecate these? use matcher instead?
4566                            if (this.options.offset && match !== 0) continue;
4567
4568                            if (groupMatcher) {
4569                                groupMatcherResult = groupMatcher.call(this, item, displayValue);
4570
4571                                // return undefined to skip to next item
4572                                // return false to attempt the matching function on the next displayKey
4573                                // return true to add the item to the result list
4574                                // return item object to modify the item and add it to the result list
4575
4576                                if (groupMatcherResult === undefined) break;
4577                                if (!groupMatcherResult) continue;
4578                                if (typeof groupMatcherResult === "object") {
4579                                    item = groupMatcherResult;
4580                                }
4581                            }
4582                        }
4583
4584                        this.resultCount++;
4585                        this.resultCountPerGroup[groupReference]++;
4586
4587                        if (this.resultItemCount < this.options.maxItem) {
4588                            if (maxItemPerGroup && this.result[groupReference].length >= maxItemPerGroup) {
4589                                break;
4590                            }
4591
4592                            item.matchedKey = displayKeys[i];
4593
4594                            this.result[groupReference].push(item);
4595                            this.resultItemCount++;
4596                        }
4597                        break;
4598                    }
4599
4600                    if (!this.options.callback.onResult) {
4601                        if (this.resultItemCount >= this.options.maxItem) {
4602                            break;
4603                        }
4604                        if (maxItemPerGroup && this.result[groupReference].length >= maxItemPerGroup) {
4605                            if (groupBy === "group") {
4606                                break;
4607                            }
4608                        }
4609                    }
4610                }
4611            }
4612
4613            // {debug}
4614            if (this.options.debug) {
4615                if (!this.helper.isEmpty(missingDisplayKey)) {
4616                    _debug.log({
4617                        'node': this.node.selector,
4618                        'function': 'searchResult()',
4619                        'arguments': JSON.stringify(missingDisplayKey),
4620                        'message': 'Missing keys for display, make sure options.display is set properly.'
4621                    });
4622
4623                    _debug.print();
4624                }
4625            }
4626            // {/debug}
4627
4628            if (this.options.order) {
4629
4630                var displayKeys = [],
4631                    displayKey;
4632
4633                for (var group in this.result) {
4634                    if (!this.result.hasOwnProperty(group)) continue;
4635                    for (var i = 0, ii = this.result[group].length; i < ii; i++) {
4636                        displayKey = this.options.source[this.result[group][i].group].display || this.options.display;
4637                        if (!~displayKeys.indexOf(displayKey[0])) {
4638                            displayKeys.push(displayKey[0]);
4639                        }
4640                    }
4641                    this.result[group].sort(
4642                        scope.helper.sort(
4643                            displayKeys,
4644                            scope.options.order === "asc",
4645                            function (a) {
4646                                //return a.toString().toUpperCase();
4647                                return (a ? a : "").toString().toUpperCase();
4648                            }
4649                        )
4650                    );
4651                }
4652
4653            }
4654
4655            var concatResults = [],
4656                groupOrder;
4657
4658            if (typeof this.options.groupOrder === "function") {
4659                groupOrder = this.options.groupOrder.apply(this, [this.node, this.query, this.result, this.resultCount, this.resultCountPerGroup]);
4660            } else if (Array.isArray(this.options.groupOrder)) {
4661                groupOrder = this.options.groupOrder;
4662            } else if (typeof this.options.groupOrder === "string" && ~["asc", "desc"].indexOf(this.options.groupOrder)) {
4663                groupOrder = Object.keys(this.result).sort(
4664                    scope.helper.sort(
4665                        [],
4666                        scope.options.groupOrder === "asc",
4667                        function (a) {
4668                            return a.toString().toUpperCase()
4669                        }
4670                    )
4671                );
4672            } else {
4673                groupOrder = Object.keys(this.result);
4674            }
4675
4676            this.groups = groupOrder;
4677
4678            for (var i = 0, ii = groupOrder.length; i < ii; i++) {
4679                concatResults = concatResults.concat(this.result[groupOrder[i]] || []);
4680            }
4681
4682            this.result = concatResults;
4683
4684        },
4685
4686        buildLayout: function () {
4687
4688            this.buildHtmlLayout();
4689
4690            this.buildBackdropLayout();
4691
4692            this.buildHintLayout();
4693
4694            if (this.options.callback.onLayoutBuiltBefore) {
4695                var tmpResultHtml = this.helper.executeCallback.call(this, this.options.callback.onLayoutBuiltBefore, [this.node, this.query, this.result, this.resultHtml]);
4696
4697                if (tmpResultHtml instanceof $) {
4698                    this.resultHtml = tmpResultHtml;
4699                }
4700                // {debug}
4701                else {
4702                    if (this.options.debug) {
4703                        _debug.log({
4704                            'node': this.node.selector,
4705                            'function': 'callback.onLayoutBuiltBefore()',
4706                            'message': 'Invalid returned value - You must return resultHtmlList jQuery Object'
4707                        });
4708
4709                        _debug.print();
4710                    }
4711                }
4712                // {/debug}
4713            }
4714
4715            this.resultHtml && this.resultContainer.html(this.resultHtml);
4716
4717            if (this.options.callback.onLayoutBuiltAfter) {
4718                this.helper.executeCallback.call(this, this.options.callback.onLayoutBuiltAfter, [this.node, this.query, this.result]);
4719            }
4720        },
4721
4722        buildHtmlLayout: function () {
4723            // #150 Add the option to have no resultList but still perform the search and trigger the callbacks
4724            if (this.options.resultContainer === false) return;
4725
4726            if (!this.resultContainer) {
4727                this.resultContainer = $("<div/>", {
4728                    "class": this.options.selector.result
4729                });
4730
4731                this.container.append(this.resultContainer);
4732            }
4733
4734            var emptyTemplate;
4735            if (!this.result.length) {
4736                if (this.options.emptyTemplate) {
4737                    emptyTemplate = typeof this.options.emptyTemplate === "function" ?
4738                        this.options.emptyTemplate.call(this, this.query) :
4739                        this.options.emptyTemplate.replace(/\{\{query}}/gi, this.helper.cleanStringFromScript(this.query));
4740
4741                } else {
4742                    return;
4743                }
4744            }
4745
4746            var _query = this.query.toLowerCase();
4747            if (this.options.accent) {
4748                _query = this.helper.removeAccent.call(this, _query
4748);
4749            }
4750
4751            var scope = this,
4752                groupTemplate = this.groupTemplate || '<ul></ul>',
4753                hasEmptyTemplate = false;
4754
4755            if (this.groupTemplate) {
4756                groupTemplate = $(groupTemplate.replace(/<([^>]+)>\{\{(.+?)}}<\/[^>]+>/g, function (match, tag, group, offset, string) {
4757                    var template = '',
4758                        groups = group === "group" ? scope.groups : [group];
4759
4760                    if (!scope.result.length) {
4761                        if (hasEmptyTemplate === true) return '';
4762                        hasEmptyTemplate = true;
4763
4764                        return '<' + tag + ' class="' + scope.options.selector.empty + '"><a href="javascript:;">' + emptyTemplate + '</a></' + tag + '>';
4765                    }
4766
4767                    for (var i = 0, ii = groups.length; i < ii; ++i) {
4768                        template += '<' + tag + ' data-group-template="' + groups[i] + '"><ul></ul></' + tag + '>';
4769                    }
4770
4771                    return template;
4772                }));
4773            } else {
4774                groupTemplate = $(groupTemplate);
4775                if (!this.result.length) {
4776                    groupTemplate.append(
4777                        emptyTemplate instanceof $ ?
4778                            emptyTemplate :
4779                        '<li class="' + scope.options.selector.empty + '"><a href="javascript:;">' + emptyTemplate + '</a></li>'
4780                    );
4781                }
4782            }
4783
4784            groupTemplate.addClass(this.options.selector.list + (this.helper.isEmpty(this.result) ? ' empty' : ''));
4785
4786            var _group,
4787                _groupTemplate,
4788                _item,
4789                _href,
4790                _liHtml,
4791                _template,
4792                _aHtml,
4793                _display,
4794                _displayKeys,
4795                _displayValue,
4796                _unusedGroups = this.groupTemplate && this.result.length && scope.groups || [],
4797                _tmpIndexOf;
4798
4799            for (var i = 0, ii = this.result.length; i < ii; ++i) {
4800
4801                _item = this.result[i];
4802                _group = _item['group'];
4803                _href = this.options.source[_item.group].href || this.options.href;
4804                _display = [];
4805                _displayKeys = this.options.source[_item.group].display || this.options.display;
4806
4807                if (this.options.group) {
4808                    _group = _item[this.options.group.key];
4809                    if (this.options.group.template) {
4810                        if (typeof this.options.group.template === "function") {
4811                            _groupTemplate = this.options.group.template(_item);
4812                        } else if (typeof this.options.template === "string") {
4813                            _groupTemplate = this.options.group.template.replace(/\{\{([\w\-\.]+)}}/gi, function (match, index) {
4814                                return scope.helper.namespace(index, _item, 'get', '');
4815                            });
4816                        }
4817                    }
4818
4819                    if (!groupTemplate.find('[data-search-group="' + _group + '"]')[0]) {
4820                        (this.groupTemplate ? groupTemplate.find('[data-group-template="' + _group + '"] ul') : groupTemplate).append(
4821                            $("<li/>", {
4822                                "class": scope.options.selector.group,
4823                                "html": $("<a/>", {
4824                                    "href": "javascript:;",
4825                                    "html": _groupTemplate || _group,
4826                                    "tabindex": -1
4827                                }),
4828                                "data-search-group": _group
4829                            })
4830                        );
4831                    }
4832                }
4833
4834                if (this.groupTemplate && _unusedGroups.length) {
4835                    _tmpIndexOf = _unusedGroups.indexOf(_group || _item.group)
4836                    if (~_tmpIndexOf) {
4837                        _unusedGroups.splice(_tmpIndexOf, 1)
4838                    }
4839                }
4840
4841                _liHtml = $("<li/>", {
4842                    "class": scope.options.selector.item,
4843                    "html": $("<a/>", {
4844                        // #190 Strange JS-code fragment in href attribute using jQuery version below 1.10
4845                        "href": (function () {
4846                            if (_href) {
4847                                if (typeof _href === "string") {
4848                                    _href = _href.replace(/\{\{([^\|}]+)(?:\|([^}]+))*}}/gi, function (match, index, options) {
4849
4850                                        var value = scope.helper.namespace(index, _item, 'get', '');
4851
4852                                        // #151 Slugify should be an option, not enforced
4853                                        options = options && options.split("|") || [];
4854                                        if (~options.indexOf('slugify')) {
4855                                            value = scope.helper.slugify.call(scope, value);
4856                                        }
4857
4858                                        return value;
4859                                    });
4860                                } else if (typeof _href === "function") {
4861                                    _href = _href(_item);
4862                                }
4863                                _item.href = _href;
4864                            }
4865                            return _href || "javascript:;";
4866                        }()),
4867                        "data-group": _group,
4868                        "data-index": i,
4869                        "html": function () {
4870
4871                            _template = (_item.group && scope.options.source[_item.group].template) || scope.options.template;
4872
4873                            if (_template) {
4874                                if (typeof _template === "function") {
4875                                    _template = _template.call(scope, scope.query, _item);
4876                                }
4877
4878                                _aHtml = _template.replace(/\{\{([^\|}]+)(?:\|([^}]+))*}}/gi, function (match, index, options) {
4879
4880                                    var value = scope.helper.cleanStringFromScript(String(scope.helper.namespace(index, _item, 'get', '')));
4881
4882                                    // #151 Slugify should be an option, not enforced
4883                                    options = options && options.split("|") || [];
4884                                    if (~options.indexOf('slugify')) {
4885                                        value = scope.helper.slugify.call(scope, value);
4886                                    }
4887
4888                                    if (!~options.indexOf('raw')) {
4889                                        if (scope.options.highlight === true && _query && ~_displayKeys.indexOf(index)) {
4890                                            value = scope.helper.highlight.call(scope, value, _query.split(" "), scope.options.accent)
4891                                        }
4892                                    }
4893                                    return value;
4894                                });
4895                            } else {
4896                                for (var i = 0, ii = _displayKeys.length; i < ii; i++) {
4897                                    _displayValue = /\./.test(_dis
4897playKeys[i]) ?
4898                                        scope.helper.namespace(_displayKeys[i], _item) :
4899                                        _item[_displayKeys[i]];
4900
4901                                    if (typeof _displayValue === 'undefined' || _displayValue === '') continue;
4902
4903                                    _display.push(_displayValue);
4904                                }
4905
4906                                _aHtml = '<span class="' + scope.options.selector.display + '">' + scope.helper.cleanStringFromScript(String(_display.join(" "))) + '</span>';
4907                            }
4908
4909                            if ((scope.options.highlight === true && _query && !_template) || scope.options.highlight === "any") {
4910                                _aHtml = scope.helper.highlight.call(scope, _aHtml, _query.split(" "), scope.options.accent)
4911                            }
4912
4913                            $(this).append(_aHtml);
4914
4915                        }
4916                    })
4917                });
4918
4919                (function (i, item, liHtml) {
4920                    liHtml.on('click', function (e) {
4921                        if (scope.options.mustSelectItem && scope.helper.isEmpty(item)) {
4922                            e.preventDefault();
4923                            return;
4924                        }
4925
4926                        scope.item = item;
4927
4928                        if (scope.helper.executeCallback.call(scope, scope.options.callback.onClickBefore, [scope.node, $(this), item, e]) === false) return;
4929                        if ((e.originalEvent && e.originalEvent.defaultPrevented) || e.isDefaultPrevented()) {
4930                            return;
4931                        }
4932
4933                        scope.query = scope.rawQuery = item[item.matchedKey].toString();
4934
4935                        scope.focusOnly = true;
4936                        scope.node.val(scope.query).focus();
4937
4938                        scope.searchResult(true);
4939                        scope.buildLayout();
4940                        scope.hideLayout();
4941
4942                        scope.helper.executeCallback.call(scope, scope.options.callback.onClickAfter, [scope.node, $(this), item, e]);
4943                    });
4944                    liHtml.on('mouseenter', function (e) {
4945                        scope.helper.executeCallback.call(scope, scope.options.callback.onMouseEnter, [scope.node, $(this), item, e]);
4946                    });
4947                    liHtml.on('mouseleave', function (e) {
4948                        scope.helper.executeCallback.call(scope, scope.options.callback.onMouseLeave, [scope.node, $(this), item, e]);
4949                    });
4950                }(i, _item, _liHtml));
4951
4952                (this.groupTemplate ? groupTemplate.find('[data-group-template="' + _group + '"] ul') : groupTemplate).append(_liHtml);
4953            }
4954
4955            if (this.result.length && _unusedGroups.length) {
4956                for (var i = 0, ii = _unusedGroups.length; i < ii; ++i) {
4957                    groupTemplate.find('[data-group-template="' + _unusedGroups[i] + '"]').remove();
4958                }
4959            }
4960
4961            this.resultHtml = groupTemplate;
4962
4963        },
4964
4965        buildBackdropLayout: function () {
4966
4967            if (!this.options.backdrop) return;
4968
4969            if (!this.backdrop.container) {
4970                this.backdrop.css = $.extend(
4971                    {
4972                        "opacity": 0.6,
4973                        "filter": 'alpha(opacity=60)',
4974                        "position": 'fixed',
4975                        "top": 0,
4976                        "right": 0,
4977                        "bottom": 0,
4978                        "left": 0,
4979                        "z-index": 1040,
4980                        "background-color": "#000"
4981                    },
4982                    this.options.backdrop
4983                );
4984
4985                this.backdrop.container = $("<div/>", {
4986                    "class": this.options.selector.backdrop,
4987                    "css": this.backdrop.css
4988                }).insertAfter(this.container);
4989
4990            }
4991            this.container
4992                .addClass('backdrop')
4993                .css({
4994                    "z-index": this.backdrop.css["z-index"] + 1,
4995                    "position": "relative"
4996                });
4997
4998        },
4999
5000        buildHintLayout: function (result) {
5001            if (!this.options.hint) return;
5002            // #144 hint doesn't overlap with the input when the query is too long
5003            if (this.node[0].scrollWidth > Math.ceil(this.node.innerWidth())) {
5004                this.hint.container && this.hint.container.val("");
5005                return;
5006            }
5007
5008            var scope = this,
5009                hint = "",
5010                result = result || this.result,
5011                query = this.query.toLowerCase();
5012
5013            if (this.options.accent) {
5014                query = this.helper.removeAccent.call(this, query);
5015            }
5016
5017            this.hintIndex = null;
5018
5019            if (this.query.length >= this.options.minLength) {
5020
5021                if (!this.hint.container) {
5022
5023                    this.hint.css = $.extend({
5024                            "border-color": "transparent",
5025                            "position": "absolute",
5026                            "top": 0,
5027                            "display": "inline",
5028                            "z-index": -1,
5029                            "float": "none",
5030                            "color": "silver",
5031                            "box-shadow": "none",
5032                            "cursor": "default",
5033                            "-webkit-user-select": "none",
5034                            "-moz-user-select": "none",
5035                            "-ms-user-select": "none",
5036                            "user-select": "none"
5037                        },
5038                        this.options.hint
5039                    );
5040
5041                    this.hint.container = $('<input/>', {
5042                        'type': this.node.attr('type'),
5043                        'class': this.node.attr('class'),
5044                        'readonly': true,
5045                        'unselectable': 'on',
5046                        'aria-hidden': 'true',
5047                        'tabindex': -1,
5048                        'click': function () {
5049                            // IE8 Fix
5050                            scope.node.focus();
5051                        }
5052                    }).addClass(this.options.selector.hint)
5053                        .css(this.hint.css)
5054                        .insertAfter(this.node)
5055
5056                    this.node.parent().css({
5057                        "position": "relative"
5058                    });
5059                }
5060
5061                this.hint.container.css('color', this.hint.css.color)
5062
5063                // Do not display hint for empty query
5064                if (query) {
5065                    var _displayKeys,
5066                        _group,
5067                        _comparedValue;
5068
5069                    for (var i = 0, ii = result.length; i < ii; i++) {
5070
5071                        _group = result[i].group;
5072                        _displayKeys = this.options.source[_group].display || this.options.display;
5073
5074                        for (var k = 0, kk = _displayKeys.length; k < kk; k++) {
5075
5076                            _comparedValue = String(result[i][_displayKeys[k]]).toLowerCase();
5077                            if (this.options.accent) {
5078                                _comparedValue = this.helper.removeAccent.call(this, _comparedValue);
5079                            }
5080
5081                            if (_comparedValue.indexOf(query) === 0) {
5082                                hint = String(result[i][_displayKeys[k]]);
5083                                this.hintIndex = i;
5084                                break;
5085                            }
5086                        }
5087                        if (this.hintIndex !== null) {
5088                            break;
5089                        }
5090                    }
5091                }
5092
5093                this.hint.container
5094                    .val(hint.length > 0 && this.rawQuery + hint.substring(this.query.length) || "");
5095
5096            }
5097
5098        },
5099
5100        buildDropdownLayout: function () {
5101
5102            if (!this.options.dropdownFilter) {
5103                return;
5104            }
5105
5106            var scope = this;
5107
5108            $('<span/>', {
5109                "class": this.options.selector.filter,
5110                "html": function () {
5111
5112                    $(this).append(
5113                        $('<button/>', {
5114                            "type": "button",
5115                            "class": scope.options.selector.filterButton,
5116                            "style": "display: none;",
5117                            "click": function (e) {
5118                                e.stopPropagation();
5119                                scope.container.toggleClass('filter');
5120
5121                                var _ns = scope.namespace + '-dropdown-filter';
5122
5123                                $('html').off(_ns);
5124
5125                                if (scope.container.hasClass('filter')) {
5126                                    $('html').on("click" + _ns + " touchend" + _ns, function (e) {
5127                                        if ($(e.target).closest('.' + scope.options.selector.filter)[0] || scope.hasDragged) return;
5128                                        scope.container.removeClass('filter');
5129                                    });
5130                                }
5131                            }
5132                        })
5133                    );
5134
5135                    $(this).append(
5136                        $('<ul/>', {
5137                            "class": scope.options.selector.dropdown
5138                        })
5139                    );
5140                }
5141            }).insertAfter(scope.container.find('.' + scope.options.selector.query));
5142
5143        },
5144
5145        buildDropdownItemLayout: function (type) {
5146
5147            var scope = this,
5148                template,
5149                all = typeof this.options.dropdownFilter === 'string' && this.options.dropdownFilter || 'All',
5150                ulScope = this.container.find('.' + this.options.selector.dropdown),
5151                filter;
5152
5153            // Use regular groups defined in options.source
5154            if (type === 'static' && this.options.dropdownFilter === true || typeof this.options.dropdownFilter === 'string') {
5155                this.dropdownFilter.static.push({
5156                    key: 'group',
5157                    template: '{{group}}',
5158                    all: all,
5159                    value: Object.keys(this.options.source)
5160                });
5161            }
5162
5163            for (var i = 0, ii = this.dropdownFilter[type].length; i < ii; i++) {
5164
5165                filter = this.dropdownFilter[type][i];
5166
5167                if (!Array.isArray(filter.value)) {
5168                    filter.value = [filter.value];
5169                }
5170
5171                if (filter.all) {
5172                    this.dropdownFilterAll = filter.all;
5173                }
5174
5175                for (var k = 0, kk = filter.value.length; k <= kk; k++) {
5176
5177                    // Only add "all" at the last filter iteration
5178                    if (k === kk && (i !== ii - 1)) {
5179                        continue;
5180                    } else if (k === kk && (i === ii - 1)) {
5181                        if (type === 'static' && this.dropdownFilter['dynamic'].length) {
5182                            continue;
5183                        }
5184                    }
5185
5186                    template = this.dropdownFilterAll || all;
5187                    if (filter.value[k]) {
5188                        if (filter.template) {
5189                            template = filter.template.replace(new RegExp('\{\{' + filter.key + '}}', 'gi'), filter.value[k])
5190                        } else {
5191                            template = filter.value[k]
5192                        }
5193                    } else {
5194                        this.container.find('.' + scope.options.selector.filterButton).html(template)
5195                    }
5196
5197                    (function (k, filter, template) {
5198
5199                        ulScope.append(
5200                            $("<li/>", {
5201                                "class": scope.options.selector.dropdownItem + ' ' + scope.helper.slugify.call(scope, filter.key + '-' + (filter.value[k] || all)),
5202                                "html": $("<a/>", {
5203                                    "href": "javascript:;",
5204                                    "html": template,
5205                                    "click": function (e) {
5206                                        e.preventDefault();
5207                                        _selectFilter.call(scope, {
5208                                            key: filter.key,
5209                                            value: filter.value[k] || '*',
5210                                            template: template
5211                                        });
5212                                    }
5213                                })
5214                            })
5215                        );
5216
5217                    }(k, filter, template));
5218                }
5219            }
5220
5221            if (this.dropdownFilter[type].length) {
5222                this.container.find('.' + scope.options.selector.filterButton).removeAttr('style');
5223            }
5224
5225            /**
5226             * @private
5227             * Select the filter and rebuild the result group
5228             *
5229             * @param {object} item
5230             */
5231            function _selectFilter(item) {
5232                if (item.value === "*") {
5233                    delete this.filters.dropdown;
5234                } else {
5235                    this.filters.dropdown = item;
5236                }
5237
5238                this.container
5239                    .removeClass('filter')
5240                    .find('.' + this.options.selector.filterButton)
5241                    .html(item.template);
5242
5243                this.node.trigger('dynamic' + this.namespace);
5244
5245                this.node.focus();
5246            }
5247        },
5248
5249        dynamicFilter: {
5250            isEnabled: false,
5251            init: function () {
5252
5253                if (!this.options.dynamicFilter) return;
5254
5255                this.dynamicFilter.bind.call(this);
5256                this.dynamicFilter.isEnabled = true;
5257
5258            },
5259
5260            validate: function (item) {
5261
5262                var isValid,
5263                    softValid = null,
5264                    hardValid = null,
5265                    itemValue;
5266
5267                for (var key in this.filters.dynamic) {
5268                    if (!this.filters.dynamic.hasOwnProperty(key)) continue;
5269                    if (!!~key.indexOf('.')) {
5270                        itemValue = this.helper.namespace(key, item, 'get');
5271                    } else {
5272                        itemValue = item[key];
5273                    }
5274
5275                    if (this.filters.dynamic[key].modifier === '|' && !softValid) {
5276                        softValid = itemValue == this.filters.dynamic[key].value || false;
5277                    }
5278
5279                    if (this.filters.dynamic[key].modifier === '&') {
5280                        // Leaving "==" in case of comparing number with string
5281                        if (itemValue == this.filters.dynamic[key].value) {
5282                            hardValid = true;
5283                        } else {
5284                            hardValid = false;
5285                            break;
5286                        }
5287                    }
5288                }
5289
5290                isValid = softValid;
5291                if (hardValid !== null) {
5292                    isValid = hardValid;
5293                    if (hardValid === true && softValid !== null) {
5294                        isValid = softValid;
5295                    }
5296                }
5297
5298                return !!isValid;
5299
5300            },
5301
5302            set: function (key, value) {
5303
5304                var matches = key.match(/^([|&])?(.+)/);
5305
5306                if (!value) {
5307                    delete this.filters.dynamic[matches[2]];
5308                } else {
5309                    this.filters.dynamic[matches[2]] = {
5310                        modifier: matches[1] || '|',
5311                        value: value
5312                    };
5313                }
5314
5315                if (this.dynamicFilter.isEnabled) {
5316                    this.searchResult();
5317                    this.buildLayout();
5318                }
5319
5320            },
5321            bind: function () {
5322
5323                var scope = this,
5324                    filter;
5325
5326                for (var i = 0, ii = this.options.dynamicFilter.length; i < ii; i++) {
5327
5328                    filter = this.options.dynamicFilter[i];
5329
5330                    if (typeof filter.selector === "string") {
5331                        filter.selector = $(filter.selector);
5332                    }
5333
5334                    if (!(filter.selector instanceof $) || !filter.selector[0] || !filter.key) {
5335                        // {debug}
5336                        if (this.options.debug) {
5337                            _debug.log({
5338                                'node': this.node.selector,
5339                                'function': 'buildDynamicLayout()',
5340                                'message': 'Invalid jQuery selector or jQuery Object for "filter.selector" or missing filter.key'
5341                            });
5342
5343                            _debug.print();
5344                        }
5345                        // {/debug}
5346                        continue;
5347                    }
5348
5349                    (function (filter) {
5350                        filter.selector.off(scope.namespace).on('change' + scope.namespace, function () {
5351                            scope.dynamicFilter.set.apply(scope, [filter.key, scope.dynamicFilter.getValue(this)]);
5352                        }).trigger('change' + scope.namespace);
5353                    }(filter));
5354
5355                }
5356            },
5357
5358            getValue: function (tag) {
5359                var value;
5360                if (tag.tagName === "SELECT") {
5361                    value = tag.value;
5362                } else if (tag.tagName === "INPUT") {
5363                    if (tag.type === "checkbox") {
5364                        value = tag.checked && tag.getAttribute('value') || tag.checked || null;
5365                    } else if (tag.type === "radio" && tag.checked) {
5366                        value = tag.value;
5367                    }
5368                }
5369                return value;
5370            }
5371        },
5372
5373        showLayout: function () {
5374
5375            // Means the container is already visible
5376            if (this.container.hasClass('result')) return;
5377
5378            // Do not add display classes if there are no results
5379            if (!this.result.length && !this.options.emptyTemplate && !this.options.backdropOnFocus) {
5380                return;
5381            }
5382
5383            var scope = this;
5384
5385            $('html').off(this.namespace)
5386                .on("click" + this.namespace + " touchend" + this.namespace, function (e) {
5387                    if ($(e.target).closest(scope.container)[0] || scope.hasDragged) return;
5388                    scope.hideLayout();
5389                });
5390
5391            this.container.addClass([
5392                this.result.length || (this.options.emptyTemplate && this.query.length >= this.options.minLength) ? 'result ' : '',
5393                this.options.hint && this.query.length >= this.options.minLength ? 'hint' : '',
5394                this.options.backdrop || this.options.backdropOnFocus ? 'backdrop' : ''].join(' ')
5395            );
5396
5397            this.helper.executeCallback.call(this, this.options.callback.onShowLayout, [this.node, this.query]);
5398
5399        },
5400
5401        hideLayout: function () {
5402
5403            // Means the container is already hidden
5404            if (!this.container.hasClass('result') && !this.container.hasClass('backdrop')) return;
5405
5406            this.container.removeClass('result hint filter' + (this.options.backdropOnFocus && $(this.node).is(':focus') ? '' : ' backdrop'));
5407
5408            if (this.options.backdropOnFocus && this.container.hasClass('backdrop')) return;
5409
5410            // Make sure the event gets cleared in case of "ESC"
5411            $('html').off(this.namespace);
5412
5413            this.helper.executeCallback.call(this, this.options.callback.onHideLayout, [this.node, this.query]);
5414
5415        },
5416
5417        resetLayout: function () {
5418
5419            this.result = {};
5420            this.resultCount = 0;
5421            this.resultCountPerGroup = {};
5422            this.resultItemCount = 0;
5423            this.resultHtml = null;
5424
5425            if (this.options.hint && this.hint.container) {
5426                this.hint.container.val('')
5427            }
5428
5429        },
5430
5431        buildCancelButtonLayout: function () {
5432            if (!this.options.cancelButton) return;
5433            var scope = this;
5434
5435            $('<span/>', {
5436                "class": this.options.selector.cancelButton,
5437                "mousedown": function (e) {
5438                    // Don't blur the input
5439                    e.stopImmediatePropagation();
5440                    e.preventDefault();
5441
5442                    scope.node.val('');
5443                    scope.node.trigger('input' + scope.namespace);
5444                }
5445            }).insertBefore(this.node);
5446
5447        },
5448
5449        toggleCancelButton: function () {
5450            this.container.toggleClass('cancel', !!this.query.length);
5451        },
5452
5453        __construct: function () {
5454            this.extendOptions();
5455
5456            if (!this.unifySourceFormat()) {
5457                return;
5458            }
5459
5460            this.dynamicFilter.init.apply(this);
5461
5462            this.init();
5463            this.delegateEvents();
5464            this.buildCancelButtonLayout();
5465            this.buildDropdownLayout();
5466            this.buildDropdownItemLayout('static');
5467
5468            this.helper.executeCallback.call(this, this.options.callback.onReady, [this.node]);
5469        },
5470
5471        helper: {
5472
5473            isEmpty: function (obj) {
5474                for (var prop in obj) {
5475                    if (obj.hasOwnProperty(prop))
5476                        return false;
5477                }
5478
5479                return true;
5480            },
5481
5482            /**
5483             * Remove every accent(s) from a string
5484             *
5485             * @param {String} string
5486             * @returns {*}
5487             */
5488            removeAccent: function (string) {
5489                if (typeof string !== "string") {
5490                    return;
5491                }
5492                var accent = this.options.accent || _accent;
5493
5494                string = string.toLowerCase().replace(new RegExp('[' + accent.from + ']', 'g'), function (match) {
5495                    return accent.to[accent.from.indexOf(match)];
5496                });
5497
5498                return string;
5499            },
5500
5501            /**
5502             * Creates a valid url from string
5503             *
5504             * @param {String} string
5505             * @returns {string}
5506             */
5507            slugify: function (string) {
5508
5509                string = String(string);
5510
5511                if (string !== "") {
5512                    string = this.helper.removeAccent.call(this, string);
5513                    string = string.replace(/[^-a-z0-9]+/g, '-').replace(/-+/g, '-').replace(/^-|-$/g, '');
5514                }
5515
5516                return string;
5517            },
5518
5519            /**
5520             * Sort list of object by key
5521             *
5522             * @param {String|Array} field
5523             * @param {Boolean} reverse
5524             * @param {Function} primer
5525             * @returns {Function}
5526             */
5527            sort: function (field, reverse, primer) {
5528                var key = function (x) {
5529                    for (var i = 0, ii = field.length; i < ii; i++) {
5530                        if (typeof x[field[i]] !== 'undefined') {
5531                            return primer(x[field[i]])
5532                        }
5533                    }
5534                    return x;
5535                };
5536
5537                reverse = [-1, 1][+!!reverse];
5538
5539                return function (a, b) {
5540                    return a = key(a), b = key(b), reverse * ((a > b) - (b > a));
5541                }
5542            },
5543
5544            /**
5545             * Replace a string from-to index
5546             *
5547             * @param {String} string The complete string to replace into
5548             * @param {Number} offset The cursor position to start replacing from
5549             * @param {Number} length The length of the replacing string
5550             * @param {String} replace The replacing string
5551             * @returns {String}
5552             */
5553            replaceAt: function (string, offset, length, replace) {
5554                return string.substring(0, offset) + replace + string.substring(offset + length);
5555            },
5556
5557            /**
5558             * Adds <strong> html around a matched string
5559             *
5560             * @param {String} string The complete string to match from
5561             * @param {String} key
5562             * @param {Boolean} [accents]
5563             * @returns {*}
5564             */
5565            highlight: function (string, keys, accents) {
5566
5567                string = String(string);
5568
5569                var searchString = accents && this.helper.removeAccent.call(this, string) || string,
5570                    matches = [];
5571
5572                if (!Array.isArray(keys)) {
5573                    keys = [keys];
5574                }
5575
5576                keys.sort(function (a, b) {
5577                    return b.length - a.length;
5578                });
5579
5580                // Make sure the '|' join will be safe!
5581                for (var i = keys.length - 1; i >= 0; i--) {
5582                    if (keys[i].trim() === "") {
5583                        keys.splice(i, 1);
5584                        continue;
5585                    }
5586                    keys[i] = keys[i].replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&")
5587                }
5588
5589                searchString.replace(
5590                    new RegExp('(?:' + keys.join('|') + ')(?!([^<]+)?>
5590)', 'gi'),
5591                    function (match, index, offset) {
5592                        matches.push({
5593                            offset: offset,
5594                            length: match.length
5595                        });
5596                    }
5597                );
5598
5599                for (var i = matches.length - 1; i >= 0; i--) {
5600                    string = this.helper.replaceAt(
5601                        string,
5602                        matches[i].offset,
5603                        matches[i].length,
5604                        "<strong>" + string.substr(matches[i].offset, matches[i].length) + "</strong>"
5605                    );
5606                }
5607
5608                return string;
5609            },
5610
5611            /**
5612             * Get carret position, mainly used for right arrow navigation
5613             * @param element
5614             * @returns {*}
5615             */
5616            getCaret: function (element) {
5617                if (element.selectionStart) {
5618                    return element.selectionStart;
5619                } else if (document.selection) {
5620                    element.focus();
5621
5622                    var r = document.selection.createRange();
5623                    if (r == null) {
5624                        return 0;
5625                    }
5626
5627                    var re = element.createTextRange(),
5628                        rc = re.duplicate();
5629                    re.moveToBookmark(r.getBookmark());
5630                    rc.setEndPoint('EndToStart', re);
5631
5632                    return rc.text.length;
5633                }
5634                return 0;
5635            },
5636
5637            /**
5638             * Clean strings from possible XSS (script and iframe tags)
5639             * @param string
5640             * @returns {string}
5641             */
5642            cleanStringFromScript: function (string) {
5643                return typeof string === "string" &&
5644                    string.replace(/<\/?(?:script|iframe)\b[^>]*>/gm, '') ||
5645                    string;
5646            },
5647
5648            /**
5649             * Executes an anonymous function or a string reached from the window scope.
5650             *
5651             * @example
5652             * Note: These examples works with every configuration callbacks
5653             *
5654             * // An anonymous function inside the "onInit" option
5655             * onInit: function() { console.log(':D'); };
5656             *
5657             * // myFunction() located on window.coucou scope
5658             * onInit: 'window.coucou.myFunction'
5659             *
5660             * // myFunction(a,b) located on window.coucou scope passing 2 parameters
5661             * onInit: ['window.coucou.myFunction', [':D', ':)']];
5662             *
5663             * // Anonymous function to execute a local function
5664             * onInit: function () { myFunction(':D'); }
5665             *
5666             * @param {String|Array} callback The function to be called
5667             * @param {Array} [extraParams] In some cases the function can be called with Extra parameters (onError)
5668             * @returns {*}
5669             */
5670            executeCallback: function (callback, extraParams) {
5671
5672                if (!callback) {
5673                    return;
5674                }
5675
5676                var _callback;
5677
5678                if (typeof callback === "function") {
5679
5680                    _callback = callback;
5681
5682                } else if (typeof callback === "string" || Array.isArray(callback)) {
5683
5684                    if (typeof callback === "string") {
5685                        callback = [callback, []];
5686                    }
5687
5688                    _callback = this.helper.namespace(callback[0], window);
5689
5690                    if (typeof _callback !== "function") {
5691                        // {debug}
5692                        if (this.options.debug) {
5693                            _debug.log({
5694                                'node': this.selector,
5695                                'function': 'executeCallback()',
5696                                'arguments': JSON.stringify(callback),
5697                                'message': 'WARNING - Invalid callback function"'
5698                            });
5699
5700                            _debug.print();
5701                        }
5702                        // {/debug}
5703                        return;
5704                    }
5705
5706                }
5707
5708                return _callback.apply(this, (callback[1] || []).concat(extraParams ? extraParams : []));
5709
5710            },
5711
5712            namespace: function (namespaceString, objectReference, method, objectValue) {
5713
5714                if (typeof namespaceString !== "string" || namespaceString === "") {
5715                    // {debug}
5716                    if (this.options.debug) {
5717                        _debug.log({
5718                            'node': _node.selector,
5719                            'function': 'namespace()',
5720                            'arguments': namespaceString,
5721                            'message': 'ERROR - Missing namespaceString"'
5722                        });
5723
5724                        _debug.print();
5725                    }
5726                    // {/debug}
5727                    return false;
5728                }
5729
5730                var parts = namespaceString.split('.'),
5731                    parent = objectReference || window,
5732                    method = method || 'get',
5733                    value = objectValue || {},
5734                    currentPart = '';
5735
5736                for (var i = 0, length = parts.length; i < length; i++) {
5737                    currentPart = parts[i];
5738
5739                    if (typeof parent[currentPart] === "undefined") {
5740                        if (~['get', 'delete'].indexOf(method)) {
5741                            return typeof objectValue !== "undefined" ? objectValue : undefined;
5742                        }
5743                        parent[currentPart] = {};
5744                    }
5745
5746                    if (~['set', 'create', 'delete'].indexOf(method)) {
5747                        if (i === length - 1) {
5748                            if (method === 'set' || method === 'create') {
5749                                parent[currentPart] = value;
5750                            } else {
5751
5752                                delete parent[currentPart];
5753                                return true;
5754                            }
5755                        }
5756                    }
5757
5758                    parent = parent[currentPart];
5759
5760                }
5761                return parent;
5762            },
5763
5764            typeWatch: (function () {
5765                var timer = 0;
5766                return function (callback, ms) {
5767                    clearTimeout(timer);
5768                    timer = setTimeout(callback, ms);
5769                }
5770            })()
5771
5772        }
5773    };
5774
5775    /**
5776     * @public
5777     * Implement Typeahead on the selected input node.
5778     *
5779     * @param {Object} options
5780     * @return {Object} Modified DOM element
5781     */
5782    $.fn.typeahead = $.typeahead = function (options) {
5783        return _api.typeahead(this, options);
5784    };
5785
5786    /**
5787     * @private
5788     * API to handles Typeahead methods via jQuery.
5789     */
5790    var _api = {
5791
5792        /**
5793         * Enable Typeahead
5794         *
5795         * @param {Object} node
5796         * @param {Object} options
5797         * @returns {*}
5798         */
5799        typeahead: function (node, options) {
5800
5801            if (!options || !options.source || typeof options.source !== 'object') {
5802             
5803                // {debug}
5804                _debug.log({
5805                    'node': node.selector || options && options.input,
5806                    'function': '$.typeahead()',
5807                    'arguments': JSON.stringify(options && options.source || ''),
5808                    'message': 'Undefined "options" or "options.source" or invalid source type - Typeahead dropped'
5809                });
5810
5811                _debug.print();
5812                // {/debug}
5813
5814                return;
5815            }
5816
5817            if (typeof node === "function") {
5818                if (!options.input) {
5819
5820                    // {debug}
5821                    _debug.log({
5822                        'node': node.selector,
5823                        'function': '$.typeahead()',
5824                        //'arguments': JSON.stringify(options),
5825                        'message': 'Undefined "options.input" - Typeahead dropped'
5826                    });
5827
5828                    _debug.print();
5829                    // {/debug}
5830
5831                    return;
5832                }
5833
5834                node = $(options.input);
5835            }
5836
5837            if (!node.length || node[0].nodeName !== "INPUT") {
5838
5839                // {debug}
5840                _debug.log({
5841                    'node': node.selector,
5842                    'function': '$.typeahead()',
5843                    'arguments': JSON.stringify(options.input),
5844                    'message': 'Unable to find jQuery input element - Typeahead dropped'
5845                });
5846
5847                _debug.print();
5848                // {/debug}
5849
5850                return;
5851            }
5852
5853            return window.Typeahead[options.input || node.selector] = new Typeahead(node, options);
5854
5855        }
5856
5857    };
5858
5859// {debug}
5860    var _debug = {
5861
5862        table: {},
5863        log: function (debugObject) {
5864
5865            if (!debugObject.message || typeof debugObject.message !== "string") {
5866                return;
5867            }
5868
5869            this.table[debugObject.message] = $.extend({
5870                'node': '',
5871                'function': '',
5872                'arguments': ''
5873            }, debugObject)
5874
5875        },
5876        print: function () {
5877
5878            if (Typeahead.prototype.helper.isEmpty(this.table) || !console || !console.table) {
5879                return;
5880            }
5881
5882            if (console.group !== undefined || console.table !== undefined) {
5883                console.groupCollapsed('--- jQuery Typeahead Debug ---');
5884                console.table(this.table);
5885                console.groupEnd();
5886            }
5887
5888            this.table = {};
5889
5890        }
5891
5892    };
5893    _debug.log({
5894        'message': 'WARNING - You are using the DEBUG version. Use /dist/jquery.typeahead.min.js in production.'
5895    });
5896
5897    _debug.print();
5898// {/debug}
5899
5900// IE8 Shims
5901    window.console = window.console || {
5902            log: function () {
5903            }
5904        };
5905
5906    if (!Array.isArray) {
5907        Array.isArray = function (arg) {
5908            return Object.prototype.toString.call(arg) === '[object Array]';
5909        };
5910    }
5911
5912    if (!('trim' in String.prototype)) {
5913        String.prototype.trim = function () {
5914            return this.replace(/^\s+/, '').replace(/\s+$/, '');
5915        };
5916    }
5917    if (!('indexOf' in Array.prototype)) {
5918        Array.prototype.indexOf = function (find, i /*opt*/) {
5919            if (i === undefined) i = 0;
5920            if (i < 0) i += this.length;
5921            if (i < 0) i = 0;
5922            for (var n = this.length; i < n; i++)
5923                if (i in this && this[i] === find)
5924                    return i;
5925            return -1;
5926        };
5927    }
5928    if (!Object.keys) {
5929        Object.keys = function (obj) {
5930            var keys = [],
5931                k;
5932            for (k in obj) {
5933                if (Object.prototype.hasOwnProperty.call(obj, k)) {
5934                    keys.push(k);
5935                }
5936            }
5937            return keys;
5938        };
5939    }
5940
5941    return Typeahead;
5942
5943}));;
5944/**
5945 * jQuery number plug-in 2.1.5
5946 * Copyright 2012, Digital Fusion
5947 * Licensed under the MIT license.
5948 * http://opensource.teamdf.com/license/
5949 *
5950 * A jQuery plugin which implements a permutation of phpjs.org's number_format to provide
5951 * simple number formatting, insertion, and as-you-type masking of a number.
5952 *
5953 * @author	Sam Sehnert
5954 * @docs	http://www.teamdf.com/web/jquery-number-format-redux/196/
5955 */
5956(function ($) {
5957
5958    "use strict";
5959
5960    /**
5961	 * Method for selecting a range of characters in an input/textarea.
5962	 *
5963	 * @param int rangeStart			: Where we want the selection to start.
5964	 * @param int rangeEnd				: Where we want the selection to end.
5965	 *
5966	 * @return void;
5967	 */
5968    function setSelectionRange(rangeStart, rangeEnd) {
5969        // Check which way we need to define the text range.
5970        if (this.createTextRange) {
5971            var range = this.createTextRange();
5972            range.collapse(true);
5973            range.moveStart('character', rangeStart);
5974            range.moveEnd('character', rangeEnd - rangeStart);
5975            range.select();
5976        }
5977
5978            // Alternate setSelectionRange method for supporting browsers.
5979        else if (this.setSelectionRange) {
5980            this.focus();
5981            this.setSelectionRange(rangeStart, rangeEnd);
5982        }
5983    }
5984
5985    /**
5986	 * Get the selection position for the given part.
5987	 *
5988	 * @param string part			: Options, 'Start' or 'End'. The selection position to get.
5989	 *
5990	 * @return int : The index position of the selection part.
5991	 */
5992    function getSelection(part) {
5993        var pos = this.value.length;
5994
5995        // Work out the selection part.
5996        part = (part.toLowerCase() == 'start' ? 'Start' : 'End');
5997
5998        if (document.selection) {
5999            // The current selection
6000            var range = document.selection.createRange(), stored_range, selectionStart, selectionEnd;
6001            // We'll use this as a 'dummy'
6002            stored_range = range.duplicate();
6003            // Select all text
6004            //stored_range.moveToElementText( this );
6005            stored_range.expand('textedit');
6006            // Now move 'dummy' end point to end point of original range
6007            stored_range.setEndPoint('EndToEnd', range);
6008            // Now we can calculate start and end points
6009            selectionStart = stored_range.text.length - range.text.length;
6010            selectionEnd = selectionStart + range.text.length;
6011            return part == 'Start' ? selectionStart : selectionEnd;
6012        }
6013
6014        else if (typeof (this['selection' + part]) != "undefined") {
6015            pos = this['selection' + part];
6016        }
6017        return pos;
6018    }
6019
6020    /**
6021	 * Substitutions for keydown keycodes.
6022	 * Allows conversion from e.which to ascii characters.
6023	 */
6024    var _keydown = {
6025        codes: {
6026            46: 127,
6027            188: 44,
vendor: 26,444 bytes, lines 6028-6579
6028            109: 45,
6029            190: 46,
6030            191: 47,
6031            192: 96,
6032            220: 92,
6033            222: 39,
6034            221: 93,
6035            219: 91,
6036            173: 45,
6037            187: 61, //IE Key codes
6038            186: 59, //IE Key codes
6039            189: 45, //IE Key codes
6040            110: 46  //IE Key codes
6041        },
6042        shifts: {
6043            96: "~",
6044            49: "!",
6045            50: "@",
6046            51: "#",
6047            52: "$",
6048            53: "%",
6049            54: "^",
6050            55: "&",
6051            56: "*",
6052            57: "(",
6053            48: ")",
6054            45: "_",
6055            61: "+",
6056            91: "{",
6057            93: "}",
6058            92: "|",
6059            59: ":",
6060            39: "\"",
6061            44: "<",
6062            46: ">",
6063            47: "?"
6064        }
6065    };
6066
6067    /**
6068	 * jQuery number formatter plugin. This will allow you to format numbers on an element.
6069	 *
6070	 * @params proxied for format_number method.
6071	 *
6072	 * @return : The jQuery collection the method was called with.
6073	 */
6074    $.fn.number = function (number, decimals, dec_point, thousands_sep) {
6075
6076        // Enter the default thousands separator, and the decimal placeholder.
6077        thousands_sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep;
6078        dec_point = (typeof dec_point === 'undefined') ? '.' : dec_point;
6079        decimals = (typeof decimals === 'undefined') ? 0 : decimals;
6080
6081        // Work out the unicode character for the decimal placeholder.
6082        var u_dec = ('\\u' + ('0000' + (dec_point.charCodeAt(0).toString(16))).slice(-4)),
6083			regex_dec_num = new RegExp('[^' + u_dec + '0-9]', 'g'),
6084			regex_dec = new RegExp(u_dec, 'g');
6085
6086        // If we've specified to take the number from the target element,
6087        // we loop over the collection, and get the number.
6088        if (number === true) {
6089            // If this element is a number, then we add a keyup
6090            if (this.is('input:text')) {
6091                // Return the jquery collection.
6092                return this.on({
6093
6094                    /**
6095					 * Handles keyup events, re-formatting numbers.
6096					 *
6097					 * Uses 'data' object to keep track of important information.
6098					 *
6099					 * data.c
6100					 * This variable keeps track of where the caret *should* be. It works out the position as
6101					 * the number of characters from the end of the string. E.g., '1^,234.56' where ^ denotes the caret,
6102					 * would be index -7 (e.g., 7 characters from the end of the string). At the end of both the key down
6103					 * and key up events, we'll re-position the caret to wherever data.c tells us the cursor should be.
6104					 * This gives us a mechanism for incrementing the cursor position when we come across decimals, commas
6105					 * etc. This figure typically doesn't increment for each keypress when to the left of the decimal,
6106					 * but does when to the right of the decimal.
6107					 *
6108					 * @param object e			: the keyup event object.s
6109					 *
6110					 * @return void;
6111					 */
6112                    'keydown.format': function (e) {
6113
6114                        // Define variables used in the code below.
6115                        var $this = $(this),
6116							data = $this.data('numFormat'),
6117							code = (e.keyCode ? e.keyCode : e.which),
6118							chara = '', //unescape(e.originalEvent.keyIdentifier.replace('U+','%u')),
6119							start = getSelection.apply(this, ['start']),
6120							end = getSelection.apply(this, ['end']),
6121							val = '',
6122							setPos = false;
6123
6124                        // Webkit (Chrome & Safari) on windows screws up the keyIdentifier detection
6125                        // for numpad characters. I've disabled this for now, because while keyCode munging
6126                        // below is hackish and ugly, it actually works cross browser & platform.
6127
6128                        //						if( typeof e.originalEvent.keyIdentifier !== 'undefined' )
6129                        //						{
6130                        //							chara = unescape(e.originalEvent.keyIdentifier.replace('U+','%u'));
6131                        //						}
6132                        //						else
6133                        //						{
6134                        if (_keydown.codes.hasOwnProperty(code)) {
6135                            code = _keydown.codes[code];
6136                        }
6137                        if (!e.shiftKey && (code >= 65 && code <= 90)) {
6138                            code += 32;
6139                        } else if (!e.shiftKey && (code >= 69 && code <= 105)) {
6140                            code -= 48;
6141                        } else if (e.shiftKey && _keydown.shifts.hasOwnProperty(code)) {
6142                            //get shifted keyCode value
6143                            chara = _keydown.shifts[code];
6144                        }
6145
6146                        if (chara == '') chara = String.fromCharCode(code);
6147                        //						}
6148
6149
6150
6151
6152                        // Stop executing if the user didn't type a number key, a decimal character, backspace, or delete.
6153                        if (code != 8 && code != 45 && code != 127 && chara != dec_point && !chara.match(/[0-9]/)) {
6154                            // We need the original keycode now...
6155                            var key = (e.keyCode ? e.keyCode : e.which);
6156                            if ( // Allow control keys to go through... (delete, backspace, tab, enter, escape etc)
6157								key == 46 || key == 8 || key == 127 || key == 9 || key == 27 || key == 13 ||
6158                                // Allow: Ctrl+A, Ctrl+R, Ctrl+P, Ctrl+S, Ctrl+F, Ctrl+H, Ctrl+B, Ctrl+J, Ctrl+T, Ctrl+Z, Ctrl++, Ctrl+-, Ctrl+0
6159								((key == 65 || key == 82 || key == 80 || key == 83 || key == 70 || key == 72 || key == 66 || key == 74 || key == 84 || key == 90 || key == 61 || key == 173 || key == 48) && (e.ctrlKey || e.metaKey) === true) ||
6160                                // Allow: Ctrl+V, Ctrl+C, Ctrl+X
6161								((key == 86 || key == 67 || key == 88) && (e.ctrlKey || e.metaKey) === true) ||
6162                                // Allow: home, end, left, right
6163								((key >= 35 && key <= 39)) ||
6164                                // Allow: F1-F12
6165								((key >= 112 && key <= 123))
6166							) {
6167                                return;
6168                            }
6169                            // But prevent all other keys.
6170                            e.preventDefault();
6171                            return false;
6172                        }
6173
6174                        // The whole lot has been selected, or if the field is empty...
6175                        if (start == 0 && end == this.value.length) //|| $this.val() == 0 )
6176                        {
6177                            if (code == 8)		// Backspace
6178                            {
6179                                // Blank out the field, but only if the data object has already been instantiated.
6180                                start = end = 1;
6181                                this.value = '';
6182
6183                                // Reset the cursor position.
6184                                data.init = (decimals > 0 ? -1 : 0);
6185                                data.c = (decimals > 0 ? -(decimals + 1) : 0);
6186                                setSelectionRange.apply(this, [0, 0]);
6187                            }
6188                            else if (chara == dec_point) {
6189                                start = end = 1;
6190                                let deci = '';
6191                                for (let i = 0; i < decimals; i++) {
6192                                    deci += '0';
6193                                }
6194                                //this.value = '0' + dec_point + (new Array(decimals + 1).join('0'));
6195                                this.value = '0' + (deci === ''? '' : dec_point) + deci;
6196                                // Reset the cursor position.
6197                                data.init = (decimals > 0 ? 1 : 0);
6198                                data.c = (decimals > 0 ? -(decimals + 1) : 0);
6199                            }
6200                            else if (code == 45)	// Negative sign
6201                            {
6202                                start = end = 2;
6203                                this.value = '-0' + dec_point + (new Array(decimals + 1).join('0'));
6204
6205                                // Reset the cursor position.
6206                                data.init = (decimals > 0 ? 1 : 0);
6207                                data.c = (decimals > 0 ? -(decimals + 1) : 0);
6208
6209                                setSelectionRange.apply(this, [2, 2]);
6210                            }
6211                            else {
6212                                // Reset the cursor position.
6213                                data.init = (decimals > 0 ? -1 : 0);
6214                                data.c = (decimals > 0 ? -(decimals) : 0);
6215                            }
6216                        }
6217
6218                            // Otherwise, we need to reset the caret position
6219                            // based on the users selection.
6220                        else {
6221                            data.c = end - this.value.length;
6222                        }
6223
6224                        // Track if partial selection was used
6225                        data.isPartialSelection = start == end ? false : true;
6226
6227                        // If the start position is before the decimal point,
6228                        // and the user has typed a decimal point, we need to move the caret
6229                        // past the decimal place.
6230                        if (decimals > 0 && chara == dec_point && start == this.value.length - decimals - 1) {
6231                            data.c++;
6232                            data.init = Math.max(0, data.init);
6233                            e.preventDefault();
6234
6235                            // Set the selection position.
6236                            setPos = this.value.length + data.c;
6237                        }
6238
6239                            // Ignore negative sign unless at beginning of number (and it's not already present)
6240                        else if (code == 45 && (start != 0 || this.value.indexOf('-') == 0)) {
6241                            e.preventDefault();
6242                        }
6243
6244                            // If the user is just typing the decimal place,
6245                            // we simply ignore it.
6246                        else if (chara == dec_point) {
6247                            data.init = Math.max(0, data.init);
6248                            e.preventDefault();
6249                        }
6250
6251                            // If hitting the delete key, and the cursor is before a decimal place,
6252                            // we simply move the cursor to the other side of the decimal place.
6253                        else if (decimals > 0 && code == 127 && start == this.value.length - decimals - 1) {
6254                            // Just prevent default but don't actually move the caret here because it's done in the keyup event
6255                            e.preventDefault();
6256                        }
6257
6258                            // If hitting the backspace key, and the cursor is behind a decimal place,
6259                            // we simply move the cursor to the other side of the decimal place.
6260                        else if (decimals > 0 && code == 8 && start == this.value.length - decimals) {
6261                            e.preventDefault();
6262                            data.c--;
6263
6264                            // Set the selection position.
6265                            setPos = this.value.length + data.c;
6266                        }
6267
6268                            // If hitting the delete key, and the cursor is to the right of the decimal
6269                            // we replace the character after the caret with a 0.
6270                        else if (decimals > 0 && code == 127 && start > this.value.length - decimals - 1) {
6271                            if (this.value === '') return;
6272
6273                            // If the character following is not already a 0,
6274                            // replace it with one.
6275                            if (this.value.slice(start, start + 1) != '0') {
6276                                val = this.value.slice(0, start) + '0' + this.value.slice(start + 1);
6277                                // The regex replacement below removes negative sign from numbers...
6278                                // not sure why they're necessary here when none of the other cases use them
6279                                //$this.val(val.replace(regex_dec_num,'').replace(regex_dec,dec_point));
6280                                $this.val(val);
6281                            }
6282
6283                            e.preventDefault();
6284
6285                            // Set the selection position.
6286                            setPos = this.value.length + data.c;
6287                        }
6288
6289                            // If hitting the backspace key, and the cursor is to the right of the decimal
6290                            // (but not directly to the right) we replace the character preceding the
6291                            // caret with a 0.
6292                        else if (decimals > 0 && code == 8 && start > this.value.length - decimals) {
6293                            if (this.value === '') return;
6294
6295                            // If the character preceding is not already a 0,
6296                            // replace it with one.
6297                            if (this.value.slice(start - 1, start) != '0') {
6298                                val = this.value.slice(0, start - 1) + '0' + this.value.slice(start);
6299                                // The regex replacement below removes negative sign from numbers...
6300                                // not sure why they're necessary here when none of the other cases use them
6301                                //$this.val(val.replace(regex_dec_num,'').replace(regex_dec,dec_point));
6302                                $this.val(val);
6303                            }
6304
6305                            e.preventDefault();
6306                            data.c--;
6307
6308                            // Set the selection position.
6309                            setPos = this.value.length + data.c;
6310                        }
6311
6312                            // If the delete key was pressed, and the character immediately
6313                            // after the caret is a thousands_separator character, simply
6314                            // step over it.
6315                        else if (code == 127 && this.value.slice(start, start + 1) == thousands_sep) {
6316                            // Just prevent default but don't actually move the caret here because it's done in the keyup event
6317                            e.preventDefault();
6318                        }
6319
6320                            // If the backspace key was pressed, and the character immediately
6321                            // before the caret is a thousands_separator character, simply
6322                            // step over it.
6323                        else if (code == 8 && this.value.slice(start - 1, start) == thousands_sep) {
6324                            e.preventDefault();
6325                            data.c--;
6326
6327                            // Set the selection position.
6328                            setPos = this.value.length + data.c;
6329                        }
6330
6331                            // If the caret is to the right of the decimal place, and the user is entering a
6332                            // number, remove the following character before putting in the new one.
6333                        else if (
6334							decimals > 0 &&
6335							start == end &&
6336							this.value.length > decimals + 1 &&
6337							start > this.value.length - decimals - 1 && isFinite(+chara) &&
6338							!e.metaKey && !e.ctrlKey && !e.altKey && chara.length === 1
6339						) {
6340                            // If the character preceding is not already a 0,
6341                            // replace it with one.
6342                            if (end === this.value.length) {
6343                                val = this.value.slice(0, start - 1);
6344                            }
6345                            else {
6346                                val = this.value.slice(0, start) + this.value.slice(start + 1);
6347                            }
6348
6349                            // Reset the position.
6350                            this.value = val;
6351                            setPos = start;
6352                        }
6353
6354                        // If we need to re-position the characters.
6355                        if (setPos !== false) {
6356                            //console.log('Setpos keydown: ', setPos );
6357                            setSelectionRange.apply(this, [setPos, setPos]);
6358                        }
6359
6360                        // Store the data on the element.
6361                        $this.data('numFormat', data);
6362
6363                    },
6364
6365                    /**
6366					 * Handles keyup events, re-formatting numbers.
6367					 *
6368					 * @param object e			: the keyup event object.s
6369					 *
6370					 * @return void;
6371					 */
6372                    'keyup.format': function (e) {
6373
6374                        // Store these variables for use below.
6375                        var $this = $(this),
6376							data = $this.data('numFormat'),
6377							code = (e.keyCode ? e.keyCode : e.which),
6378							start = getSelection.apply(this, ['start']),
6379							end = getSelection.apply(this, ['end']),
6380							setPos;
6381
6382                        //console.log('1 Setting pos start: ' + start + " decimals " + decimals + " lengthData " + this.value.length + data.c + " length " + this.value.length + " data.c " + data.c);
6383
6384                        // Check for negative characters being entered at the start of the string.
6385                        // If there's any kind of selection, just ignore the input.
6386                        if (start === 0 && end === 0 && (code === 189 || code === 109)) {
6387                            $this.val('-' + $this.val());
6388
6389                            start = 1;
6390                            data.c = 1 - this.value.length;
6391                            data.init = 1;
6392
6393                            $this.data('numFormat', data);
6394
6395                            setPos = this.value.length + data.c;
6396                            setSelectionRange.apply(this, [setPos, setPos]);
6397                            //console.log('2 Setting pos start: ' + start + " decimals " + decimals + " lengthData " + this.value.length + data.c + " length " + this.value.length + " data.c " + data.c);
6398
6399                        }
6400
6401                        // Stop executing if the user didn't type a number key, a decimal, or a comma.
6402                        if (this.value === '' || (code < 48 || code > 57) && (code < 96 || code > 105) && code !== 8 && code !== 46 && code !== 110) return;
6403
6404                        // Re-format the textarea.
6405                        $this.val($this.val());
6406
6407                        if (decimals > 0) {
6408                            // If we haven't marked this item as 'initialized'
6409                            // then do so now. It means we should place the caret just
6410                            // before the decimal. This will never be un-initialized before
6411                            // the decimal character itself is entered.
6412                            if (data.init < 1) {
6413                                start = this.value.length - decimals - (data.init < 0 ? 1 : 0);
6414                                data.c = start - this.value.length;
6415                                data.init = 1;
6416                                //console.log('3.1 Setting pos start: ' + start + " decimals " + decimals + " lengthData " + this.value.length + data.c + " length " + this.value.length + " data.c " + data.c);
6417
6418                                $this.data('numFormat', data);
6419                            }
6420
6421                                // Increase the cursor position if the caret is to the right
6422                                // of the decimal place, and the character pressed isn't the backspace key.
6423                            else if (start > this.value.length - decimals && code != 8) {
6424                                data.c++;
6425
6426                                // Store the data, now that it's changed.
6427                                $this.data('numFormat', data);
6428                                //console.log('3.2 Setting pos start: ' + start + " decimals " + decimals + " lengthData " + this.value.length + data.c + " length " + this.value.length + " data.c " + data.c);
6429                            }
6430
6431                        }
6432
6433                        // Move caret to the right after delete key pressed
6434                        if (code == 46 && !data.isPartialSelection) {
6435                            data.c++;
6436
6437                            // Store the data, now that it's changed.
6438                            $this.data('numFormat', data);
6439                            //console.log('4 Setting pos start: ' + start + " decimals " + decimals + " lengthData " + this.value.length + data.c + " length " + this.value.length + " data.c " + data.c);
6440
6441                        }
6442
6443                        //console.log('10 Setting pos start: ' + start + " decimals " + decimals + " lengthData " + this.value.length + data.c + " length " + this.value.length + " data.c " + data.c);
6444                        var length = this.value.length;
6445                        var c = data.c;
6446                        if (data.c == 1)
6447                        {
6448                            c = start - length;
6449                        }
6450                        // Set the selection position.
6451                        setPos = length + c;
6452                        setSelectionRange.apply(this, [setPos, setPos]);
6453                    },
6454
6455                    /**
6456					 * Reformat when pasting into the field.
6457					 *
6458					 * @param object e 		: jQuery event object.
6459					 *
6460					 * @return false : prevent default action.
6461					 */
6462                    'paste.format': function (e) {
6463
6464                        // Defint $this. It's used twice!.
6465                        var $this = $(this),
6466							original = e.originalEvent,
6467							val = null;
6468
6469                        // Get the text content stream.
6470                        if (window.clipboardData && window.clipboardData.getData) { // IE
6471                            val = window.clipboardData.getData('Text');
6472                        } else if (original.clipboardData && original.clipboardData.getData) {
6473                            val = original.clipboardData.getData('text/plain');
6474                        }
6475
6476                        // Do the reformat operation.
6477                        $this.val(val);
6478
6479                        // Stop the actual content from being pasted.
6480                        e.preventDefault();
6481                        return false;
6482                    }
6483
6484                })
6485
6486				// Loop each element (which isn't blank) and do the format.
6487				.each(function () {
6488
6489				    var $this = $(this).data('numFormat', {
6490				        c: -(decimals + 1),
6491				        decimals: decimals,
6492				        thousands_sep: thousands_sep,
6493				        dec_point: dec_point,
6494				        regex_dec_num: regex_dec_num,
6495				        regex_dec: regex_dec,
6496				        init: this.value.indexOf('.') ? true : false
6497				    });
6498
6499				    // Return if the element is empty.
6500				    if (this.value === '') return;
6501
6502				    // Otherwise... format!!
6503				    $this.val($this.val());
6504				});
6505            }
6506            else {
6507                // return the collection.
6508                return this.each(function () {
6509                    var $this = $(this), num = +$this.text().replace(regex_dec_num, '').replace(regex_dec, '.');
6510                    $this.number(!isFinite(num) ? 0 : +num, decimals, dec_point, thousands_sep);
6511                });
6512            }
6513        }
6514
6515        // Add this number to the element as text.
6516        return this.text($.number.apply(window, arguments));
6517    };
6518
6519    //
6520    // Create .val() hooks to get and set formatted numbers in inputs.
6521    //
6522
6523    // We check if any hooks already exist, and cache
6524    // them in case we need to re-use them later on.
6525    var origHookGet = null, origHookSet = null;
6526
6527    // Check if a text valHook already exists.
6528    if ($.isPlainObject($.valHooks.text)) {
6529        // Preserve the original valhook function
6530        // we'll call this for values we're not
6531        // explicitly handling.
6532        if ($.isFunction($.valHooks.text.get)) origHookGet = $.valHooks.text.get;
6533        if ($.isFunction($.valHooks.text.set)) origHookSet = $.valHooks.text.set;
6534    }
6535    else {
6536        // Define an object for the new valhook.
6537        $.valHooks.text = {};
6538    }
6539
6540    /**
6541	* Define the valHook to return normalised field data against an input
6542	* which has been tagged by the number formatter.
6543	*
6544	* @param object el			: The raw DOM element that we're getting the value from.
6545	*
6546	* @return mixed : Returns the value that was written to the element as a
6547	*				  javascript number, or undefined to let jQuery handle it normally.
6548	*/
6549    $.valHooks.text.get = function (el) {
6550
6551        // Get the element, and its data.
6552        var $this = $(el), num, negative,
6553			data = $this.data('numFormat');
6554
6555        // Does this element have our data field?
6556        if (!data) {
6557            // Check if the valhook function already existed
6558            if ($.isFunction(origHookGet)) {
6559                // There was, so go ahead and call it
6560                return origHookGet(el);
6561            }
6562            else {
6563                // No previous function, return undefined to have jQuery
6564                // take care of retrieving the value
6565                return undefined;
6566            }
6567        }
6568        else {
6569            // Remove formatting, and return as number.
6570            if (el.value === '') return '';
6571
6572
6573            // Convert to a number.
6574            num = +(el.value
6575				.replace(data.regex_dec_num, '')
6576				.replace(data.regex_dec, '.'));
6577
6578            // If we've got a finite number, return it.
6579            // Otherwise, simply return 0.
6580            // Return as a string... thats what we're
6581            // used to with .val()
6582            return (el.value.indexOf('-') === 0 ? '-' : '') + (isFinite(num) ? num : 0);
6583        }
6584    };
6585
6586    /**
6587	* A valhook which formats a number when run against an input
6588	* which has been tagged by the number formatter.
6589	*
6590	* @param object el		: The raw DOM element (input element).
6591	* @param float			: The number to set into the value field.
6592	*
6593	* @return mixed : Returns the value that was written to the element,
6594	*				  or undefined to let jQuery handle it normally.
6595	*/
6596    $.valHooks.text.set = function (el, val) {
6597        // Get the element, and its data.
6598        var $this = $(el),
6599			data = $this.data('numFormat');
6600
6601        // Does this element have our data field?
6602        if (!data) {
6603
6604            // Check if the valhook function already exists
6605            if ($.isFunction(origHookSet)) {
6606                // There was, so go ahead and call it
6607                return origHookSet(el, val);
6608            }
6609            else {
6610                // No previous function, return undefined to have jQuery
6611                // take care of retrieving the value
6612                return undefined;
6613            }
6614        }
6615        else {
6616            var num = $.number(val, data.decimals, data.dec_point, data.thousands_sep);
6617
6618            // Make sure empties are set with correct signs.
6619            //			if(val.indexOf('-') === 0 && +num === 0)
6620            //			{
6621            //				num = '-'+num;
6622            //			}
6623
6624            return $.isFunction(origHookSet) ? origHookSet(el, num) : el.value = num;
6625        }
6626    };
6627
6628    /**
6629	 * The (modified) excellent number formatting method from PHPJS.org.
6630	 * http://phpjs.org/functions/number_format/
6631	 *
6632	 * @modified by Sam Sehnert (teamdf.com)
6633	 *	- don't redefine dec_point, thousands_sep... just overwrite with defaults.
6634	 *	- don't redefine decimals, just overwrite as numeric.
6635	 *	- Generate regex for normalizing pre-formatted numbers.
6636	 *
6637	 * @param float number			: The number you wish to format, or TRUE to use the text contents
6638	 *								  of the element as the number. Please note that this won't work for
6639	 *								  elements which have child nodes with text content.
6640	 * @param int decimals			: The number of decimal places that should be displayed. Defaults to 0.
6641	 * @param string dec_point		: The character to use as a decimal point. Defaults to '.'.
6642	 * @param string thousands_sep	: The character to use as a thousands separator. Defaults to ','.
6643	 *
6644	 * @return string : The formatted number as a string.
6645	 */
6646    $.number = function (number, decimals, dec_point, thousands_sep) {
6647        // Set the default values here, instead so we can use them in the replace below.
6648        thousands_sep = (typeof thousands_sep === 'undefined') ? (new Number(1000).toLocaleString() !== '1000' ? new Number(1000).toLocaleString().charAt(1) : '') : thousands_sep;
6649        dec_point = (typeof dec_point === 'undefined') ? new Number(0.1).toLocaleString().charAt(1) : dec_point;
6650        decimals = !isFinite(+decimals) ? 0 : Math.abs(decimals);
6651
6652        // Work out the unicode representation for the decimal place and thousand sep.
6653        var u_dec = ('\\u' + ('0000' + (dec_point.charCodeAt(0).toString(16))).slice(-4));
6654        var u_sep = ('\\u' + ('0000' + (thousands_sep.charCodeAt(0).toString(16))).slice(-4));
6655
6656        // Fix the number, so that it's an actual number.
6657        number = (number + '')
6658			.replace('\.', dec_point) // because the number if passed in as a float (having . as decimal point per definition) we need to replace this with the passed in decimal point character
6659			.replace(new RegExp(u_sep, 'g'), '')
6660			.replace(new RegExp(u_dec, 'g'), '.')
6661			.replace(new RegExp('[^0-9+\-Ee.]', 'g'), '');
6662
6663        var n = !isFinite(+number) ? 0 : +number,
6664			s = '',
6665			toFixedFix = function (n, decimals) {
6666			    return '' + (+(Math.round(n + 'e+' + decimals) + 'e-' + decimals));
6667			};
6668
6669        // Fix for IE parseFloat(0.55).toFixed(0) = 0;
6670        s = (decimals ? toFixedFix(n, decimals) : '' + Math.round(n)).split('.');
6671        if (s[0].length > 3) {
6672            s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, thousands_sep);
6673        }
6674        if ((s[1] || '').length < decimals) {
6675            s[1] = s[1] || '';
6676            s[1] += new Array(decimals - s[1].length + 1).join('0');
6677        }
6678        return s.join(dec_point);
6679    }
6680
6681})(jQuery);
6682;
6683if("undefined"==typeof jQuery)throw new Error("BootstrapValidator's JavaScript requires jQuery");!function(a){var b=function(b,c){this.$form=a(b),this.options=a.extend({},a.fn.bootstrapValidator.DEFAULT_OPTIONS,c),this.$invalidFields=a([]),this.$submitButton=null,this.$hiddenButton=null,this.STATUS_NOT_VALIDATED="NOT_VALIDATED",this.STATUS_VALIDATING="VALIDATING",this.STATUS_INVALID="INVALID",this.STATUS_VALID="VALID";var d=function(){for(var a=3,b=document.createElement("div"),c=b.all||[];b.innerHTML="<!--[if gt IE "+ ++a+"]><br><![endif]-->",c[0];);return a>4?a:!a}(),e=document.createElement("div");this._changeEvent=9!==d&&"oninput"in e?"input":"keyup",this._submitIfValid=null,this._cacheFields={},this._init()};b.prototype={constructor:b,_init:function(){var b=this,c={container:this.$form.attr("data-bv-container"),events:{formInit:this.$form.attr("data-bv-events-form-init"),formError:this.$form.attr("data-bv-events-form-error"),formSuccess:this.$form.attr("data-bv-events-form-success"),fieldAdded:this.$form.attr("data-bv-events-field-added"),fieldRemoved:this.$form.attr("data-bv-events-field-removed"),fieldInit:this.$form.attr("data-bv-events-field-init"),fieldError:this.$form.attr("data-bv-events-field-error"),fieldSuccess:this.$form.attr("data-bv-events-field-success"),fieldStatus:this.$form.attr("data-bv-events-field-status"),validatorError:this.$form.attr("data-bv-events-vali
6683dator-error"),validatorSuccess:this.$form.attr("data-bv-events-validator-success")},excluded:this.$form.attr("data-bv-excluded"),feedbackIcons:{valid:this.$form.attr("data-bv-feedbackicons-valid"),invalid:this.$form.attr("data-bv-feedbackicons-invalid"),validating:this.$form.attr("data-bv-feedbackicons-validating")},group:this.$form.attr("data-bv-group"),live:this.$form.attr("data-bv-live"),message:this.$form.attr("data-bv-message"),onError:this.$form.attr("data-bv-onerror"),onSuccess:this.$form.attr("data-bv-onsuccess"),submitButtons:this.$form.attr("data-bv-submitbuttons"),threshold:this.$form.attr("data-bv-threshold"),trigger:this.$form.attr("data-bv-trigger"),verbose:this.$form.attr("data-bv-verbose"),fields:{}};this.$form.attr("novalidate","novalidate").addClass(this.options.elementClass).on("submit.bv",function(a){a.preventDefault(),b.validate()}).on("click.bv",this.options.submitButtons,function(){b.$submitButton=a(this),b._submitIfValid=!0}).find("[name], [data-bv-field]").each(function(){var d=a(this),e=d.attr("name")||d.attr("data-bv-field"),f=b._parseOptions(d);f&&(d.attr("data-bv-field",e),c.fields[e]=a.extend({},f,c.fields[e]))}),this.options=a.extend(!0,this.options,c),this.$hiddenButton=a("<button/>").attr("type","submit").prependTo(this.$form).addClass("bv-hidden-submit").css({display:"none",width:0,height:0}),this.$form.on("click.bv",'[type="submit"]',function(c){if(!c.isDefaultPrevented()){var d=a(c.target),e=d.is('[type="submit"]')?d.eq(0):d.parent('[type="submit"]').eq(0);!b.options.submitButtons||e.is(b.options.submitButtons)||e.is(b.$hiddenButton)||b.$form.off("submit.bv").submit()}});for(var d in this.options.fields)this._initField(d);this.$form.trigger(a.Event(this.options.events.formInit),{bv:this,options:this.options}),this.options.onSuccess&&this.$form.on(this.options.events.formSuccess,function(c){a.fn.bootstrapValidator.helpers.call(b.options.onSuccess,[c])}),this.options.onError&&this.$form.on(this.options.events.formError,function(c){a.fn.bootstrapValidator.helpers.call(b.options.onError,[c])})},_parseOptions:function(b){var c,d,e,f,g,h,i,j=b.attr("name")||b.attr("data-bv-field"),k={};for(d in a.fn.bootstrapValidator.validators)if(c=a.fn.bootstrapValidator.validators[d],e=b.attr("data-bv-"+d.toLowerCase())+"",i="function"==typeof c.enableByHtml5?c.enableByHtml5(b):null,i&&"false"!==e||i!==!0&&(""===e||"true"===e)){c.html5Attributes=a.extend({},{message:"message",onerror:"onError",onsuccess:"onSuccess"},c.html5Attributes),k[d]=a.extend({},i===!0?{}:i,k[d]);for(h in c.html5Attributes)f=c.html5Attributes[h],g=b.attr("data-bv-"+d.toLowerCase()+"-"+h),g&&("true"===g?g=!0:"false"===g&&(g=!1),k[d][f]=g)}var l={container:b.attr("data-bv-container"),excluded:b.attr("data-bv-excluded"),feedbackIcons:b.attr("data-bv-feedbackicons"),group:b.attr("data-bv-group"),message:b.attr("data-bv-message"),onError:b.attr("data-bv-onerror"),onStatus:b.attr("data-bv-onstatus"),onSuccess:b.attr("data-bv-onsuccess"),selector:b.attr("data-bv-selector"),threshold:b.attr("data-bv-threshold"),trigger:b.attr("data-bv-trigger"),verbose:b.attr("data-bv-verbose"),validators:k},m=a.isEmptyObject(l),n=a.isEmptyObject(k);return!n||!m&&this.options.fields&&this.options.fields[j]?(l.validators=k,l):null},_initField:function(b){var c=a([]);switch(typeof b){case"object":c=b,b=b.attr("data-bv-field");break;case"string":c=this.getFieldElements(b),c.attr("data-bv-field",b)}if(0!==c.length&&null!==this.options.fields[b]&&null!==this.options.fields[b].validators){var d;for(d in this.options.fields[b].validators)a.fn.bootstrapValidator.validators[d]||delete this.options.fields[b].validators[d];null===this.options.fields[b].enabled&&(this.options.fields[b].enabled=!0);for(var e=this,f=c.length,g=c.attr("type"),h=1===f||"radio"===g||"checkbox"===g,i="radio"===g||"checkbox"===g||"file"===g||"SELECT"===c.eq(0).get(0).tagName?"change":this._changeEvent,j=(this.options.fields[b].trigger||this.options.trigger||i).split(" "),k=a.map(j,function(a){return a+".update.bv"}).join(" "),l=0;f>l;l++){var m=c.eq(l),n=this.options.fields[b].group||this.options.group,o=m.parents(n),p="function"==typeof(this.options.fields[b].container||this.options.container)?(this.options.fields[b].container||this.options.container).call(this,m,this):this.options.fields[b].container||this.options.container,q=p&&"tooltip"!==p&&"popover"!==p?a(p):this._getMessageContainer(m,n);p&&"tooltip"!==p&&"popover"!==p&&q.addClass("has-error"),q.find('.help-block[data-bv-validator][data-bv-for="'+b+'"]').remove(),o.find('i[data-bv-icon-for="'+b+'"]').remove(),m.off(k).on(k,function(){e.updateStatus(a(this),e.STATUS_NOT_VALIDATED)}),m.data("bv.messages",q);for(d in this.options.fields[b].validators)m.data("bv.result."+d,this.STATUS_NOT_VALIDATED),h&&l!==f-1||a("<small/>").css("display","none").addClass("help-block").attr("data-bv-validator",d).attr("data-bv-for",b).attr("data-bv-result",this.STATUS_NOT_VALIDATED).html(this._getMessage(b,d)).appendTo(q),"function"==typeof a.fn.bootstrapValidator.validators[d].init&&a.fn.bootstrapValidator.validators[d].init(this,m,this.options.fields[b].validators[d]);if(this.options.fields[b].feedbackIcons!==!1&&"false"!==this.options.fields[b].feedbackIcons&&this.options.feedbackIcons&&this.options.feedbackIcons.validating&&this.options.feedbackIcons.invalid&&this.options.feedbackIcons.valid&&(!h||l===f-1)){o.addClass("has-feedback");var r=a("<i/>").css("display","none").addClass("form-control-feedback").attr("data-bv-icon-for",b).insertAfter(m);if("checkbox"===g||"radio"===g){var s=m.parent();s.hasClass(g)?r.insertAfter(s):s.parent().hasClass(g)&&r.insertAfter(s.parent())}0===o.find("label").length&&r.addClass("bv-no-label"),0!==o.find(".input-group").length&&r.addClass("bv-icon-input-group").insertAfter(o.find(".input-group").eq(0)),p&&m.off("focus.bv").on("focus.bv",function(){switch(p){case"tooltip":r.tooltip("show");break;case"popover":r.popover("show")}}).off("blur.bv").on("blur.bv",function(){switch(p){case"tooltip":r.tooltip("hide");break;case"popover":r.popover("hide")}})}}switch(c.on(this.options.events.fieldSuccess,function(b,c){var d=e.getOptions(c.field,null,"onSuccess");d&&a.fn.bootstrapValidator.helpers.call(d,[b,c])}).on(this.options.events.fieldError,function(b,c){var d=e.getOptions(c.field,null,"onError");d&&a.fn.bootstrapValidator.helpers.call(d,[b,c])}).on(this.options.events.fieldStatus,function(b,c){var d=e.getOptions(c.field,null,"onStatus");d&&a.fn.bootstrapValidator.helpers.call(d,[b,c])}).on(this.options.events.validatorError,function(b,c){var d=e.getOptions(c.field,c.validator,"onError");d&&a.fn.bootstrapValidator.helpers.call(d,[b,c])}).on(this.options.events.validatorSuccess,function(b,c){var d=e.getOptions(c.field,c.validator,"onSuccess");d&&a.fn.bootstrapValidator.helpers.call(d,[b,c])}),k=a.map(j,function(a){return a+".live.bv"}).join(" "),this.options.live){case"submitted":break;case"disabled":c.off(k);break;case"enabled":default:c.off(k).on(k,function(){e._exceedThreshold(a(this))&&e.validateField(a(this))})}c.trigger(a.Event(this.options.events.fieldInit),{bv:this,field:b,element:c})}},_getMessage:function(b,c){if(!(this.options.fields[b]&&a.fn.bootstrapValidator.validators[c]&&this.options.fields[b].validators&&this.options.fields[b].validators[c]))return"";var d=this.options.fields[b].validators[c];switch(!0){case!!d.message:return d.message;case!!this.options.fields[b].message:return this.options.fields[b].message;case!!a.fn.bootstrapValidator.i18n[c]:return a.fn.bootstrapValidator.i18n[c]["default"];default:return this.options.message}},_getMessageContainer:function(a,b){var c=a.parent();if(c.is(b))return c;var d=c.attr("class");if(!d)return this._getMessageContainer(c,b);d=d.split(" ");for(var e=d.length,f=0;e>f;f++)if(/^col-(xs|sm|md|lg)-\d+$/.test(d[f])||/^col-(xs|sm|md|lg)-offset-\d+$/.test(d[f]))return c;return this._getMessageContainer(c,b)},_submit:function(){var b=this.isValid(),c=b?this.options.events.formSuccess:this.options.events.formError,d=a.Event(c);this.$form.trigger(d),this.$submitButton&&(b?this._onSuccess(d):this._onError(d))},_isExcluded:function(b){var c=b.attr("data-bv-excluded"),d=b.attr("data-bv-field")||b.attr("name");switch(!0){case!!d&&this.options.fields&&this.options.fields[d]&&("true"===this.options.fields[d].excluded||this.options.fields[d].excluded===!0):case"true"===c:case""===c:return!0;case!!d&&this.options.fields&&this.options.fields[d]&&("false"===this.options.fields[d].excluded||this.options.fields[d].excluded===!1):case"false"===c:return!1;default:if(this.options.excluded){"string"==typeof this.options.excluded&&(this.options.excluded=a.map(this.options.excluded.split(","),function(b){return a.trim(b)}));for(var e=this.options.excluded.length,f=0;e>f;f++)if("string"==typeof this.options.excluded[f]&&b.is(this.options.excluded[f])||"function"==typeof this.options.excluded[f]&&this.options.excluded[f].call(this,b,this)===!0)return!0}return!1}},_exceedThreshold:function(b){var c=b.attr("data-bv-field"),d=this.options.fields[c].threshold||this.options.threshold;if(!d)return!0;var e=-1!==a.inArray(b.attr("type"),["button","checkbox","file","hidden","image","radio","reset","submit"]);return e||b.val().length>=d}
6683,_onError:function(b){if(!b.isDefaultPrevented()){if("submitted"===this.options.live){this.options.live="enabled";var c=this;for(var d in this.options.fields)!function(b){var e=c.getFieldElements(b);if(e.length){var f=a(e[0]).attr("type"),g="radio"===f||"checkbox"===f||"file"===f||"SELECT"===a(e[0]).get(0).tagName?"change":c._changeEvent,h=c.options.fields[d].trigger||c.options.trigger||g,i=a.map(h.split(" "),function(a){return a+".live.bv"}).join(" ");e.off(i).on(i,function(){c._exceedThreshold(a(this))&&c.validateField(a(this))})}}(d)}var e=this.$invalidFields.eq(0);if(e){var f,g=e.parents(".tab-pane");g&&(f=g.attr("id"))&&a('a[href="#'+f+'"][data-toggle="tab"]').tab("show"),e.focus()}}},_onSuccess:function(a){a.isDefaultPrevented()||this.disableSubmitButtons(!0).defaultSubmit()},_onFieldValidated:function(b,c){var d=b.attr("data-bv-field"),e=this.options.fields[d].validators,f={},g=0,h={bv:this,field:d,element:b,validator:c,result:b.data("bv.response."+c)};if(c)switch(b.data("bv.result."+c)){case this.STATUS_INVALID:b.trigger(a.Event(this.options.events.validatorError),h);break;case this.STATUS_VALID:b.trigger(a.Event(this.options.events.validatorSuccess),h)}f[this.STATUS_NOT_VALIDATED]=0,f[this.STATUS_VALIDATING]=0,f[this.STATUS_INVALID]=0,f[this.STATUS_VALID]=0;for(var i in e)if(e[i].enabled!==!1){g++;var j=b.data("bv.result."+i);j&&f[j]++}f[this.STATUS_VALID]===g?(this.$invalidFields=this.$invalidFields.not(b),b.trigger(a.Event(this.options.events.fieldSuccess),h)):0===f[this.STATUS_NOT_VALIDATED]&&0===f[this.STATUS_VALIDATING]&&f[this.STATUS_INVALID]>0&&(this.$invalidFields=this.$invalidFields.add(b),b.trigger(a.Event(this.options.events.fieldError),h))},getFieldElements:function(b){return this._cacheFields[b]||(this._cacheFields[b]=this.options.fields[b]&&this.options.fields[b].selector?a(this.options.fields[b].selector):this.$form.find('[name="'+b+'"]')),this._cacheFields[b]},getOptions:function(a,b,c){if(!a)return this.options;if("object"==typeof a&&(a=a.attr("data-bv-field")),!this.options.fields[a])return null;var d=this.options.fields[a];return b?d.validators&&d.validators[b]?c?d.validators[b][c]:d.validators[b]:null:c?d[c]:d},disableSubmitButtons:function(a){return a?"disabled"!==this.options.live&&this.$form.find(this.options.submitButtons).attr("disabled","disabled"):this.$form.find(this.options.submitButtons).removeAttr("disabled"),this},validate:function(){if(!this.options.fields)return this;this.disableSubmitButtons(!0);for(var a in this.options.fields)this.validateField(a);return this._submit(),this},validateField:function(b){var c=a([]);switch(typeof b){case"object":c=b,b=b.attr("data-bv-field");break;case"string":c=this.getFieldElements(b)}if(0===c.length||this.options.fields[b]&&this.options.fields[b].enabled===!1)return this;for(var d,e,f=this,g=c.attr("type"),h="radio"===g||"checkbox"===g?1:c.length,i="radio"===g||"checkbox"===g,j=this.options.fields[b].validators,k="true"===this.options.fields[b].verbose||this.options.fields[b].verbose===!0||"true"===this.options.verbose||this.options.verbose===!0,l=0;h>l;l++){var m=c.eq(l);if(!this._isExcluded(m)){var n=!1;for(d in j){if(m.data("bv.dfs."+d)&&m.data("bv.dfs."+d).reject(),n)break;var o=m.data("bv.result."+d);if(o!==this.STATUS_VALID&&o!==this.STATUS_INVALID)if(j[d].enabled!==!1){if(m.data("bv.result."+d,this.STATUS_VALIDATING),e=a.fn.bootstrapValidator.validators[d].validate(this,m,j[d]),"object"==typeof e&&e.resolve)this.updateStatus(i?b:m,this.STATUS_VALIDATING,d),m.data("bv.dfs."+d,e),e.done(function(a,b,c){a.removeData("bv.dfs."+b).data("bv.response."+b,c),c.message&&f.updateMessage(a,b,c.message),f.updateStatus(i?a.attr("data-bv-field"):a,c.valid?f.STATUS_VALID:f.STATUS_INVALID,b),c.valid&&f._submitIfValid===!0?f._submit():c.valid||k||(n=!0)});else if("object"==typeof e&&void 0!==e.valid&&void 0!==e.message){if(m.data("bv.response."+d,e),this.updateMessage(i?b:m,d,e.message),this.updateStatus(i?b:m,e.valid?this.STATUS_VALID:this.STATUS_INVALID,d),!e.valid&&!k)break}else if("boolean"==typeof e&&(m.data("bv.response."+d,e),this.updateStatus(i?b:m,e?this.STATUS_VALID:this.STATUS_INVALID,d),!e&&!k))break}else this.updateStatus(i?b:m,this.STATUS_VALID,d);else this._onFieldValidated(m,d)}}}return this},updateMessage:function(b,c,d){var e=a([]);switch(typeof b){case"object":e=b,b=b.attr("data-bv-field");break;case"string":e=this.getFieldElements(b)}e.each(function(){a(this).data("bv.messages").find('.help-block[data-bv-validator="'+c+'"][data-bv-for="'+b+'"]').html(d)})},updateStatus:function(b,c,d){var e=a([]);switch(typeof b){case"object":e=b,b=b.attr("data-bv-field");break;case"string":e=this.getFieldElements(b)}c===this.STATUS_NOT_VALIDATED&&(this._submitIfValid=!1);for(var f=this,g=e.attr("type"),h=this.options.fields[b].group||this.options.group,i="radio"===g||"checkbox"===g?1:e.length,j=0;i>j;j++){var k=e.eq(j);if(!this._isExcluded(k)){var l=k.parents(h),m=k.data("bv.messages"),n=m.find('.help-block[data-bv-validator][data-bv-for="'+b+'"]'),o=d?n.filter('[data-bv-validator="'+d+'"]'):n,p=l.find('.form-control-feedback[data-bv-icon-for="'+b+'"]'),q="function"==typeof(this.options.fields[b].container||this.options.container)?(this.options.fields[b].container||this.options.container).call(this,k,this):this.options.fields[b].container||this.options.container,r=null;if(d)k.data("bv.result."+d,c);else for(var s in this.options.fields[b].validators)k.data("bv.result."+s,c);o.attr("data-bv-result",c);var t,u,v=k.parents(".tab-pane");switch(v&&(t=v.attr("id"))&&(u=a('a[href="#'+t+'"][data-toggle="tab"]').parent()),c){case this.STATUS_VALIDATING:r=null,this.disableSubmitButtons(!0),l.removeClass("has-success").removeClass("has-error"),p&&p.removeClass(this.options.feedbackIcons.valid).removeClass(this.options.feedbackIcons.invalid).addClass(this.options.feedbackIcons.validating).show(),u&&u.removeClass("bv-tab-success").removeClass("bv-tab-error");break;case this.STATUS_INVALID:r=!1,this.disableSubmitButtons(!0),l.removeClass("has-success").addClass("has-error"),p&&p.removeClass(this.options.feedbackIcons.valid).removeClass(this.options.feedbackIcons.validating).addClass(this.options.feedbackIcons.invalid).show(),u&&u.removeClass("bv-tab-success").addClass("bv-tab-error");break;case this.STATUS_VALID:r=0===n.filter('[data-bv-result="'+this.STATUS_NOT_VALIDATED+'"]').length?n.filter('[data-bv-result="'+this.STATUS_VALID+'"]').length===n.length:null,null!==r&&(this.disableSubmitButtons(this.$submitButton?!this.isValid():!r),p&&p.removeClass(this.options.feedbackIcons.invalid).removeClass(this.options.feedbackIcons.validating).removeClass(this.options.feedbackIcons.valid).addClass(r?this.options.feedbackIcons.valid:this.options.feedbackIcons.invalid).show()),l.removeClass("has-error has-success").addClass(this.isValidContainer(l)?"has-success":"has-error"),u&&u.removeClass("bv-tab-success").removeClass("bv-tab-error").addClass(this.isValidContainer(v)?"bv-tab-success":"bv-tab-error");break;case this.STATUS_NOT_VALIDATED:default:r=null,this.disableSubmitButtons(!1),l.removeClass("has-success").removeClass("has-error"),p&&p.removeClass(this.options.feedbackIcons.valid).removeClass(this.options.feedbackIcons.invalid).removeClass(this.options.feedbackIcons.validating).hide(),u&&u.removeClass("bv-tab-success").removeClass("bv-tab-error")}switch(!0){case p&&"tooltip"===q:r===!1?p.css("cursor","pointer").tooltip("destroy").tooltip({container:"body",html:!0,placement:"top",title:n.filter('[data-bv-result="'+f.STATUS_INVALID+'"]').eq(0).html()}):p.tooltip("hide");break;case p&&"popover"===q:r===!1?p.css("cursor","pointer").popover("destroy").popover({container:"body",content:n.filter('[data-bv-result="'+f.STATUS_INVALID+'"]').eq(0).html(),html:!0,placement:"top",trigger:"hover click"}):p.popover("hide");break;default:c===this.STATUS_INVALID?o.show():o.hide()}k.trigger(a.Event(this.options.events.fieldStatus),{bv:this,field:b,element:k,status:c}),this._onFieldValidated(k,d)}}return this},isValid:function(){for(var a in this.options.fields)if(!this.isValidField(a))return!1;return!0},isValidField:function(b){var c=a([]);switch(typeof b){case"object":c=b,b=b.attr("data-bv-field");break;case"string":c=this.getFieldElements(b)}if(0===c.length||null===this.options.fields[b]||this.options.fields[b].enabled===!1)return!0;for(var d,e,f,g=c.attr("type"),h="radio"===g||"checkbox"===g?1:c.length,i=0;h>i;i++)if(d=c.eq(i),!this._isExcluded(d))for(e in this.options.fields[b].validators)if(this.options.fields[b].validators[e].enabled!==!1&&(f=d.data("bv.result."+e),f!==this.STATUS_VALID))return!1;return!0},isValidContainer:function(b){var c=this,d={},e="string"==typeof b?a(b):b;if(0===e.length)return!0;e.find("[data-bv-field]").each(function(){var b=a(this),e=b.attr("data-bv-field");c._isExcluded(b)||d[e]||(d[e]=b)});for(var f in d){var g=d[f];if(g.data("bv.messages").find('.help-block[data-bv-validator][data-bv-for="'+f+'"]').filter('[data-bv-result="'+this.STATUS_INVALID+'"]').length>0)return!1}return!0},defaultSubmit:function(){this.$submitButton&&a("<input/>").attr("type","hidden").attr("data-bv-submit-hidden","").attr("name",this.$submitButton.attr("name")).val(this.$submitButton.val()).appendTo(this.$form),this.$form.off("submit.bv").submit()},getInvalidFields:function(){return this.$invalidFields},getSubmitButton:function(){return this.$submitButton},getMessages:function(b,c){var d=this,e=[],f=a([]);switch(!0){case b&&"object"==typeof b:f=b;break;case b&&"string"==typeof b:var g=this.getFieldElements(b);if(g.length>0){var h=g.attr("type");f="radio"===h||"checkbox"===h?g.eq(0):g}break;default:f=this.$invalidFields}var i=c?'[data-bv-validator="'+c+'"]':"";return f.each(function(){e=e.concat(a(this).data("bv.messages").find('.help-block[data-bv-for="'+a(this).attr("data-bv-field")+'"][data-bv-result="'+d.STATUS_INVALID+'"]'+i).map(function(){var b=a(this).attr("data-bv-validator"),c=a(this).attr("data-bv-for");return d.options.fields[c].validators[b].enabled===!1?"":a(this).html()}).get())}),e},updateOption:function(a,b,c,d){return"object"==typeof a&&(a=a.attr("data-bv-field")),this.options.fields[a]&&this.options.fields[a].validators[b]&&(this.options.fields[a].validators[b][c]=d,this.updateStatus(a,this.STATUS_NOT_VALIDATED,b)),this},addField:function(b,c){var d=a([]);switch(typeof b){case"object":d=b,b=b.attr("data-bv-field")||b.attr("name");break;case"string":delete this._cacheFields[b],d=this.getFieldElements(b)}d.attr("data-bv-field",b);for(var e=d.attr("type"),f="radio"===e||"checkbox"===e?1:d.length,g=0;f>g;g++){var h=d.eq(g),i=this._parseOptions(h);i=null===i?c:a.extend(!0,c,i),this.options.fields[b]=a.extend(!0,this.options.fields[b],i),this._cacheFields[b]=this._cacheFields[b]?this._cacheFields[b].add(h):h,this._initField("checkbox"===e||"radio"===e?b:h)}return this.disableSubmitButtons(!1),this.$form.trigger(a.Event(this.options.events.fieldAdded),{field:b,element:d,options:this.options.fields[b]}),this},removeField:function(b){var c=a([]);switch(typeof b){case"object":c=b,b=b.attr("data-bv-field")||b.attr("name"),c.attr("data-bv-field",b);break;case"string":c=this.getFieldElements(b)}if(0===c.length)return this;for(var d=c.attr("type"),e="radio"===d||"checkbox"===d?1:c.length,f=0;e>f;f++){var g=c.eq(f);this.$invalidFields=this.$invalidFields.not(g),this._cacheFields[b]=this._cacheFields[b].not(g)}return this._cacheFields[b]&&0!==this._cacheFields[b].length||delete this.options.fields[b],("checkbox"===d||"radio"===d)&&this._initField(b),this.disableSubmitButtons(!1),this.$form.trigger(a.Event(this.options.events.fieldRemoved),{field:b,element:c}),this},resetField:function(b,c){var d=a([]);switch(typeof b){case"object":d=b,b=b.attr("data-bv-field");break;case"string":d=this.getFieldElements(b)}var e=d.length;if(this.options.fields[b])for(var f=0;e>f;f++)for(var g in this.options.fields[b].validators)d.eq(f).removeData("bv.dfs."+g);if(this.updateStatus(b,this.STATUS_NOT_VALIDATED),c){var h=d.attr("type");"radio"===h||"checkbox"===h?d.removeAttr("checked").removeAttr("selected"):d.val("")}return this},resetForm:function(b){for(var c in this.options.fields)this.resetField(c,b);return this.$invalidFields=a([]),this.$submitButton=null,this.disableSubmitButtons(!1),this},revalidateField:function(a){return this.updateStatus(a,this.STATUS_NOT_VALIDATED).validateField(a),this},enableFieldValidators:function(a,b,c){var d=this.options.fields[a].validators;if(c&&d&&d[c]&&d[c].enabled!==b)this.options.fields[a].validators[c].enabled=b,this.updateStatus(a,this.STATUS_NOT_VALIDATED,c);else if(!c&&this.options.fields[a].enabled!==b){this.options.fields[a].enabled=b;
6683for(var e in d)this.enableFieldValidators(a,b,e)}return this},getDynamicOption:function(b,c){var d="string"==typeof b?this.getFieldElements(b):b,e=d.val();if("function"==typeof c)return a.fn.bootstrapValidator.helpers.call(c,[e,this,d]);if("string"==typeof c){var f=this.getFieldElements(c);return f.length?f.val():a.fn.bootstrapValidator.helpers.call(c,[e,this,d])||c}return null},destroy:function(){var b,c,d,e,f,g;for(b in this.options.fields){c=this.getFieldElements(b),g=this.options.fields[b].group||this.options.group;for(var h=0;h<c.length;h++){if(d=c.eq(h),d.data("bv.messages").find('.help-block[data-bv-validator][data-bv-for="'+b+'"]').remove().end().end().removeData("bv.messages").parents(g).removeClass("has-feedback has-error has-success").end().off(".bv").removeAttr("data-bv-field"),f=d.parents(g).find('i[data-bv-icon-for="'+b+'"]')){var i="function"==typeof(this.options.fields[b].container||this.options.container)?(this.options.fields[b].container||this.options.container).call(this,d,this):this.options.fields[b].container||this.options.container;switch(i){case"tooltip":f.tooltip("destroy").remove();break;case"popover":f.popover("destroy").remove();break;default:f.remove()}}for(e in this.options.fields[b].validators)d.data("bv.dfs."+e)&&d.data("bv.dfs."+e).reject(),d.removeData("bv.result."+e).removeData("bv.response."+e).removeData("bv.dfs."+e),"function"==typeof a.fn.bootstrapValidator.validators[e].destroy&&a.fn.bootstrapValidator.validators[e].destroy(this,d,this.options.fields[b].validators[e])}}this.disableSubmitButtons(!1),this.$hiddenButton.remove(),this.$form.removeClass(this.options.elementClass).off(".bv").removeData("bootstrapValidator").find("[data-bv-submit-hidden]").remove().end().find('[type="submit"]').off("
6683click.bv")}},a.fn.bootstrapValidator=function(c){var d=arguments;return this.each(function(){var e=a(this),f=e.data("bootstrapValidator"),g="object"==typeof c&&c;f||(f=new b(this,g),e.data("bootstrapValidator",f)),"string"==typeof c&&f[c].apply(f,Array.prototype.slice.call(d,1))})},a.fn.bootstrapValidator.DEFAULT_OPTIONS={elementClass:"bv-form",message:"This value is not valid",group:".form-group",container:null,threshold:null,excluded:[":disabled",":hidden",":not(:visible)"],feedbackIcons:{valid:null,invalid:null,validating:null},submitButtons:'[type="submit"]',live:"enabled",fields:null,events:{formInit:"init.form.bv",formError:"error.form.bv",formSuccess:"success.form.bv",fieldAdded:"added.field.bv",fieldRemoved:"removed.field.bv",fieldInit:"init.field.bv",fieldError:"error.field.bv",fieldSuccess:"success.field.bv",fieldStatus:"status.field.bv",validatorError:"error.validator.bv",validatorSuccess:"success.validator.bv"},verbose:!0},a.fn.bootstrapValidator.validators={},a.fn.bootstrapValidator.i18n={},a.fn.bootstrapValidator.Constructor=b,a.fn.bootstrapValidator.helpers={call:function(a,b){if("function"==typeof a)return a.apply(this,b);if("string"==typeof a){"()"===a.substring(a.length-2)&&(a=a.substring(0,a.length-2));for(var c=a.split("."),d=c.pop(),e=window,f=0;f<c.length;f++)e=e[c[f]];return"undefined"==typeof e[d]?null:e[d].apply(this,b)}},format:function(b,c){a.isArray(c)||(c=[c]);for(var d in c)b=b.replace("%s",c[d]);return b},date:function(a,b,c,d){if(isNaN(a)||isNaN(b)||isNaN(c))return!1;if(c.length>2||b.length>2||a.length>4)return!1;if(c=parseInt(c,10),b=parseInt(b,10),a=parseInt(a,10),1e3>a||a>9999||0>=b||b>12)return!1;var e=[31,28,31,30,31,30,31,31,30,31,30,31];if((a%400===0||a%100!==0&&a%4===0)&&(e[1]=29),0>=c||c>e[b-1])return!1;if(d===!0){var f=new Date,g=f.getFullYear(),h=f.getMonth(),i=f.getDate();return g>a||a===g&&h>b-1||a===g&&b-1===h&&i>c}return!0},luhn:function(a){for(var b=a.length,c=0,d=[[0,1,2,3,4,5,6,7,8,9],[0,2,4,6,8,1,3,5,7,9]],e=0;b--;)e+=d[c][parseInt(a.charAt(b),10)],c^=1;return e%10===0&&e>0},mod11And10:function(a){for(var b=5,c=a.length,d=0;c>d;d++)b=(2*(b||10)%11+parseInt(a.charAt(d),10))%10;return 1===b},mod37And36:function(a,b){b=b||"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";for(var c=b.length,d=a.length,e=Math.floor(c/2),f=0;d>f;f++)e=(2*(e||c)%(c+1)+b.indexOf(a.charAt(f)))%c;return 1===e}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.base64=a.extend(a.fn.bootstrapValidator.i18n.base64||{},{"default":"Please enter a valid base 64 encoded"}),a.fn.bootstrapValidator.validators.base64={validate:function(a,b){var c=b.val();return""===c?!0:/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})$/.test(c)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.between=a.extend(a.fn.bootstrapValidator.i18n.between||{},{"default":"Please enter a value between %s and %s",notInclusive:"Please enter a value between %s and %s strictly"}),a.fn.bootstrapValidator.validators.between={html5Attributes:{message:"message",min:"min",max:"max",inclusive:"inclusive"},enableByHtml5:function(a){return"range"===a.attr("type")?{min:a.attr("min"),max:a.attr("max")}:!1},validate:function(b,c,d){var e=c.val();if(""===e)return!0;if(!a.isNumeric(e))return!1;var f=a.isNumeric(d.min)?d.min:b.getDynamicOption(c,d.min),g=a.isNumeric(d.max)?d.max:b.getDynamicOption(c,d.max);return e=parseFloat(e),d.inclusive===!0||void 0===d.inclusive?{valid:e>=f&&g>=e,message:a.fn.bootstrapValidator.helpers.format(d.message||a.fn.bootstrapValidator.i18n.between["default"],[f,g])}:{valid:e>f&&g>e,message:a.fn.bootstrapValidator.helpers.format(d.message||a.fn.bootstrapValidator.i18n.between.notInclusive,[f,g])}}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.blank={validate:function(){return!0}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.callback=a.extend(a.fn.bootstrapValidator.i18n.callback||{},{"default":"Please enter a valid value"}),a.fn.bootstrapValidator.validators.callback={html5Attributes:{message:"message",callback:"callback"},validate:function(b,c,d){var e=c.val(),f=new a.Deferred,g={valid:!0};if(d.callback){var h=a.fn.bootstrapValidator.helpers.call(d.callback,[e,b,c]);g="boolean"==typeof h?{valid:h}:h}return f.resolve(c,"callback",g),f}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.choice=a.extend(a.fn.bootstrapValidator.i18n.choice||{},{"default":"Please enter a valid value",less:"Please choose %s options at minimum",more:"Please choose %s options at maximum",between:"Please choose %s - %s options"}),a.fn.bootstrapValidator.validators.choice={html5Attributes:{message:"message",min:"min",max:"max"},validate:function(b,c,d){var e=c.is("select")?b.getFieldElements(c.attr("data-bv-field")).find("option").filter(":selected").length:b.getFieldElements(c.attr("data-bv-field")).filter(":checked").length,f=d.min?a.isNumeric(d.min)?d.min:b.getDynamicOption(c,d.min):null,g=d.max?a.isNumeric(d.max)?d.max:b.getDynamicOption(c,d.max):null,h=!0,i=d.message||a.fn.bootstrapValidator.i18n.choice["default"];switch((f&&e<parseInt(f,10)||g&&e>parseInt(g,10))&&(h=!1),!0){case!!f&&!!g:i=a.fn.bootstrapValidator.helpers.format(d.message||a.fn.bootstrapValidator.i18n.choice.between,[parseInt(f,10),parseInt(g,10)]);break;case!!f:i=a.fn.bootstrapValidator.helpers.format(d.message||a.fn.bootstrapValidator.i18n.choice.less,parseInt(f,10));break;case!!g:i=a.fn.bootstrapValidator.helpers.format(d.message||a.fn.bootstrapValidator.i18n.choice.more,parseInt(g,10))}return{valid:h,message:i}}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.creditCard=a.extend(a.fn.bootstrapValidator.i18n.creditCard||{},{"default":"Please enter a valid credit card number"}),a.fn.bootstrapValidator.validators.creditCard={validate:function(b,c){var d=c.val();if(""===d)return!0;
vendor: 6,135 bytes, lines 6683-6684
6683if(/[^0-9-\s]+/.test(d))return!1;if(d=d.replace(/\D/g,""),!a.fn.bootstrapValidator.helpers.luhn(d))return!1;var e,f,g={AMERICAN_EXPRESS:{length:[15],prefix:["34","37"]},DINERS_CLUB:{length:[14],prefix:["300","301","302","303","304","305","36"]},DINERS_CLUB_US:{length:[16],prefix:["54","55"]},DISCOVER:{length:[16],prefix:["6011","622126","622127","622128","622129","62213","62214","62215","62216","62217","62218","62219","6222","6223","6224","6225","6226","6227","6228","62290","62291","622920","622921","622922","622923","622924","622925","644","645","646","647","648","649","65"]},JCB:{length:[16],prefix:["3528","3529","353","354","355","356","357","358"]},LASER:{length:[16,17,18,19],prefix:["6304","6706","6771","6709"]},MAESTRO:{length:[12,13,14,15,16,17,18,19],prefix:["5018","5020","5038","6304","6759","6761","6762","6763","6764","6765","6766"]},MASTERCARD:{length:[16],prefix:["51","52","53","54","55"]},SOLO:{length:[16,18,19],prefix:["6334","6767"]},UNIONPAY:{length:[16,17,18,19],prefix:["622126","622127","622128","622129","62213","62214","62215","62216","62217","62218","62219","6222","6223","6224","6225","6226","6227","6228","62290","62291","622920","622921","622922","622923","622924","622925"]},VISA:{length:[16],prefix:["4"]}};
6684for(e in g)for(f in g[e].prefix)if(d.substr(0,g[e].prefix[f].length)===g[e].prefix[f]&&-1!==a.inArray(d.length,g[e].length))return!0;return!1}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.cusip=a.extend(a.fn.bootstrapValidator.i18n.cusip||{},{"default":"Please enter a valid CUSIP number"}),a.fn.bootstrapValidator.validators.cusip={validate:function(b,c){var d=c.val();if(""===d)return!0;if(d=d.toUpperCase(),!/^[0-9A-Z]{9}$/.test(d))return!1;for(var e=a.map(d.split(""),function(a){var b=a.charCodeAt(0);return b>="A".charCodeAt(0)&&b<="Z".charCodeAt(0)?b-"A".charCodeAt(0)+10:a}),f=e.length,g=0,h=0;f-1>h;h++){var i=parseInt(e[h],10);h%2!==0&&(i*=2),i>9&&(i-=9),g+=i}return g=(10-g%10)%10,g===e[f-1]}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.cvv=a.extend(a.fn.bootstrapValidator.i18n.cvv||{},{"default":"Please enter a valid CVV number"}),a.fn.bootstrapValidator.validators.cvv={html5Attributes:{message:"message",ccfield:"creditCardField"},validate:function(b,c,d){var e=c.val();if(""===e)return!0;if(!/^[0-9]{3,4}$/.test(e))return!1;if(!d.creditCardField)return!0;var f=b.getFieldElements(d.creditCardField).val();if(""===f)return!0;f=f.replace(/\D/g,"");var g,h,i={AMERICAN_EXPRESS:{length:[15],prefix:["34","37"]},DINERS_CLUB:{length:[14],prefix:["300","301","302","303","304","305","36"]},DINERS_CLUB_US:{length:[16],prefix:["54","55"]},DISCOVER:{length:[16],prefix:["6011","622126","622127","622128","622129","62213","62214","62215","62216","62217","62218","62219","6222","6223","6224","6225","6226","6227","6228","62290","62291","622920","622921","622922","622923","622924","622925","644","645","646","647","648","649","65"]},JCB:{length:[16],prefix:["3528","3529","353","354","355","356","357","358"]},LASER:{length:[16,17,18,19],prefix:["6304","6706","6771","6709"]},MAESTRO:{length:[12,13,14,15,16,17,18,19],prefix:["5018","5020","5038","6304","6759","6761","6762","6763","6764","6765","6766"]},MASTERCARD:{length:[16],prefix:["51","52","53","54","55"]},SOLO:{length:[16,18,19],prefix:["6334","6767"]},UNIONPAY:{length:[16,17,18,19],prefix:["622126","622127","622128","622129","62213","62214","62215","62216","62217","62218","62219","6222","6223","6224","6225","6226","6227","6228","62290","62291","622920","622921","622922","622923","622924","622925"]},VISA:{length:[16],prefix:["4"]}},j=null;for(g in i)for(h in i[g].prefix)if(f.substr(0,i[g].prefix[h].length)===i[g].prefix[h]&&-1!==a.inArray(f.length,i[g].length)){j=g;break}return null===j?!1:"AMERICAN_EXPRESS"===j?4===e.length:3===e.length}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.date=a.extend(a.fn.bootstrapValidator.i18n.date||{},{"default":"Please enter a valid date"}),a.fn.bootstrapValidator.validators.date={html5Attributes:{message:"message",format:"format",separator:"separator"},validate:function(b,c,d){var e=c.val();if(""===e)return!0;d.format=d.format||"MM/DD/YYYY","date"===c.attr("type")&&(d.format="YYYY-MM-DD");var f=d.format.split(" "),g=f[0],h=f.length>1?f[1]:null,i=f.length>2?f[2]:null,j=e.split(" "),k=j[0],l=j.length>1?j[1]:null;if(f.length!==j.length)return!1;var m=d.separator;if(m||(m=-1!==k.indexOf("/")?"/":-1!==k.indexOf("-")?"-":null),null===m||-1===k.indexOf(m))return!1;if(k=k.split(m),g=g.split(m),k.length!==g.length)return!1;var n=k[a.inArray("YYYY",g)],o=k[a.inArray("MM",g)],p=k[a.inArray("DD",g)];if(!n||!o||!p||4!==n.length)return!1;var q=null,r=null,s=null;if(h){if(h=h.split(":"),l=l.split(":"),h.length!==l.length)return!1;if(r=l.length>0?l[0]:null,q=l.length>1?l[1]:null,s=l.length>2?l[2]:null){if(isNaN(s)||s.length>2)return!1;if(s=parseInt(s,10),0>s||s>60)return!1}if(r){if(isNaN(r)||r.length>2)return!1;if(r=parseInt(r,10),0>r||r>=24||i&&r>12)return!1}if(q){if(isNaN(q)||q.length>2)return!1;if(q=parseInt(q,10),0>q||q>59)return!1}}return a.fn.bootstrapValidator.helpers.date(n,o,p)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.different=a.extend(a.fn.bootstrapValidator.i18n.different||{},{"default":"Please enter a different value"}),a.fn.bootstrapValidator.validators.different={html5Attributes:{message:"message",field:"field"},validate:function(a,b,c){var d=b.val();if(""===d)return!0;for(var e=c.field.split(","),f=!0,g=0;g<e.length;g++){var h=a.getFieldElements(e[g]);if(null!=h&&0!==h.length){var i=h.val();d===i?f=!1:""!==i&&a.updateStatus(h,a.STATUS_VALID,"different")}}return f}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.digits=a.extend(a.fn.bootstrapValidator.i18n.digits||{},{"default":"Please enter only digits"}),a.fn.bootstrapValidator.validators.digits={validate:function(a,b){var c=b.val();return""===c?!0:/^\d+$/.test(c)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.ean=a.extend(a.fn.bootstrapValidator.i18n.ean||{},{"default":"Please enter a valid EAN number"}),a.fn.bootstrapValidator.validators.ean={validate:function(a,b){var c=b.val();if(""===c)return!0;
6684if(!/^(\d{8}|\d{12}|\d{13})$/.test(c))return!1;for(var d=c.length,e=0,f=8===d?[3,1]:[1,3],g=0;d-1>g;g++)e+=parseInt(c.charAt(g),10)*f[g%2];return e=(10-e%10)%10,e+""===c.charAt(d-1)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.emailAddress=a.extend(a.fn.bootstrapValidator.i18n.emailAddress||{},{"default":"Please enter a valid email address"}),a.fn.bootstrapValidator.validators.emailAddress={html5Attributes:{message:"message",multiple:"multiple",separator:"separator"},enableByHtml5:function(a){return"email"===a.attr("type")},validate:function(a,b,c){var d=b.val();if(""===d)return!0;var e=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,f=c.multiple===!0||"true"===c.multiple;if(f){for(var g=c.separator||/[,;]/,h=this._splitEmailAddresses(d,g),i=0;i<h.length;i++)if(!e.test(h[i]))return!1;return!0}return e.test(d)},_splitEmailAddresses:function(a,b){for(var c=a.split(/"/),d=c.length,e=[],f="",g=0;d>g;g++)if(g%2===0){var h=c[g].split(b),i=h.length;if(1===i)f+=h[0];else{e.push(f+h[0]);for(var j=1;i-1>j;j++)e.push(h[j]);f=h[i-1]}}else f+='"'+c[g],d-1>g&&(f+='"');return e.push(f),e}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.file=a.extend(a.fn.bootstrapValidator.i18n.file||{},{"default":"Please choose a valid file"}),a.fn.bootstrapValidator.validators.file={html5Attributes:{extension:"extension",maxsize:"maxSize",minsize:"minSize",message:"message",type:"type"},validate:function(b,c,d){var e=c.val();if(""===e)return!0;var f,g=d.extension?d.extension.toLowerCase().split(","):null,h=d.type?d.type.toLowerCase().split(","):null,i=window.File&&window.FileList&&window.FileReader;if(i)for(var j=c.get(0).files,k=j.length,l=0;k>l;l++){if(d.minSize&&j[l].size<parseInt(d.minSize,10))return!1;if(d.maxSize&&j[l].size>parseInt(d.maxSize,10))return!1;if(f=j[l].name.substr(j[l].name.lastIndexOf(".")+1),g&&-1===a.inArray(f.toLowerCase(),g))return!1;if(j[l].type&&h&&-1===a.inArray(j[l].type.toLowerCase(),h))return!1}else if(f=e.substr(e.lastIndexOf(".")+1),g&&-1===a.inArray(f.toLowerCase(),g))return!1;return!0}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.greaterThan=a.extend(a.fn.bootstrapValidator.i18n.greaterThan||{},{"default":"Please enter a value greater than or equal to %s",notInclusive:"Please enter a value greater than %s"}),a.fn.bootstrapValidator.validators.greaterThan={html5Attributes:{message:"message",value:"value",inclusive:"inclusive"},enableByHtml5:function(a){var b=a.attr("type"),c=a.attr("min");return c&&"date"!==b?{value:c}:!1},validate:function(b,c,d){var e=c.val();if(""===e)return!0;if(!a.isNumeric(e))return!1;var f=a.isNumeric(d.value)?d.value:b.getDynamicOption(c,d.value);return e=parseFloat(e),d.inclusive===!0||void 0===d.inclusive?{valid:e>=f,message:a.fn.bootstrapValidator.helpers.format(d.message||a.fn.bootstrapValidator.i18n.greaterThan["default"],f)}:{valid:e>f,message:a.fn.bootstrapValidator.helpers.format(d.message||a.fn.bootstrapValidator.i18n.greaterThan.notInclusive,f)}}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.grid=a.extend(a.fn.bootstrapValidator.i18n.grid||{},{"default":"Please enter a valid GRId number"}),a.fn.bootstrapValidator.validators.grid={validate:function(b,c){var d=c.val();return""===d?!0:(d=d.toUpperCase(),/^[GRID:]*([0-9A-Z]{2})[-\s]*([0-9A-Z]{5})[-\s]*([0-9A-Z]{10})[-\s]*([0-9A-Z]{1})$/g.test(d)?(d=d.replace(/\s/g,"").replace(/-/g,""),"GRID:"===d.substr(0,5)&&(d=d.substr(5)),a.fn.bootstrapValidator.helpers.mod37And36(d)):!1)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.hex=a.extend(a.fn.bootstrapValidator.i18n.hex||{},{"default":"Please enter a valid hexadecimal number"}),a.fn.bootstrapValidator.validators.hex={validate:function(a,b){var c=b.val();return""===c?!0:/^[0-9a-fA-F]+$/.test(c)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.hexColor=a.extend(a.fn.bootstrapValidator.i18n.hexColor||{},{"default":"Please enter a valid hex color"}),a.fn.bootstrapValidator.validators.hexColor={enableByHtml5:function(a){return"color"===a.attr("type")},validate:function(a,b){var c=b.val();return""===c?!0:/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(c)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.iban=a.extend(a.fn.bootstrapValidator.i18n.iban||{},{"default":"Please enter a valid IBAN number",countryNotSupported:"The country code %s is not supported",country:"Please enter a valid IBAN number in %s",countries:{AD:"Andorra",AE:"United Arab Emirates",AL:"Albania",AO:"Angola",AT:"Austria",AZ:"Azerbaijan",BA:"Bosnia and Herzegovina",BE:"Belgium",BF:"Burkina Faso",BG:"Bulgaria",BH:"Bahrain",BI:"Burundi",BJ:"Benin",BR:"Brazil",CH:"Switzerland",CI:"Ivory Coast",CM:"Cameroon",CR:"Costa Rica",CV:"Cape Verde",CY:"Cyprus",CZ:"Czech Republic",DE:"Germany",DK:"Denmark",DO:"Dominica",DZ:"Algeria",EE:"Estonia",ES:"Spain",FI:"Finland",FO:"Faroe Islands",FR:"France",GB:"United Kingdom",GE:"Georgia",GI:"Gibraltar",GL:"Greenland",GR:"Greece",GT:"Guatemala",HR:"Croatia",HU:"Hungary",IE:"Ireland",IL:"Israel",IR:"Iran",IS:"Iceland",IT:"Italy",JO:"Jordan",KW:"Kuwait",KZ:"Kazakhstan",LB:"Lebanon",LI:"Liechtenstein",LT:"Lithuania",LU:"Luxembourg",LV:"Latvia",MC:"Monaco",MD:"Moldova",ME:"Montenegro",MG:"Mad
6684agascar",MK:"Macedonia",ML:"Mali",MR:"Mauritania",MT:"Malta",MU:"Mauritius",MZ:"Mozambique",NL:"Netherlands",NO:"Norway",PK:"Pakistan",PL:"Poland",PS:"Palestine",PT:"Portugal",QA:"Qatar",RO:"Romania",RS:"Serbia",SA:"Saudi Arabia",SE:"Sweden",SI:"Slovenia",SK:"Slovakia",SM:"San Marino",SN:"Senegal",TN:"Tunisia",TR:"Turkey",VG:"Virgin Islands, British"}}),a.fn.bootstrapValidator.validators.iban={html5Attributes:{message:"message",country:"country"},REGEX:{AD:"AD[0-9]{2}[0-9]{4}[0-9]{4}[A-Z0-9]{12}",AE:"AE[0-9]{2}[0-9]{3}[0-9]{16}",AL:"AL[0-9]{2}[0-9]{8}[A-Z0-9]{16}",AO:"AO[0-9]{2}[0-9]{21}",AT:"AT[0-9]{2}[0-9]{5}[0-9]{11}",AZ:"AZ[0-9]{2}[A-Z]{4}[A-Z0-9]{20}",BA:"BA[0-9]{2}[0-9]{3}[0-9]{3}[0-9]{8}[0-9]{2}",BE:"BE[0-9]{2}[0-9]{3}[0-9]{7}[0-9]{2}",BF:"BF[0-9]{2}[0-9]{23}",BG:"BG[0-9]{2}[A-Z]{4}[0-9]{4}[0-9]{2}[A-Z0-9]{8}",BH:"BH[0-9]{2}[A-Z]{4}[A-Z0-9]{14}",BI:"BI[0-9]{2}[0-9]{12}",BJ:"BJ[0-9]{2}[A-Z]{1}[0-9]{23}",BR:"BR[0-9]{2}[0-9]{8}[0-9]{5}[0-9]{10}[A-Z][A-Z0-9]",CH:"CH[0-9]{2}[0-9]{5}[A-Z0-9]{12}",CI:"CI[0-9]{2}[A-Z]{1}[0-9]{23}",CM:"CM[0-9]{2}[0-9]{23}",CR:"CR[0-9]{2}[0-9]{3}[0-9]{14}",CV:"CV[0-9]{2}[0-9]{21}",CY:"CY[0-9]{2}[0-9]{3}[0-9]{5}[A-Z0-9]{16}",CZ:"CZ[0-9]{2}[0-9]{20}",DE:"DE[0-9]{2}[0-9]{8}[0-9]{10}",DK:"DK[0-9]{2}[0-9]{14}",DO:"DO[0-9]{2}[A-Z0-9]{4}[0-9]{20}",DZ:"DZ[0-9]{2}[0-9]{20}",EE:"EE[0-9]{2}[0-9]{2}[0-9]{2}[0-9]{11}[0-9]{1}",ES:"ES[0-9]{2}[0-9]{4}[0-9]{4}[0-9]{1}[0-9]{1}[0-9]{10}",FI:"FI[0-9]{2}[0-9]{6}[0-9]{7}[0-9]{1}",FO:"FO[0-9]{2}[0-9]{4}[0-9]{9}[0-9]{1}",FR:"FR[0-9]{2}[0-9]{5}[0-9]{5}[A-Z0-9]{11}[0-9]{2}",GB:"GB[0-9]{2}[A-Z]{4}[0-9]{6}[0-9]{8}",GE:"GE[0-9]{2}[A-Z]{2}[0-9]{16}",GI:"GI[0-9]{2}[A-Z]{4}[A-Z0-9]{15}",GL:"GL[0-9]{2}[0-9]{4}[0-9]{9}[0-9]{1}",GR:"GR[0-9]{2}[0-9]{3}[0-9]{4}[A-Z0-9]{16}",GT:"GT[0-9]{2}[A-Z0-9]{4}[A-Z0-9]{20}",HR:"HR[0-9]{2}[0-9]{7}[0-9]{10}",HU:"HU[0-9]{2}[0-9]{3}[0-9]{4}[0-9]{1}[0-9]{15}[0-9]{1}",IE:"IE[0-9]{2}[A-Z]{4}[0-9]{6}[0-9]{8}",IL:"IL[0-9]{2}[0-9]{3}[0-9]{3}[0-9]{13}",IR:"IR[0-9]{2}[0-9]{22}",IS:"IS[0-9]{2}[0-9]{4}[0-9]{2}[0-9]{6}[0-9]{10}",IT:"IT[0-9]{2}[A-Z]{1}[0-9]{5}[0-9]{5}[A-Z0-9]{12}",JO:"JO[0-9]{2}[A-Z]{4}[0-9]{4}[0]{8}[A-Z0-9]{10}",KW:"KW[0-9]{2}[A-Z]{4}[0-9]{22}",KZ:"KZ[0-9]{2}[0-9]{3}[A-Z0-9]{13}",LB:"LB[0-9]{2}[0-9]{4}[A-Z0-9]{20}",LI:"LI[0-9]{2}[0-9]{5}[A-Z0-9]{12}",LT:"LT[0-9]{2}[0-9]{5}[0-9]{11}",LU:"LU[0-9]{2}[0-9]{3}[A-Z0-9]{13}",LV:"LV[0-9]{2}[A-Z]{4}[A-Z0-9]{13}",MC:"MC[0-9]{2}[0-9]{5}[0-9]{5}[A-Z0-9]{11}[0-9]{2}",MD:"MD[0-9]{2}[A-Z0-9]{20}",ME:"ME[0-9]{2}[0-9]{3}[0-9]{13}[0-9]{2}",MG:"MG[0-9]{2}[0-9]{23}",MK:"MK[0-9]{2}[0-9]{3}[A-Z0-9]{10}[0-9]{2}",ML:"ML[0-9]{2}[A-Z]{1}[0-9]{23}",MR:"MR13[0-9]{5}[0-9]{5}[0-9]{11}[0-9]{2}",MT:"MT[0-9]{2}[A-Z]{4}[0-9]{5}[A-Z0-9]{18}",MU:"MU[0-9]{2}[A-Z]{4}[0-9]{2}[0-9]{2}[0-9]{12}[0-9]{3}[A-Z]{3}",MZ:"MZ[0-9]{2}[0-9]{21}",NL:"NL[0-9]{2}[A-Z]{4}[0-9]{10}",NO:"NO[0-9]{2}[0-9]{4}[0-9]{6}[0-9]{1}",PK:"PK[0-9]{2}[A-Z]{4}[A-Z0-9]{16}",PL:"PL[0-9]{2}[0-9]{8}[0-9]{16}",PS:"PS[0-9]{2}[A-Z]{4}[A-Z0-9]{21}",PT:"PT[0-9]{2}[0-9]{4}[0-9]{4}[0-9]{11}[0-9]{2}",QA:"QA[0-9]{2}[A-Z]{4}[A-Z0-9]{21}",RO:"RO[0-9]{2}[A-Z]{4}[A-Z0-9]{16}",RS:"RS[0-9]{2}[0-9]{3}[0-9]{13}[0-9]{2}",SA:"SA[0-9]{2}[0-9]{2}[A-Z0-9]{18}",SE:"SE[0-9]{2}[0-9]{3}[0-9]{16}[0-9]{1}",SI:"SI[0-9]{2}[0-9]{5}[0-9]{8}[0-9]{2}",SK:"SK[0-9]{2}[0-9]{4}[0-9]{6}[0-9]{10}",SM:"SM[0-9]{2}[A-Z]{1}[0-9]{5}[0-9]{5}[A-Z0-9]{12}",SN:"SN[0-9]{2}[A-Z]{1}[0-9]{23}",TN:"TN59[0-9]{2}[0-9]{3}[0-9]{13}[0-9]{2}",TR:"TR[0-9]{2}[0-9]{5}[A-Z0-9]{1}[A-Z0-9]{16}",VG:"VG[0-9]{2}[A-Z]{4}[0-9]{16}"},validate:function(b,c,d){var e=c.val();if(""===e)return!0;e=e.replace(/[^a-zA-Z0-9]/g,"").toUpperCase();var f=d.country;if(f?"string"==typeof f&&this.REGEX[f]||(f=b.getDynamicOption(c,f)):f=e.substr(0,2),!this.REGEX[f])return{valid:!1,message:a.fn.bootstrapValidator.helpers.format(a.fn.bootstrapValidator.i18n.iban.countryNotSupported,f)};if(!new RegExp("^"+this.REGEX[f]+"$").test(e))return{valid:!1,message:a.fn.bootstrapValidator.helpers.format(d.message||a.fn.bootstrapValidator.i18n.iban.country,a.fn.bootstrapValidator.i18n.iban.countries[f])};e=e.substr(4)+e.substr(0,4),e=a.map(e.split(""),function(a){var b=a.charCo
vendor: 30,093 bytes, lines 6684-6685
6684deAt(0);return b>="A".charCodeAt(0)&&b<="Z".charCodeAt(0)?b-"A".charCodeAt(0)+10:a}),e=e.join("");for(var g=parseInt(e.substr(0,1),10),h=e.length,i=1;h>i;++i)g=(10*g+parseInt(e.substr(i,1),10))%97;return{valid:1===g,message:a.fn.bootstrapValidator.helpers.format(d.message||a.fn.bootstrapValidator.i18n.iban.country,a.fn.bootstrapValidator.i18n.iban.countries[f])}}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.id=a.extend(a.fn.bootstrapValidator.i18n.id||{},{"default":"Please enter a valid identification number",countryNotSupported:"The country code %s is not supported",country:"Please enter a valid identification number in %s",countries:{BA:"Bosnia and Herzegovina",BG:"Bulgaria",BR:"Brazil",CH:"Switzerland",CL:"Chile",CN:"China",CZ:"Czech Republic",DK:"Denmark",EE:"Estonia",ES:"Spain",FI:"Finland",HR:"Croatia",IE:"Ireland",IS:"Iceland",LT:"Lithuania",LV:"Latvia",ME:"Montenegro",MK:"Macedonia",NL:"Netherlands",RO:"Romania",RS:"Serbia",SE:"Sweden",SI:"Slovenia",SK:"Slovakia",SM:"San Marino",TH:"Thailand",ZA:"South Africa"}}),a.fn.bootstrapValidator.validators.id={html5Attributes:{message:"message",country:"country"},COUNTRY_CODES:["BA","BG","BR","CH","CL","CN","CZ","DK","EE","ES","FI","HR","IE","IS","LT","LV","ME","MK","NL","RO","RS","SE","SI","SK","SM","TH","ZA"],validate:function(b,c,d){var e=c.val();if(""===e)return!0;var f=d.country;if(f?("string"!=typeof f||-1===a.inArray(f.toUpperCase(),this.COUNTRY_CODES))&&(f=b.getDynamicOption(c,f)):f=e.substr(0,2),-1===a.inArray(f,this.COUNTRY_CODES))return{valid:!1,message:a.fn.bootstrapValidator.helpers.format(a.fn.bootstrapValidator.i18n.id.countryNotSupported,f)};var g=["_",f.toLowerCase()].join("");return this[g](e)?!0:{valid:!1,message:a.fn.bootstrapValidator.helpers.format(d.message||a.fn.bootstrapValidator.i18n.id.country,a.fn.bootstrapValidator.i18n.id.countries[f.toUpperCase()])}},_validateJMBG:function(a,b){if(!/^\d{13}$/.test(a))return!1;var c=parseInt(a.substr(0,2),10),d=parseInt(a.substr(2,2),10),e=(parseInt(a.substr(4,3),10),parseInt(a.substr(7,2),10)),f=parseInt(a.substr(12,1),10);if(c>31||d>12)return!1;for(var g=0,h=0;6>h;h++)g+=(7-h)*(parseInt(a.charAt(h),10)+parseInt(a.charAt(h+6),10));if(g=11-g%11,(10===g||11===g)&&(g=0),g!==f)return!1;switch(b.toUpperCase()){case"BA":return e>=10&&19>=e;case"MK":return e>=41&&49>=e;case"ME":return e>=20&&29>=e;case"RS":return e>=70&&99>=e;case"SI":return e>=50&&59>=e;default:return!0}},_ba:function(a){return this._validateJMBG(a,"BA")},_mk:function(a){return this._validateJMBG(a,"MK")},_me:function(a){return this._validateJMBG(a,"ME")},_rs:function(a){return this._validateJMBG(a,"RS")},_si:function(a){return this._validateJMBG(a,"SI")},_bg:function(b){if(!/^\d{10}$/.test(b)&&!/^\d{6}\s\d{3}\s\d{1}$/.test(b))return!1;b=b.replace(/\s/g,"");var c=parseInt(b.substr(0,2),10)+1900,d=parseInt(b.substr(2,2),10),e=parseInt(b.substr(4,2),10);if(d>40?(c+=100,d-=40):d>20&&(c-=100,d-=20),!a.fn.bootstrapValidator.helpers.date(c,d,e))return!1;for(var f=0,g=[2,4,8,5,10,9,7,3,6],h=0;9>h;h++)f+=parseInt(b.charAt(h),10)*g[h];return f=f%11%10,f+""===b.substr(9,1)},_br:function(a){if(/^1{11}|2{11}|3{11}|4{11}|5{11}|6{11}|7{11}|8{11}|9{11}|0{11}$/.test(a))return!1;if(!/^\d{11}$/.test(a)&&!/^\d{3}\.\d{3}\.\d{3}-\d{2}$/.test(a))return!1;a=a.replace(/\./g,"").replace(/-/g,"");for(var b=0,c=0;9>c;c++)b+=(10-c)*parseInt(a.charAt(c),10);if(b=11-b%11,(10===b||11===b)&&(b=0),b+""!==a.charAt(9))return!1;var d=0;for(c=0;10>c;c++)d+=(11-c)*parseInt(a.charAt(c),10);return d=11-d%11,(10===d||11===d)&&(d=0),d+""===a.charAt(10)},_ch:function(a){if(!/^756[\.]{0,1}[0-9]{4}[\.]{0,1}[0-9]{4}[\.]{0,1}[0-9]{2}$/.test(a))return!1;a=a.replace(/\D/g,"").substr(3);for(var b=a.length,c=0,d=8===b?[3,1]:[1,3],e=0;b-1>e;e++)c+=parseInt(a.charAt(e),10)*d[e%2];return c=10-c%10,c+""===a.charAt(b-1)},_cl:function(a){if(!/^\d{7,8}[-]{0,1}[0-9K]$/i.test(a))return!1;for(a=a.replace(/\-/g,"");a.length<9;)a="0"+a;for(var b=0,c=[3,2,7,6,5,4,3,2],d=0;8>d;d++)b+=parseInt(a.charAt(d),10)*c[d];return b=11-b%11,11===b?b=0:10===b&&(b="K"),b+""===a.charAt(8).toUpperCase()},_cn:function(b){if(b=b.trim(),!/^\d{15}$/.test(b)&&!/^\d{17}[\dXx]{1}$/.test(b))return!1;var c={11:{0:[0],1:[[0,9],[11,17]],2:[0,28,29]},12:{0:[0],1:[[0,16]],2:[0,21,23,25]},13:{0:[0],1:[[0,5],7,8,21,[23,33],[81,85]],2:[[0,5],[7,9],[23,25],27,29,30,81,83],3:[[0,4],[21,24]],4:[[0,4],6,21,[23,35],81],5:[[0,3],[21,35],81,82],6:[[0,4],[21,38],[81,84]],7:[[0,3],5,6,[21,33]],8:[[0,4],[21,28]],9:[[0,3],[21,30],[81,84]],10:[[0,3],[22,26],28,81,82],11:[[0,2],[21,28],81,82]},14:{0:[0],1:[0,1,[5,10],[21,23],81],2:[[0,3],11,12,[21,27]],3:[[0,3],11,21,22],4:[[0,2],11,21,[23,31],81],5:[[0,2],21,22,24,25,81],6:[[0,3],[21,24]],7:[[0,2],[21,29],81],8:[[0,2],[21,30],81,82],9:[[0,2],[21,32],81],10:[[0,2],[21,34],81,82],11:[[0,2],[21,30],81,82],23:[[0,3],22,23,[25,30],32,33]},15:{0:[0],1:[[0,5],[21,25]],2:[[0,7],[21,23]],3:[[0,4]],4:[[0,4],[21,26],[28,30]],5:[[0,2],[21,26],81],6:[[0,2],[21,27]],7:[[0,3],[21,27],[81,85]],8:[[0,2],[21,26]],9:[[0,2],[21,29],81],22:[[0,2],[21,24]],25:[[0,2],[22,31]],26:[[0,2],[24,27],[29,32],34],28:[0,1,[22,27]],29:[0,[21,23]]},21:{0:[0],1:[[0,6],[11,14],[22,24],81],2:[[0,4],[11,13],24,[81,83]],3:[[0,4],11,21,23,81],4:[[0,4],11,[21,23]],5:[[0,5],21,22],6:[[0,4],24,81,82],7:[[0,3],11,26,27,81,82],8:[[0,4],11,81,82],9:[[0,5],11,21,22],10:[[0,5],11,21,81],11:[[0,3],21,22],12:[[0,2],4,21,23,24,81,82],13:[[0,3],21,22,24,81,82],14:[[0,4],21,22,81]},22:{0:[0],1:[[0,6],12,22,[81,83]],2:[[0,4],11,21,[81,84]],3:[[0,3],22,23,81,82],4:[[0,3],21,22],5:[[0,3],21,23,24,81,82],6:[[0,2],4,5,[21,23],25,81],7:[[0,2],[21,24],81],8:[[0,2],21,22,81,82],24:[[0,6],24,26]},23:{0:[0],1:[[0,12],21,[23,29],[81,84]],2:[[0,8],21,[23,25],27,[29,31],81],3:[[0,7],21,81,82],4:[[0,7],21,22],5:[[0,3],5,6,[21,24]],6:[[0,6],[21,24]],7:[[0,16],22,81],8:[[0,5],11,22,26,28,33,81,82],9:[[0,4],21],10:[[0,5],24,25,81,[83,85]],11:[[0,2],21,23,24,81,82],12:[[0,2],[21,26],[81,83]],27:[[0,4],[21,23]]},31:{0:[0],1:[0,1,[3,10],[12,20]],2:[0,30]},32:{0:[0],1:[[0,7],11,[13,18],24,25],2:[[0,6],11,81,82],3:[[0,5],11,12,[21,24],81,82],4:[[0,2],4,5,11,12,81,82],5:[[0,9],[81,85]],6:[[0,2],11,12,21,23,[81,84]],7:[0,1,3,5,6,[21,24]],8:[[0,4],11,26,[29,31]],9:[[0,3],[21,25],28,81,82],10:[[0,3],11,12,23,81,84,88],11:[[0,2],11,12,[81,83]],12:[[0,4],[81,84]],13:[[0,2],11,[21,24]]},33:{0:[0],1:[[0,6],[8,10],22,27,82,83,85],2:[0,1,[3,6],11,12,25,26,[81,83]],3:[[0,4],22,24,[26,29],81,82],4:[[0,2],11,21,24,[81,83]],5:[[0,3],[21,23]],6:[[0,2],21,24,[81,83]],7:[[0,3],23,26,27,[81,84]],8:[[0,3],22,24,25,81],9:[[0,3],21,22],10:[[0,4],[21,24],81,82],11:[[0,2],[21,27],81]},34:{0:[0],1:[[0,4],11,[21,24],81],2:[[0,4],7,8,[21,23],25],3:[[0,4],11,[21,23]],4:[[0,6],21],5:[[0,4],6,[21,23]],6:[[0,4],21],7:[[0,3],11,21],8:[[0,3],11,[22,28],81],10:[[0,4],[21,24]],11:[[0,3],22,[24,26],81,82],12:[[0,4],21,22,25,26,82],13:[[0,2],[21,24]],14:[[0,2],[21,24]],15:[[0,3],[21,25]],16:[[0,2],[21,23]],17:[[0,2],[21,23]],18:[[0,2],[21,25],81]},35:{0:[0],1:[[0,5],11,[21,25],28,81,82],2:[[0,6],[11,13]],3:[[0,5],22],4:[[0,3],21,[23,30],81],5:[[0,5],21,[24,27],[81,83]],6:[[0,3],[22,29],81],7:[[0,2],[21,25],[81,84]],8:[[0,2],[21,25],81],9:[[0,2],[21,26],81,82]},36:{0:[0],1:[[0,5],11,[21,24]],2:[[0,3],22,81],3:[[0,2],13,[21,23]],4:[[0,3],21,[23,30],81,82],5:[[0,2],21],6:[[0,2],22,81],7:[[0,2],[21,35],81,82],8:[[0,3],[21,30],81],9:[[0,2],[21,26],[81,83]],10:[[0,2],[21,30]],11:[[0,2],[21,30],81]},37:{0:[0],1:[[0,5],12,13,[24,26],81],2:[[0,3],5,[11,14],[81,85]],3:[[0,6],[21,23]],4:[[0,6],81],5:[[0,3],[21,23]],6:[[0,2],[11,13],34,[81,87]],7:[[0,5],24,25,[81,86]],8:[[0,2],11,[26,32],[81,83]],9:[[0,3],11,21,23,82,83],10:[[0,2],[81,83]],11:[[0,3],21,22],12:[[0,3]],13:[[0,2],11,12,[21,29]],14:[[0,2],[21,28],81,82],15:[[0,2],[21,26],81],16:[[0,2],[21,26]],17:[[0,2],[21,28]]},41:{0:[0],1:[[0,6],8,22,[81,85]],2:[[0,5],11,[21,25]],3:[[0,7],11,[22,29],81],4:[[0,4],11,[21,23],25,81,82],5:[[0,3],5,6,22,23,26,27,81],6:[[0,3],11,21,22],7:[[0,4],11,21,[24,28],81,82],8:[[0,4],11,[21,23],25,[81,83]],9:[[0,2],22,23,[26,28]],10:[[0,2],[23,25],81,82],11:[[0,4],[21,23]],12:[[0,2],21,22,24,81,82],13:[[0,3],[21,30],81],14:[[0,3],[21,26],81],15:[[0,3],[21,28]],16:[[0,2],[21,28],81],17:[[0,2],[21,29]],90:[0,1]},42:{0:[0],1:[[0,7],[11,17]],2:[[0,5],22,81],3:[[0,3],[21,25],81],5:[[0,6],[25,29],[81,83]],6:[[0,2],6,7,[24,26],[82,84]],7:[[0,4]],8:[[0,2],4,21,22,81],9:[[0,2],[21,23],81,82,84],10:[[0,3],[22,24],81,83,87],11:[[0,2],[21,27],81,82],12:[[0,2],[21,24],81],13:[[0,3],21,81],28:[[0,2],22,23,[25,28]],90:[0,[4,6],21]},43:{0:[0],1:[[0,5],11,12,21,22,24,81],2:[[0,4],11,21,[23,25],81],3:[[0,2],4,21,81,82],4:[0,1,[5,8],12,[21,24],26,81,82],5:[[0,3],11,[21,25],[27,29],81],6:[[0,3],11,21,23,24,26,81,82],7:[[0,3],[21,26],81],8:[[0,2],11,21,22],9:[[0,3],[21,23],81],10:[[0,3],[21,28],81],11:[[0,3],[21,29]],12:[[0,2],[21,30],81],13:[[0,2],21,22,81,82],31:[0,1,[22,27],30]},44:{0:[0],1:[[0,7],[11,16],83,84],2:[[0,5],21,22,24,29,32,33,81,82],3:[0,1,[3,8]],4:[[0,4]],5:[0,1,[6,15],23,82,83],6:[0,1,[4,8]],7:[0,1,[3,5],81,[83,85]],8:[[0,4],11,23,25,[81,83]],9:[[0,3],23,[81,83]],12:[[0,3],[23,26],83,84],13:[[0,3],[22,24],81],14:[[0,2],[21,24],26,27,81],15:[[0,2],21,23,81],16:[[0,2],[21,25]],17:[[0,2],21,23,81],18:[[0,3],21,23,[25,27],81,82],19:[0],20:[0],51:[[0,3],21,22],52:[[0,3],21,22,24,81],53:[[0,2],[21,23],81]},45:{0:[0],1:[[0,9],[21,27]],2:[[0,5],[21,26]],3:[[0,5],11,12,[21,32]],4:[0,1,[3,6],11,[21,23],81],5:[[0,3],12,21],6:[[0,3],21,81],7:[[0,3],21,22],8:[[0,4],21,81],9:[[0,3],[21,24],81],10:[[0,2],[21,31]],11:[[0,2],[21,23]],12:[[0,2],[21,29],81],13:[[0,2],[21,24],81],14:[[0,2],[21,25],81]},46:{0:[0],1:[0,1,[5,8]],2:[0,1],3:[0,[21,23]],90:[[0,3],[5,7],[21,39]]},50:{0:[0],1:[[0,19]],2:[0,[22,38],[40,43]],3:[0,[81,84]]},51:{0:[0],1:[0,1,[4,8],[12,15],[21,24],29,31,32,[81,84]],3:[[0,4],11,21,22],4:[[0,3],11,21,22],5:[[0,4],21,22,24,25],6:[0,1,3,23,26,[81,83]],7:[0,1,3,4,[22,27],81],8:[[0,2],11,12,[21,24]],9:[[0,4],[21,23]],10:[[0,2],11,24,25,28],11:[[0,2],[11,13],23,24,26,29,32,33,81],13:[[0,4],[21,25],81],14:[[0,2],[21,25]],15:[[0,3],[21,29]],16:[[0,3],[21,23],81],17:[[0,3],[21,25],81],18:[[0,3],[21,27]],19:[[0,3],[21,23]],20:[[0,2],21,22,81],32:[0,[21,33]],33:[0,[21,38]],34:[0,1,[22,37]]},52:{0:[0],1:[[0,3],[11,15],[21,23],81],2:[0,1,3,21,22],3:[[0,3],[21,30],81,82],4:[[0,2],[21,25]],5:[[0,2],[21,27]],6:[[0,3],[21,28]],22:[0,1,[22,30]],23:[0,1,[22,28]],24:[0,1,[22,28]],26:[0,1,[22,36]],27:[[0,2],22,23,[25,32]]},53:{0:[0],1:[[0,3],[11,14],21,22,[24,29],81],3:[[0,2],[21,26],28,81],4:[[0,2],[21,28]],5:[[0,2],[21,24]],6:[[0,2],[21,30]],7:[[0,2],[21,24]],8:[[0,2],[21,29]],9:[[0,2],[21,27]],23:[0,1,[22,29],31],25:[[0,4],[22,32]],26:[0,1,[21,28]],27:[0,1,[22,30]],28:[0,1,22,23],29:[0,1,[22,32]],31:[0,2,3,[22,24]],34:[0,[21,23]],33:[0,21,[23,25]],35:[0,[21,28]]},54:{0:[0],1:[[0,2],[21,27]],21:[0,[21,29],32,33],22:[0,[21,29],[31,33]],23:[0,1,[22,38]],24:[0,[21,31]],25:[0,[21,27]],26:[0,[21,27]]},61:{0:[0],1:[[0,4],[11,16],22,[24,26]],2:[[0,4],22],3:[[0,4],[21,24],[26,31]],4:[[0,4],[22,31],81],5:[[0,2],[21,28],81,82],6:[[0,2],[21,32]],7:[[0,2],[21,30]],8:[[0,2],[21,31]],9:[[0,2],[21,29]],10:[[0,2],[21,26]]},62:{0:[0],1:[[0,5],11,[21,23]],2:[0,1],3:[[0,2],21],4:[[0,3],[21,23]],5:[[0,3],[21,25]],6:[[0,2],[21,23]],7:[[0,2],[21,25]],8:[[0,2],[21,26]],9:[[0,2],[21,24],81,82],10:[[0,2],[21,27]],11:[[0,2],[21,26]],12:[[0,2],[21,28]],24:[0,21,[24,29]],26:[0,21,[23,30]],29:[0,1,[21,27]],30:[0,1,[21,27]]},63:{0:[0],1:[[0,5],[21,23]],2:[0,2,[21,25]],21:[0,[21,23],[26,28]],22:[0,[21,24]],23:[0,[21,24]],25:[0,[21,25]],26:[0,[21,26]],27:[0,1,[21,26]],28:[[0,2],[21,23]]},64:{0:[0],1:[0,1,[4,6],21,22,81],2:[[0,3],5,[21,23]],3:[[0,3],[21,24],81],4:[[0,2],[21,25]],5:[[0,2],21,22]},65:{0:[0],1:[[0,9],21],2:[[0,5]],21:[0,1,22,23],22:[0,1,22,23],23:[[0,3],[23,25],27,28],28:[0,1,[22,29]],29:[0,1,[22,29]],30:[0,1,[22,24]],31:[0,1,[21,31]],32:[0,1,[21,27]],40:[0,2,3,[21,28]],42:[[0,2],21,[23,26]],43:[0,1,[21,26]],90:[[0,4]],27:[[0,2],22,23]},71:{0:[0]},81:{0:[0]},82:{0:[0]}},d=parseInt(b.substr(0,2),10),e=parseInt(b.substr(2,2),10),f=parseInt(b.substr(4,2),10);if(!c[d]||!c[d][e])return!1;for(var g=!1,h=c[d][e],i=0;i<h.length;i++)if(a.isArray(h[i])&&h[i][0]<=f&&f<=h[i][1]||!a.isArray(h[i])&&f===h[i]){g=!0;break}if(!g)return!1;var j;j=18===b.length?b.substr(6,8):"19"+b.substr(6,6);var k=parseInt(j.substr(0,4),10),l=parseInt(j.substr(4,2),10),m=parseInt(j.substr(6,2),10);if(!a.fn.bootstrapValidator.helpers.date(k,l,m))return!1;if(18===b.length){var n=0,o=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];for(i=0;17>i;i++)n+=parseInt(b.charAt(i),10)*o[i];n=(12-n%11)%11;var p="X"!==b.charAt(17).toUpperCase()?parseInt(b.charAt(17),10):10;return p===n}return!0},_cz:function(b){if(!/^\d{9,10}$/.test(b))return!1;var c=1900+parseInt(b.substr(0,2),10),d=parseInt(b.substr(2,2),10)%50%20,e=parseInt(b.substr(4,2),10);if(9===b.length){if(c>=1980&&(c-=100),c>1953)return!1}else 1954>c&&(c+=100);if(!a.fn.bootstrapValidator.helpers.date(c,d,e))return!1;if(10===b.length){var f=parseInt(b.substr(0,9),10)%11;return 1985>c&&(f%=10),f+""===b.substr(9,1)}return!0},_dk:function(b){if(!/^[0-9]{6}[-]{0,1}[0-9]{4}$/.test(b))return!1;b=b.replace(/-/g,"");var c=parseInt(b.substr(0,2),10),d=parseInt(b.substr(2,2),10),e=parseInt(b.substr(4,2),10);switch(!0){case-1!=="5678".indexOf(b.charAt(6))&&e>=58:e+=1800;break;case-1!=="0123".indexOf(b.charAt(6)):case-1!=="49".indexOf(b.charAt(6))&&e>=37:e+=1900;break;default:e+=2e3}return a.fn.bootstrapValidator.helpers.date(e,d,c)},_ee:function(a){return this._lt(a)},_es:function(a){if(!/^[0-9A-Z]{8}[-]{0,1}[0-9A-Z]$/.test(a)&&!/^[XYZ][-]{0,1}[0-9]{7}[-]{0,1}[0-9A-Z]$/.test(a))return!1;a=a.replace(/-/g,"");var b="XYZ".indexOf(a.charAt(0));-1!==b&&(a=b+a.substr(1)+"");var c=parseInt(a.substr(0,8),10);return c="TRWAGMYFPDXBNJZSQVHLCKE"[c%23],c===a.substr(8,1)},_fi:function(b){if(!/^[0-9]{6}[-+A][0-9]{3}[0-9ABCDEFHJKLMNPRSTUVWXY]$/.test(b))return!1;var c=parseInt(b.substr(0,2),10),d=parseInt(b.substr(2,2),10),e=parseInt(b.substr(4,2),10),f={"+":1800,"-":1900,A:2e3};if(e=f[b.charAt(6)]+e,!a.fn.bootstrapValidator.helpers.date(e,d,c))return!1;var g=parseInt(b.substr(7,3),10);if(2>g)return!1;var h=b.substr(0,6)+b.substr(7,3)+"";return h=parseInt(h,10),"0123456789ABCDEFHJKLMNPRSTUVWXY".charAt(h%31)===b.charAt(10)},_hr:function(b){return/^[0-9]{11}$/.test(b)?a.fn.bootstrapValidator.helpers.mod11And10(b):!1},_ie:function(a){if(!/^\d{7}[A-W][AHWTX]?$/.test(a))return!1;var b=function(a){for(;a.length<7;)a="0"+a;for(var b="WABCDEFGHIJKLMNOPQRSTUV",c=0,d=0;7>d;d++)c+=parseInt(a.charAt(d),10)*(8-d);return c+=9*b.indexOf(a.substr(7)),b[c%23]};return 9!==a.length||"A"!==a.charAt(8)&&"H"!==a.charAt(8)?a.charAt(7)===b(a.substr(0,7)):a.charAt(7)===b(a.substr(0,7)+a.substr(8)+"")},_is:function(b){if(!/^[0-9]{6}[-]{0,1}[0-9]{4}$/.test(b))return!1;b=b.replace(/-/g,"");var c=parseInt(b.substr(0,2),10),d=parseInt(b.substr(2,2),10),e=parseInt(b.substr(4,2),10),f=parseInt(b.charAt(9),10);if(e=9===f?1900+e:100*(20+f)+e,!a.fn.bootstrapValidator.helpers.date(e,d,c,!0))return!1;for(var g=0,h=[3,2,7,6,5,4,3,2],i=0;8>i;i++)g+=parseInt(b.charAt(i),10)*h[i];return g=11-g%11,g+""===b.charAt(8)},_lt:function(b){if(!/^[0-9]{11}$/.test(b))return!1;var c=parseInt(b.charAt(0),10),d=parseInt(b.substr(1,2),10),e=parseInt(b.substr(3,2),10),f=parseInt(b.substr(5,2),10),g=c%2===0?17+c/2:17+(c+1)/2;if(d=100*g+d,!a.fn.bootstrapValidator.helpers.date(d,e,f,!0))return!1;for(var h=0,i=[1,2,3,4,5,6,7,8,9,1],j=0;10>j;j++)h+=parseInt(b.charAt(j),10)*i[j];if(h%=11,10!==h)return h+""===b.charAt(10);for(h=0,i=[3,4,5,6,7,8,9,1,2,3],j=0;10>j;j++)h+=parseInt(b.charAt(j),10)*i[j];return h%=11,10===h&&(h=0),h+""===b.charAt(10)},_lv:function(b){if(!/^[0-9]{6}[-]{0,1}[0-9]{5}$/.test(b))return!1;b=b.replace(/\D/g,"");var c=parseInt(b.substr(0,2),10),d=parseInt(b.substr(2,2),10),e=parseInt(b.substr(4,2),10);if(e=e+1800+100*parseInt(b.charAt(6),10),!a.fn.bootstrapValidator.helpers.date(e,d,c,!0))return!1;for(var f=0,g=[10,5,8,4,2,1,6,3,7,9],h=0;10>h;h++)f+=parseInt(b.charAt(h),10)*g[h];return f=(f+1)%11%10,f+""===b.charAt(10)},_nl:function(a){for(;a.length<9;)a="0"+a;if(!/^[0-9]{4}[.]{0,1}[0-9]{2}[.]{0,1}[0-9]{3}$/.test(a))return!1;if(a=a.replace(/\./g,""),0===parseInt(a,10))return!1;for(var b=0,c=a.length,d=0;c-1>d;d++)b+=(9-d)*parseInt(a.charAt(d),10);return b%=11,10===b&&(b=0),b+""===a.charAt(c-1)},_ro:function(b){if(!/^[0-9]{13}$/.test(b))return!1;var c=parseInt(b.charAt(0),10);if(0===c||7===c||8===c)return!1;var d=parseInt(b.substr(1,2),10),e=parseInt(b.substr(3,2),10),f=parseInt(b.substr(5,2),10),g={1:1900,2:1900,3:1800,4:1800,5:2e3,6:2e3};if(f>31&&e>12)return!1;if(9!==c&&(d=g[c+""]+d,!a.fn.bootstrapValidator.helpers.date(d,e,f)))return!1;for(var h=0,i=[2,7,9,1,4,6,3,5,8,2,7,9],j=b.length,k=0;j-1>k;k++)h+=parseInt(b.charAt(k),10)*i[k];return h%=11,10===h&&(h=1),h+""===b.charAt(j-1)},_se:function(b){if(!/^[0-9]{10}$/.test(b)&&!/^[0-9]{6}[-|+][0-9]{4}$/.test(b))return!1;b=b.replace(/[^0-9]/g,"");var c=parseInt(b.substr(0,2),10)+1900,d=parseInt(b.substr(2,2),10),e=parseInt(b.substr(4,2),10);return a.fn.bootstrapValidator.helpers.date(c,d,e)?a.fn.bootstrapValidator.helpers.luhn(b):!1},_sk:function(a){return this._cz(a)},_sm:function(a){return/^\d{5}$/.test(a)},_th:function(a){if(13!==a.length)return!1;for(var b=0,c=0;12>c;c++)b+=parseInt(a.charAt(c),10)*(13-c);return(11-b%11)%10===parseInt(a.charAt(12),10)},_za:function(b){if(!/^[0-9]{10}[0|1][8|9][0-9]$/.test(b))return!1;var c=parseInt(b.substr(0,2),10),d=(new Date).getFullYear()%100,e=parseInt(b.substr(2,2),10),f=parseInt(b.substr(4,2),10);return c=c>=d?c+1900:c+2e3,a.fn.bootstrapValidator.helpers.date(c,e,f)?a.fn.bootstrapValidator.helpers.luhn(b):!1
6685}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.identical=a.extend(a.fn.bootstrapValidator.i18n.identical||{},{"default":"Please enter the same value"}),a.fn.bootstrapValidator.validators.identical={html5Attributes:{message:"message",field:"field"},validate:function(a,b,c){var d=b.val();if(""===d)return!0;var e=a.getFieldElements(c.field);return null===e||0===e.length?!0:d===e.val()?(a.updateStatus(c.field,a.STATUS_VALID,"identical"),!0):!1}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.imei=a.extend(a.fn.bootstrapValidator.i18n.imei||{},{"default":"Please enter a valid IMEI number"}),a.fn.bootstrapValidator.validators.imei={validate:function(b,c){var d=c.val();if(""===d)return!0;switch(!0){case/^\d{15}$/.test(d):case/^\d{2}-\d{6}-\d{6}-\d{1}$/.test(d):case/^\d{2}\s\d{6}\s\d{6}\s\d{1}$/.test(d):return d=d.replace(/[^0-9]/g,""),a.fn.bootstrapValidator.helpers.luhn(d);case/^\d{14}$/.test(d):case/^\d{16}$/.test(d):case/^\d{2}-\d{6}-\d{6}(|-\d{2})$/.test(d):case/^\d{2}\s\d{6}\s\d{6}(|\s\d{2})$/.test(d):return!0;default:return!1}}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.imo=a.extend(a.fn.bootstrapValidator.i18n.imo||{},{"default":"Please enter a valid IMO number"}),a.fn.bootstrapValidator.validators.imo={validate:function(a,b){var c=b.val();if(""===c)return!0;if(!/^IMO \d{7}$/i.test(c))return!1;for(var d=0,e=c.replace(/^.*(\d{7})$/,"$1"),f=6;f>=1;f--)d+=e.slice(6-f,-f)*(f+1);return d%10===parseInt(e.charAt(6),10)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.integer=a.extend(a.fn.bootstrapValidator.i18n.integer||{},{"default":"Please enter a valid number"}),a.fn.bootstrapValidator.validators.integer={enableByHtml5:function(a){return"number"===a.attr("type")&&(void 0===a.attr("step")||a.attr("step")%1===0)},validate:function(a,b){if(this.enableByHtml5(b)&&b.get(0).validity&&b.get(0).validity.badInput===!0)return!1;var c=b.val();return""===c?!0:/^(?:-?(?:0|[1-9][0-9]*))$/.test(c)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.ip=a.extend(a.fn.bootstrapValidator.i18n.ip||{},{"default":"Please enter a valid IP address",ipv4:"Please enter a valid IPv4 address",ipv6:"Please enter a valid IPv6 address"}),a.fn.bootstrapValidator.validators.ip={html5Attributes:{message:"message",ipv4:"ipv4",ipv6:"ipv6"},validate:function(b,c,d){var e=c.val();if(""===e)return!0;d=a.extend({},{ipv4:!0,ipv6:!0},d);var f,g=/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,h=/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/,i=!1;switch(!0){case d.ipv4&&!d.ipv6:i=g.test(e),f=d.message||a.fn.bootstrapValidator.i18n.ip.ipv4;break;case!d.ipv4&&d.ipv6:i=h.test(e),f=d.message||a.fn.bootstrapValidator.i18n.ip.ipv6;break;case d.ipv4&&d.ipv6:default:i=g.test(e)||h.test(e),f=d.message||a.fn.bootstrapValidator.i18n.ip["default"]}return{valid:i,message:f}}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.isbn=a.extend(a.fn.bootstrapValidator.i18n.isbn||{},{"default":"Please enter a valid ISBN number"}),a.fn.bootstrapValidator.validators.isbn={validate:function(a,b){var c=b.val();if(""===c)return!0;var d;switch(!0){case/^\d{9}[\dX]$/.test(c):case 13===c.length&&/^(\d+)-(\d+)-(\d+)-([\dX])$/.test(c):case 13===c.length&&/^(\d+)\s(\d+)\s(\d+)\s([\dX])$/.test(c):d="ISBN10";break;case/^(978|979)\d{9}[\dX]$/.test(c):case 17===c.length&&/^(978|979)-(\d+)-(\d+)-(\d+)-([\dX])$/.test(c):case 17===c.length&&/^(978|979)\s(\d+)\s(\d+)\s(\d+)\s([\dX])$/.test(c):d="ISBN13";break;default:return!1}c=c.replace(/[^0-9X]/gi,"");var e,f,g=c.split(""),h=g.length,i=0;switch(d){case"ISBN10":for(i=0,e=0;h-1>e;e++)i+=parseInt(g[e],10)*(10-e);return f=11-i%11,11===f?f=0:10===f&&(f="X"),f+""===g[h-1];case"ISBN13":for(i=0,e=0;h-1>e;e++)i+=e%2===0?parseInt(g[e],10):3*parseInt(g[e],10);return f=10-i%10,10===f&&(f="0"),f+""===g[h-1];default:return!1}}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.isin=a.extend(a.fn.bootstrapValidator.i18n.isin||{},{"default":"Please enter a valid ISIN number"}),a.fn.bootstrapValidator.validators.isin={COUNTRY_CODES:"AF|AX|AL|DZ|AS|AD|AO|AI|AQ|AG|AR|AM|AW|AU|AT|AZ|BS|BH|BD|BB|BY|BE|BZ|BJ|BM|BT|BO|BQ|BA|BW|BV|BR|IO|BN|BG|BF|BI|KH|CM|CA|CV|KY|CF|TD|CL|CN|CX|CC|CO|KM|CG|CD|CK|CR|CI|HR|CU|CW|CY|CZ|DK|DJ|DM|DO|EC|EG|SV|GQ|ER|EE|ET|FK|FO|FJ|FI|FR|GF|PF|TF|GA|GM|GE|DE|GH|GI|GR|GL|GD|GP|GU|GT|GG|GN|GW|GY|HT|HM|VA|HN|HK|HU|IS|IN|ID|IR|IQ|IE|IM|IL|IT|JM|JP|JE|JO|KZ|KE|KI|KP|KR|KW|KG|LA|LV|LB|LS|LR|LY|LI|LT|LU|MO|MK|MG|MW|MY|MV|ML|MT|MH|MQ|MR|MU|YT|MX|FM|MD|MC|MN|ME|MS|MA|MZ|MM|NA|NR|NP|NL|NC|NZ|NI|NE|NG|NU|NF|MP|NO|OM|PK|PW|PS|PA|PG|PY|PE|PH|PN|PL|PT|PR|QA|RE|RO|RU|RW|BL|SH|KN|LC|MF|PM|VC|WS|SM|ST|SA|SN|RS|SC|SL|SG|SX|SK|SI|SB|SO|ZA|GS|SS|ES|LK|SD|SR|SJ|SZ|SE|CH|SY|TW|TJ|TZ|TH|TL|TG|TK|TO|TT|TN|TR|TM|TC|TV|UG|UA|AE|GB|US|UM|UY|UZ|VU|VE|VN|VG|VI|WF|EH|YE|ZM|ZW",validate:function(a,b){var c=b.val();if(""===c)return!0;c=c.toUpperCase();var d=new RegExp("^("+this.COUNTRY_CODES+")[0-9A-Z]{10}$");if(!d.test(c))return!1;for(var e="",f=c.length,g=0;f-1>g;g++){var h=c.charCodeAt(g);e+=h>57?(h-55).toString():c.charAt(g)}var i="",j=e.length,k=j%2!==0?0:1;for(g=0;j>g;g++)i+=parseInt(e[g],10)*(g%2===k?2:1)+"";var l=0;for(g=0;g<i.length;g++)l+=parseInt(i.charAt(g),10);return l=(10-l%10)%10,l+""===c.charAt(f-1)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.ismn=a.extend(a.fn.bootstrapValidator.i18n.ismn||{},{"default":"Please enter a valid ISMN number"}),a.fn.bootstrapValidator.validators.ismn={validate:function(a,b){var c=b.val();if(""===c)return!0;var d;switch(!0){case/^M\d{9}$/.test(c):case/^M-\d{4}-\d{4}-\d{1}$/.test(c):case/^M\s\d{4}\s\d{4}\s\d{1}$/.test(c):d="ISMN10";break;case/^9790\d{9}$/.test(c):case/^979-0-\d{4}-\d{4}-\d{1}$/.test(c):case/^979\s0\s\d{4}\s\d{4}\s\d{1}$/.test(c):d="ISMN13";break;default:return!1}"ISMN10"===d&&(c="9790"+c.substr(1)),c=c.replace(/[^0-9]/gi,"");for(var e=c.length,f=0,g=[1,3],h=0;e-1>h;h++)f+=parseInt(c.charAt(h),10)*g[h%2];return f=10-f%10,f+""===c.charAt(e-1)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.issn=a.extend(a.fn.bootstrapValidator.i18n.issn||{},{"default":"Please enter a valid ISSN number"}),a.fn.bootstrapValidator.validators.issn={validate:function(a,b){var c=b.val();if(""===c)return!0;if(!/^\d{4}\-\d{3}[\dX]$/.test(c))return!1;c=c.replace(/[^0-9X]/gi,"");var d=c.split(""),e=d.length,f=0;"X"===d[7]&&(d[7]=10);for(var g=0;e>g;g++)f+=parseInt(d[g],10)*(8-g);return f%11===0}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.lessThan=a.extend(a.fn.bootstrapValidator.i18n.lessThan||{},{"default":"Please enter a value less than or equal to %s",notInclusive:"Please enter a value less than %s"}),a.fn.bootstrapValidator.validators.lessThan={html5Attributes:{message:"message",value:"value",inclusive:"inclusive"},enableByHtml5:function(a){var b=a.attr("type"),c=a.attr("max");return c&&"date"!==b?{value:c}:!1},validate:function(b,c,d){var e=c.val();if(""===e)return!0;if(!a.isNumeric(e))return!1;var f=a.isNumeric(d.value)?d.value:b.getDynamicOption(c,d.value);return e=parseFloat(e),d.inclusive===!0||void 0===d.inclusive?{valid:f>=e,message:a.fn.bootstrapValidator.helpers.format(d.message||a.fn.bootstrapValidator.i18n.lessThan["default"],f)}:{valid:f>e,message:a.fn.bootstrapValidator.helpers.format(d.message||a.fn.bootstrapValidator.i18n.lessThan.notInclusive,f)}}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.mac=a.extend(a.fn.bootstrapValidator.i18n.mac||{},{"default":"Please enter a valid MAC address"}),a.fn.bootstrapValidator.validators.mac={validate:function(a,b){var c=b.val();return""===c?!0:/^([0-9A-F]{2}[:-]){5}([0-9A-F]{2})$/.test(c)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.meid=a.extend(a.fn.bootstrapValidator.i18n.meid||{},{"default":"Please enter a valid MEID number"}),a.fn.bootstrapValidator.validators.meid={validate:function(b,c){var d=c.val();if(""===d)return!0;switch(!0){case/^[0-9A-F]{15}$/i.test(d):case/^[0-9A-F]{2}[- ][0-9A-F]{6}[- ][0-9A-F]{6}[- ][0-9A-F]$/i.test(d):case/^\d{19}$/.test(d):case/^\d{5}[- ]\d{5}[- ]\d{4}[- ]\d{4}[- ]\d$/.test(d):var e=d.charAt(d.length-1);if(d=d.replace(/[- ]/g,""),d.match(/^\d*$/i))return a.fn.bootstrapValidator.helpers.luhn(d);d=d.slice(0,-1);for(var f="",g=1;13>=g;g+=2)f+=(2*parseInt(d.charAt(g),16)).toString(16);var h=0;for(g=0;g<f.length;g++)h+=parseInt(f.charAt(g),16);return h%10===0?"0"===e:e===(2*(10*Math.floor((h+10)/10)-h)).toString(16);case/^[0-9A-F]{14}$/i.test(d):case/^[0-9A-F]{2}[- ][0-9A-F]{6}[- ][0-9A-F]{6}$/i.test(d):case/^\d{18}$/.test(d):case/^\d{5}[- ]\d{5}[- ]\d{4}[- ]\d{4}$/.test(d):return!0;default:return!1}}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.notEmpty=a.extend(a.fn.bootstrapValidator.i18n.notEmpty||{},{"default":"Please enter a value"}),a.fn.bootstrapValidator.validators.notEmpty={enableByHtml5:function(a){var b=a.attr("required")+"";return"required"===b||"true"===b},validate:function(b,c){var d=c.attr("type");return"radio"===d||"checkbox"===d?b.getFieldElements(c.attr("data-bv-field")).filter(":checked").length>0:"number"===d&&c.get(0).validity&&c.get(0).validity.badInput===!0?!0:""!==a.trim(c.val())}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.numeric=a.extend(a.fn.bootstrapValidator.i18n.numeric||{},{"default":"Please enter a valid float number"}),a.fn.bootstrapValidator.validators.numeric={html5Attributes:{message:"message",separator:"separator"},enableByHtml5:function(a){return"number"===a.attr("type")&&void 0!==a.attr("step")&&a.attr("step")%1!==0},validate:function(a,b,c){if(this.enableByHtml5(b)&&b.get(0).validity&&b.get(0).validity.badInput===!0)return!1;var d=b.val();if(""===d)return!0;var e=c.separator||".";return"."!==e&&(d=d.replace(e,".")),!isNaN(parseFloat(d))&&isFinite(d)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.phone=a.extend(a.fn.bootstrapValidator.i18n.phone||{},{"default":"Please enter a valid phone number",countryNotSupported:"The country code %s is not supported",country:"Please enter a valid phone number in %s",countries:{BR:"Brazil",CN:"China",CZ:"Czech Republic",DK:"Denmark",ES:"Spain",FR:"France",GB:"United Kingdom",MA:"Morocco",PK:"Pakistan",RO:"Romania",RU:"Russia",SK:"Slovakia",TH:"Thailand",US:"USA",VE:"Venezuela"}}),a.fn.bootstrapValidator.validators.phone={html5Attributes:{message:"message",country:"country"},COUNTRY_CODES:["BR","CN","CZ","DK","ES","FR","GB","MA","PK","RO","RU","SK","TH","US","VE"],validate:function(b,c,d){var e=c.val();if(""===e)return!0;var f=d.country;if(("string"!=typeof f||-1===a.inArray(f,this.COUNTRY_CODES))&&(f=b.getDynamicOption(c,f)),!f||-1===a.inArray(f.toUpperCase(),this.COUNTRY_CODES))return{valid:!1,message:a.fn.bootstrapValidator.helpers.format(a.fn.bootstrapValidator.i18n.phone.countryNotSupported,f)};var g=!0;switch(f.toUpperCase()){case"BR":e=a.trim(e),g=/^(([\d]{4}[-.\s]{1}[\d]{2,3}[-.\s]{1}[\d]{2}[-.\s]{1}[\d]{2})|([\d]{4}[-.\s]{1}[\d]{3}[-.\s]{1}[\d]{4})|((\(?\+?[0-9]{2}\)?\s?)?(\(?\d{2}\)?\s?)?\d{4,5}[-.\s]?\d{4}))$/.test(e);break;case"CN":e=a.trim(e),g=/^((00|\+)?(86(?:-| )))?((\d{11})|(\d{3}[- ]{1}\d{4}[- ]{1}\d{4})|((\d{2,4}[- ]){1}(\d{7,8}|(\d{3,4}[- ]{1}\d{4}))([- ]{1}\d{1,4})?))$/.test(e);break;case"CZ":g=/^(((00)([- ]?)|\+)(420)([- ]?))?((\d{3})([- ]?)){2}(\d{3})$/.test(e);break;case"DK":e=a.trim(e),g=/^(\+45|0045|\(45\))?\s?[2-9](\s?\d){7}$/.test(e);break;
6685case"ES":e=a.trim(e),g=/^(?:(?:(?:\+|00)34\D?))?(?:9|6)(?:\d\D?){8}$/.test(e);break;case"FR":e=a.trim(e),g=/^(?:(?:(?:\+|00)33[ ]?(?:\(0\)[ ]?)?)|0){1}[1-9]{1}([ .-]?)(?:\d{2}\1?){3}\d{2}$/.test(e);break;case"GB":e=a.trim(e),g=/^\(?(?:(?:0(?:0|11)\)?[\s-]?\(?|\+)44\)?[\s-]?\(?(?:0\)?[\s-]?\(?)?|0)(?:\d{2}\)?[\s-]?\d{4}[\s-]?\d{4}|\d{3}\)?[\s-]?\d{3}[\s-]?\d{3,4}|\d{4}\)?[\s-]?(?:\d{5}|\d{3}[\s-]?\d{3})|\d{5}\)?[\s-]?\d{4,5}|8(?:00[\s-]?11[\s-]?11|45[\s-]?46[\s-]?4\d))(?:(?:[\s-]?(?:x|ext\.?\s?|\#)\d+)?)$/.test(e);break;case"MA":e=a.trim(e),g=/^(?:(?:(?:\+|00)212[\s]?(?:[\s]?\(0\)[\s]?)?)|0){1}(?:5[\s.-]?[2-3]|6[\s.-]?[13-9]){1}[0-9]{1}(?:[\s.-]?\d{2}){3}$/.test(e);break;case"PK":e=a.trim(e),g=/^0?3[0-9]{2}[0-9]{7}$/.test(e);break;case"RO":g=/^(\+4|)?(07[0-8]{1}[0-9]{1}|02[0-9]{2}|03[0-9]{2}){1}?(\s|\.|\-)?([0-9]{3}(\s|\.|\-|)){2}$/g.test(e);break;case"RU":g=/^((8|\+7|007)[\-\.\/ ]?)?([\(\/\.]?\d{3}[\)\/\.]?[\-\.\/ ]?)?[\d\-\.\/ ]{7,10}$/g.test(e);break;case"SK":g=/^(((00)([- ]?)|\+)(420)([- ]?))?((\d{3})([- ]?)){2}(\d{3})$/.test(e);break;case"TH":g=/^0\(?([6|8-9]{2})*-([0-9]{3})*-([0-9]{4})$/.test(e);break;case"VE":e=a.trim(e),g=/^0(?:2(?:12|4[0-9]|5[1-9]|6[0-9]|7[0-8]|8[1-35-8]|9[1-5]|3[45789])|4(?:1[246]|2[46]))\d{7}$/.test(e);break;case"US":default:e=e.replace(/\D/g,""),g=/^(?:(1\-?)|(\+1 ?))?\(?(\d{3})[\)\-\.]?(\d{3})[\-\.]?(\d{4})$/.test(e)&&10===e.length}return{valid:g,message:a.fn.bootstrapValidator.helpers.format(d.message||a.fn.bootstrapValidator.i18n.phone.country,a.fn.bootstrapValidator.i18n.phone.countries[f])}}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.regexp=a.extend(a.fn.bootstrapValidator.i18n.regexp||{},{"default":"Please enter a value matching the pattern"}),a.fn.bootstrapValidator.validators.regexp={html5Attributes:{message:"message",regexp:"regexp"},enableByHtml5:function(a){var b=a.attr("pattern");return b?{regexp:b}:!1},validate:function(a,b,c){var d=b.val();if(""===d)return!0;var e="string"==typeof c.regexp?new RegExp(c.regexp):c.regexp;return e.test(d)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.remote=a.extend(a.fn.bootstrapValidator.i18n.remote||{},{"default":"Please enter a valid value"}),a.fn.bootstrapValidator.validators.remote={html5Attributes:{message:"message",name:"name",type:"type",url:"url",delay:"delay"},destroy:function(a,b){b.data("bv.remote.timer")&&(clearTimeout(b.data("bv.remote.timer")),b.removeData("bv.remote.timer"))},validate:function(b,c,d){function e(){var b=a.ajax({type:k,headers:l,url:j,dataType:"json",data:i});return b.then(function(a){a.valid=a.valid===!0||"true"===a.valid,g.resolve(c,"remote",a)}),g.fail(function(){b.abort()}),g}var f=c.val(),g=new a.Deferred;if(""===f)return g.resolve(c,"remote",{valid:!0}),g;var h=c.attr("data-bv-field"),i=d.data||{},j=d.url,k=d.type||"GET",l=d.headers||{};return"function"==typeof i&&(i=i.call(this,b)),"function"==typeof j&&(j=j.call(this,b)),i[d.name||h]=f,d.delay?(c.data("bv.remote.timer")&&clearTimeout(c.data("bv.remote.timer")),c.data("bv.remote.timer",setTimeout(e,d.delay)),g):e()}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.rtn=a.extend(a.fn.bootstrapValidator.i18n.rtn||{},{"default":"Please enter a valid RTN number"}),a.fn.bootstrapValidator.validators.rtn={validate:function(a,b){var c=b.val();if(""===c)return!0;if(!/^\d{9}$/.test(c))return!1;for(var d=0,e=0;e<c.length;e+=3)d+=3*parseInt(c.charAt(e),10)+7*parseInt(c.charAt(e+1),10)+parseInt(c.charAt(e+2),10);return 0!==d&&d%10===0}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.sedol=a.extend(a.fn.bootstrapValidator.i18n.sedol||{},{"default":"Please enter a valid SEDOL number"}),a.fn.bootstrapValidator.validators.sedol={validate:function(a,b){var c=b.val();if(""===c)return!0;if(c=c.toUpperCase(),!/^[0-9A-Z]{7}$/.test(c))return!1;for(var d=0,e=[1,3,1,7,3,9,1],f=c.length,g=0;f-1>g;g++)d+=e[g]*parseInt(c.charAt(g),36);return d=(10-d%10)%10,d+""===c.charAt(f-1)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.siren=a.extend(a.fn.bootstrapValidator.i18n.siren||{},{"default":"Please enter a valid SIREN number"}),a.fn.bootstrapValidator.validators.siren={validate:function(b,c){var d=c.val();return""===d?!0:/^\d{9}$/.test(d)?a.fn.bootstrapValidator.helpers.luhn(d):!1}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.siret=a.extend(a.fn.bootstrapValidator.i18n.siret||{},{"default":"Please enter a valid SIRET number"}),a.fn.bootstrapValidator.validators.siret={validate:function(a,b){var c=b.val();if(""===c)return!0;for(var d,e=0,f=c.length,g=0;f>g;g++)d=parseInt(c.charAt(g),10),g%2===0&&(d=2*d,d>9&&(d-=9)),e+=d;return e%10===0}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.step=a.extend(a.fn.bootstrapValidator.i18n.step||{},{"default":"Please enter a valid step of %s"}),a.fn.bootstrapValidator.validators.step={html5Attributes:{message:"message",base:"baseValue",step:"step"},validate:function(b,c,d){var e=c.val();if(""===e)return!0;
vendor: 5,171 bytes, line 6685
6685if(d=a.extend({},{baseValue:0,step:1},d),e=parseFloat(e),!a.isNumeric(e))return!1;var f=function(a,b){var c=Math.pow(10,b);a*=c;var d=a>0|-(0>a),e=a%1===.5*d;return e?(Math.floor(a)+(d>0))/c:Math.round(a)/c},g=function(a,b){if(0===b)return 1;var c=(a+"").split("."),d=(b+"").split("."),e=(1===c.length?0:c[1].length)+(1===d.length?0:d[1].length);return f(a-b*Math.floor(a/b),e)},h=g(e-d.baseValue,d.step);return{valid:0===h||h===d.step,message:a.fn.bootstrapValidator.helpers.format(d.message||a.fn.bootstrapValidator.i18n.step["default"],[d.step])}}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.stringCase=a.extend(a.fn.bootstrapValidator.i18n.stringCase||{},{"default":"Please enter only lowercase characters",upper:"Please enter only uppercase characters"}),a.fn.bootstrapValidator.validators.stringCase={html5Attributes:{message:"message","case":"case"},validate:function(b,c,d){var e=c.val();if(""===e)return!0;var f=(d["case"]||"lower").toLowerCase();return{valid:"upper"===f?e===e.toUpperCase():e===e.toLowerCase(),message:d.message||("upper"===f?a.fn.bootstrapValidator.i18n.stringCase.upper:a.fn.bootstrapValidator.i18n.stringCase["default"])}}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.stringLength=a.extend(a.fn.bootstrapValidator.i18n.stringLength||{},{"default":"Please enter a value with valid length",less:"Please enter less than %s characters",more:"Please enter more than %s characters",between:"Please enter value between %s and %s characters long"}),a.fn.bootstrapValidator.validators.stringLength={html5Attributes:{message:"message",min:"min",max:"max"},enableByHtml5:function(b){var c={},d=b.attr("maxlength"),e=b.attr("minlength");return d&&(c.max=parseInt(d,10)),e&&(c.min=parseInt(e,10)),a.isEmptyObject(c)?!1:c},validate:function(b,c,d){var e=c.val();if(""===e)return!0;var f=a.isNumeric(d.min)?d.min:b.getDynamicOption(c,d.min),g=a.isNumeric(d.max)?d.max:b.getDynamicOption(c,d.max),h=e.length,i=!0,j=d.message||a.fn.bootstrapValidator.i18n.stringLength["default"];switch((f&&h<parseInt(f,10)||g&&h>parseInt(g,10))&&(i=!1),!0){case!!f&&!!g:j=a.fn.bootstrapValidator.helpers.format(d.message||a.fn.bootstrapValidator.i18n.stringLength.between,[parseInt(f,10),parseInt(g,10)]);break;case!!f:j=a.fn.bootstrapValidator.helpers.format(d.message||a.fn.bootstrapValidator.i18n.stringLength.more,parseInt(f,10));break;case!!g:j=a.fn.bootstrapValidator.helpers.format(d.message||a.fn.bootstrapValidator.i18n.stringLength.less,parseInt(g,10))}return{valid:i,message:j}}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.uri=a.extend(a.fn.bootstrapValidator.i18n.uri||{},{"default":"Please enter a valid URI"}),a.fn.bootstrapValidator.validators.uri={html5Attributes:{message:"message",allowlocal:"allowLocal",protocol:"protocol"},enableByHtml5:function(a){return"url"===a.attr("type")},validate:function(a,b,c){var d=b.val();if(""===d)return!0;var e=c.allowLocal===!0||"true"===c.allowLocal,f=(c.protocol||"http, https, ftp").split(",").join("|").replace(/\s/g,""),g=new RegExp("^(?:(?:"+f+")://)(?:\\S+(?::\\S*)?@)?(?:"+(e?"":"(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})")+"(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))"+(e?"?":"")+")(?::\\d{2,5})?(?:/[^\\s]*)?$","i");return g.test(d)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.uuid=a.extend(a.fn.bootstrapValidator.i18n.uuid||{},{"default":"Please enter a valid UUID number",version:"Please enter a valid UUID version %s number"}),a.fn.bootstrapValidator.validators.uuid={html5Attributes:{message:"message",version:"version"},validate:function(b,c,d){var e=c.val();if(""===e)return!0;var f={3:/^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i,4:/^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,5:/^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,all:/^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i},g=d.version?d.version+"":"all";return{valid:null===f[g]?!0:f[g].test(e),message:d.version?a.fn.bootstrapValidator.helpers.format(d.message||a.fn.bootstrapValidator.i18n.uuid.version,d.version):d.message||a.fn.bootstrapValidator.i18n.uuid["default"]}}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.vat=a.extend(a.fn.bootstrapValidator.i18n.vat||{},{"default":"Please enter a valid VAT number",countryNotSupported:"The country code %s is not supported",country:"Please enter a valid VAT number in %s",countries:{AT:"Austria",BE:"Belgium",BG:"Bulgaria",BR:"Brazil",CH:"Switzerland",CY:"Cyprus",CZ:"Czech Republic",DE:"Germany",DK:"Denmark",EE:"Estonia",ES:"Spain",FI:"Finland",FR:"France",GB:"United Kingdom",GR:"Greek",EL:"Greek",HU:"Hungary",HR:"Croatia",IE:"Ireland",IS:"Iceland",IT:"Italy",LT:"Lithuania",LU:"Luxembourg",LV:"Latvia",MT:"Malta",NL:"Netherlands",NO:"Norway",PL:"Poland",PT:"Portugal",RO:"Romania",RU:"Russia",RS:"Serb
6685ia",SE:"Sweden",SI:"Slovenia",SK:"Slovakia",VE:"Venezuela",ZA:"South Africa"}}),a.fn.bootstrapValidator.validators.vat={html5Attributes:{message:"message",country:"country"},COUNTRY_CODES:["AT","BE","BG","BR","CH","CY","CZ","DE","DK","EE","EL","ES","FI","FR","GB","GR","HR","HU","IE","IS","IT","LT","LU","LV","MT","NL","NO","PL","PT","RO","RU","RS","SE","SK","SI","VE","ZA"],validate:function(b,c,d){var e=c.val();if(""===e)return!0;var f=d.country;if(f?("string"!=typeof f||-1===a.inArray(f.toUpperCase(),this.COUNTRY_CODES))&&(f=b.getDynamicOption(c,f)):f=e.substr(0,2),-1===a.inArray(f,this.COUNTRY_CODES))return{valid:!1,message:a.fn.bootstrapValidator.helpers.format(a.fn.bootstrapValidator.i18n.vat.countryNotSupported,f)};var g=["_",f.toLowerCase()].join("");return this[g](e)?!0:{valid:!1,message:a.fn.bootstrapValidator.helpers.format(d.message||a.fn.bootstrapValidator.i18n.vat.country,a.fn.bootstrapValidator.i18n.vat.countries[f.toUpperCase()])}},_at:function(a){if(/^ATU[0-9]{8}$/.test(a)&&(a=a.substr(2)),!/^U[0-9]{8}$/.test(a))return!1;a=a.substr(1);for(var b=0,c=[1,2,1,2,1,2,1],d=0,e=0;7>e;e++)d=parseInt(a.charAt(e),10)*c[e],d>9&&(d=Math.floor(d/10)+d%10),b+=d;return b=10-(b+4)%10,10===b&&(b=0),b+""===a.substr(7,1)},_be:function(a){if(/^BE[0]{0,1}[0-9]{9}$/.test(a)&&(a=a.substr(2)),!/^[0]{0,1}[0-9]{9}$/.test(a))return!1;if(9===a.length&&(a="0"+a),"0"===a.substr(1,1))return!1;var b=parseInt(a.substr(0,8),10)+parseInt(a.substr(8,2),10);return b%97===0},_bg:function(b){if(/^BG[0-9]{9,10}$/.test(b)&&(b=b.substr(2)),!/^[0-9]{9,10}$/.test(b))return!1;var c=0,d=0;if(9===b.length){for(d=0;8>d;d++)c+=parseInt(b.charAt(d),10)*(d+1);if(c%=11,10===c)for(c=0,d=0;8>d;d++)c+=parseInt(b.charAt(d),10)*(d+3);return c%=10,c+""===b.substr(8)}if(10===b.length){var e=function(b){var c=parseInt(b.substr(0,2),10)+1900,d=parseInt(b.substr(2,2),10),e=parseInt(b.substr(4,2),10);if(d>40?(c+=100,d-=40):d>20&&(c-=100,d-=20),!a.fn.bootstrapValidator.helpers.date(c,d,e))return!1;for(var f=0,g=[2,4,8,5,10,9,7,3,6],h=0;9>h;h++)f+=parseInt(b.charAt(h),10)*g[h];return f=f%11%10,f+""===b.substr(9,1)},f=function(a){for(var b=0,c=[21,19,17,13,11,9,7,3,1],d=0;9>d;d++)b+=parseInt(a.charAt(d),10)*c[d];return b%=10,b+""===a.substr(9,1)},g=function(a){for(var b=0,c=[4,3,2,7,6,5,4,3,2],d=0;9>d;d++)b+=parseInt(a.charAt(d),10)*c[d];return b=11-b%11,10===b?!1:(11===b&&(b=0),b+""===a.substr(9,1))};return e(b)||f(b)||g(b)}return!1},_br:function(a){if(""===a)return!0;var b=a.replace(/[^\d]+/g,"");if(""===b||14!==b.length)return!1;if("00000000000000"===b||"11111111111111"===b||"22222222222222"===b||"33333333333333"===b||"44444444444444"===b||"55555555555555"===b||"66666666666666"===b||"77777777777777"===b||"88888888888888"===b||"99999999999999"===b)return!1;for(var c=b.length-2,d=b.substring(0,c),e=b.substring(c),f=0,g=c-7,h=c;h>=1;h--)f+=parseInt(d.charAt(c-h),10)*g--,2>g&&(g=9);var i=2>f%11?0:11-f%11;if(i!==parseInt(e.charAt(0),10))return!1;for(c+=1,d=b.substring(0,c),f=0,g=c-7,h=c;h>=1;h--)f+=parseInt(d.charAt(c-h),10)*g--,2>g&&(g=9);return i=2>f%11?0:11-f%11,i===parseInt(e.charAt(1),10)},_ch:function(a){if(/^CHE[0-9]{9}(MWST)?$/.test(a)&&(a=a.substr(2)),!/^E[0-9]{9}(MWST)?$/.test(a))return!1;a=a.substr(1);for(var b=0,c=[5,4,3,2,7,6,5,4],d=0;8>d;d++)b+=parseInt(a.charAt(d),10)*c[d];return b=11-b%11,10===b?!1:(11===b&&(b=0),b+""===a.substr(8,1))},_cy:function(a){if(/^CY[0-5|9]{1}[0-9]{7}[A-Z]{1}$/.test(a)&&(a=a.substr(2)),!/^[0-5|9]{1}[0-9]{7}[A-Z]{1}$/.test(a))return!1;if("12"===a.substr(0,2))return!1;for(var b=0,c={0:1,1:0,2:5,3:7,4:9,5:13,6:15,7:17,8:19,9:21},d=0;8>d;d++){var e=parseInt(a.charAt(d),10);d%2===0&&(e=c[e+""]),b+=e}return b="ABCDEFGHIJKLMNOPQRSTUVWXYZ"[b%26],b+""===a.substr(8,1)},_cz:function(b){if(/^CZ[0-9]{8,10}$/.test(b)&&(b=b.substr(2)),!/^[0-9]{8,10}$/.test(b))return!1;var c=0,d=0;if(8===b.length){if(b.charAt(0)+""=="9")return!1;for(c=0,d=0;7>d;d++)c+=parseInt(b.charAt(d),10)*(8-d);return c=11-c%11,10===c&&(c=0),11===c&&(c=1),c+""===b.substr(7,1)}if(9===b.length&&b.charAt(0)+""=="6"){for(c=0,d=0;7>d;d++)c+=parseInt(b.charAt(d+1),10)*(8-d);return c=11-c%11,10===c&&(c=0),11===c&&(c=1),c=[8,7,6,5,4,3,2,1,0,9,10][c-1],c+""===b.substr(8,1)}if(9===b.length||10===b.length){var e=1900+parseInt(b.substr(0,2),10),f=parseInt(b.substr(2,2),10)%50%20,g=parseInt(b.substr(4,2),10);if(9===b.length){if(e>
vendor: 8,828 bytes, lines 6685-6686
6685=1980&&(e-=100),e>1953)return!1}else 1954>e&&(e+=100);if(!a.fn.bootstrapValidator.helpers.date(e,f,g))return!1;if(10===b.length){var h=parseInt(b.substr(0,9),10)%11;return 1985>e&&(h%=10),h+""===b.substr(9,1)}return!0}return!1},_de:function(b){return/^DE[0-9]{9}$/.test(b)&&(b=b.substr(2)),/^[0-9]{9}$/.test(b)?a.fn.bootstrapValidator.helpers.mod11And10(b):!1},_dk:function(a){if(/^DK[0-9]{8}$/.test(a)&&(a=a.substr(2)),!/^[0-9]{8}$/.test(a))return!1;for(var b=0,c=[2,7,6,5,4,3,2,1],d=0;8>d;d++)b+=parseInt(a.charAt(d),10)*c[d];return b%11===0},_ee:function(a){if(/^EE[0-9]{9}$/.test(a)&&(a=a.substr(2)),!/^[0-9]{9}$/.test(a))return!1;for(var b=0,c=[3,7,1,3,7,1,3,7,1],d=0;9>d;d++)b+=parseInt(a.charAt(d),10)*c[d];return b%10===0},_es:function(a){if(/^ES[0-9A-Z][0-9]{7}[0-9A-Z]$/.test(a)&&(a=a.substr(2)),!/^[0-9A-Z][0-9]{7}[0-9A-Z]$/.test(a))return!1;var b=function(a){var b=parseInt(a.substr(0,8),10);return b="TRWAGMYFPDXBNJZSQVHLCKE"[b%23],b+""===a.substr(8,1)},c=function(a){var b=["XYZ".indexOf(a.charAt(0)),a.substr(1)].join("");return b=parseInt(b,10),b="TRWAGMYFPDXBNJZSQVHLCKE"[b%23],b+""===a.substr(8,1)},d=function(a){var b,c=a.charAt(0);if(-1!=="KLM".indexOf(c))return b=parseInt(a.substr(1,8),10),b="TRWAGMYFPDXBNJZSQVHLCKE"[b%23],b+""===a.substr(8,1);if(-1!=="ABCDEFGHJNPQRSUVW".indexOf(c)){for(var d=0,e=[2,1,2,1,2,1,2],f=0,g=0;7>g;g++)f=parseInt(a.charAt(g+1),10)*e[g],f>9&&(f=Math.floor(f/10)+f%10),d+=f;return d=10-d%10,d+""===a.substr(8,1)||"JABCDEFGHI"[d]===a.substr(8,1)}return!1},e=a.charAt(0);return/^[0-9]$/.test(e)?b(a):/^[XYZ]$/.test(e)?c(a):d(a)},_fi:function(a){if(/^FI[0-9]{8}$/.test(a)&&(a=a.substr(2)),!/^[0-9]{8}$/.test(a))return!1;for(var b=0,c=[7,9,10,5,8,4,2,1],d=0;8>d;d++)b+=parseInt(a.charAt(d),10)*c[d];return b%11===0},_fr:function(b){if(/^FR[0-9A-Z]{2}[0-9]{9}$/.test(b)&&(b=b.substr(2)),!/^[0-9A-Z]{2}[0-9]{9}$/.test(b))return!1;if(!a.fn.bootstrapValidator.helpers.luhn(b.substr(2)))return!1;if(/^[0-9]{2}$/.test(b.substr(0,2)))return b.substr(0,2)===parseInt(b.substr(2)+"12",10)%97+"";var c,d="0123456789ABCDEFGHJKLMNPQRSTUVWXYZ";return c=/^[0-9]{1}$/.test(b.charAt(0))?24*d.indexOf(b.charAt(0))+d.indexOf(b.charAt(1))-10:34*d.indexOf(b.charAt(0))+d.indexOf(b.charAt(1))-100,(parseInt(b.substr(2),10)+1+Math.floor(c/11))%11===c%11},_gb:function(a){if((/^GB[0-9]{9}$/.test(a)||/^GB[0-9]{12}$/.test(a)||/^GBGD[0-9]{3}$/.test(a)||/^GBHA[0-9]{3}$/.test(a)||/^GB(GD|HA)8888[0-9]{5}$/.test(a))&&(a=a.substr(2)),!(/^[0-9]{9}$/.test(a)||/^[0-9]{12}$/.test(a)||/^GD[0-9]{3}$/.test(a)||/^HA[0-9]{3}$/.test(a)||/^(GD|HA)8888[0-9]{5}$/.test(a)))return!1;var b=a.length;if(5===b){var c=a.substr(0,2),d=parseInt(a.substr(2),10);return"GD"===c&&500>d||"HA"===c&&d>=500}if(11===b&&("GD8888"===a.substr(0,6)||"HA8888"===a.substr(0,6)))return"GD"===a.substr(0,2)&&parseInt(a.substr(6,3),10)>=500||"HA"===a.substr(0,2)&&parseInt(a.substr(6,3),10)<500?!1:parseInt(a.substr(6,3),10)%97===parseInt(a.substr(9,2),10);if(9===b||12===b){for(var e=0,f=[8,7,6,5,4,3,2,10,1],g=0;9>g;g++)e+=parseInt(a.charAt(g),10)*f[g];return e%=97,parseInt(a.substr(0,3),10)>=100?0===e||42===e||55===e:0===e}return!0},_gr:function(a){if(/^(GR|EL)[0-9]{9}$/.test(a)&&(a=a.substr(2)),!/^[0-9]{9}$/.test(a))return!1;8===a.length&&(a="0"+a);for(var b=0,c=[256,128,64,32,16,8,4,2],d=0;8>d;d++)b+=parseInt(a.charAt(d),10)*c[d];return b=b%11%10,b+""===a.substr(8,1)},_el:function(a){return this._gr(a)},_hu:function(a){if(/^HU[0-9]{8}$/.test(a)&&(a=a.substr(2)),!/^[0-9]{8}$/.test(a))return!1;for(var b=0,c=[9,7,3,1,9,7,3,1],d=0;8>d;d++)b+=parseInt(a.charAt(d),10)*c[d];return b%10===0},_hr:function(b){return/^HR[0-9]{11}$/.test(b)&&(b=b.substr(2)),/^[0-9]{11}$/.test(b)?a.fn.bootstrapValidator.helpers.mod11And10(b):!1},_ie:function(a){if(/^IE[0-9]{1}[0-9A-Z\*\+]{1}[0-9]{5}[A-Z]{1,2}$/.test(a)&&(a=a.substr(2)),!/^[0-9]{1}[0-9A-Z\*\+]{1}[0-9]{5}[A-Z]{1,2}$/.test(a))return!1;var b=function(a){for(;a.length<7;)a="0"+a;for(var b="WABCDEFGHIJKLMNOPQRSTUV",c=0,d=0;7>d;d++)c+=parseInt(a.charAt(d),10)*(8-d);return c+=9*b.indexOf(a.substr(7)),b[c%23]};return/^[0-9]+$/.test(a.substr(0,7))?a.charAt(7)===b(a.substr(0,7)+a.substr(8)+""):-1!=="ABCDEFGHIJKLMNOPQRSTUVWXYZ+*".indexOf(a.charAt(1))?a.charAt(7)===b(a.substr(2,5)+a.substr(0,1)+""):!0},_is:function(a){return/^IS[0-9]{5,6}$/.test(a)&&(a=a.substr(2)),/^[0-9]{5,6}$/.test(a)},_it:function(b){if(/^IT[0-9]{11}$/.test(b)&&(b=b.substr(2)),!/^[0-9]{11}$/.test(b))return!1;if(0===parseInt(b.substr(0,7),10))return!1;var c=parseInt(b.substr(7,3),10);return 1>c||c>201&&999!==c&&888!==c?!1:a.fn.bootstrapValidator.helpers.luhn(b)},_lt:function(a){if(/^LT([0-9]{7}1[0-9]{1}|[0-9]{10}1[0-9]{1})$/.test(a)&&(a=a.substr(2)),!/^([0-9]{7}1[0-9]{1}|[0-9]{10}1[0-9]{1})$/.test(a))return!1;var b,c=a.length,d=0;for(b=0;c-1>b;b++)d+=parseInt(a.charAt(b),10)*(1+b%9);var e=d%11;if(10===e)for(d=0,b=0;c-1>b;b++)d+=parseInt(a.charAt(b),10)*(1+(b+2)%9);return e=e%11%10,e+""===a.charAt(c-1)},_lu:function(a){return/^LU[0-9]{8}$/.test(a)&&(a=a.substr(2)),/^[0-9]{8}$/.test(a)?parseInt(a.substr(0,6),10)%89+""===a.substr(6,2):!1},_lv:function(b){if(/^LV[0-9]{11}$/.test(b)&&(b=b.substr(2)),!/^[0-9]{11}$/.test(b))return!1;var c,d=parseInt(b.charAt(0),10),e=0,f=[],g=b.length;
6686if(d>3){for(e=0,f=[9,1,4,8,3,10,2,5,7,6,1],c=0;g>c;c++)e+=parseInt(b.charAt(c),10)*f[c];return e%=11,3===e}var h=parseInt(b.substr(0,2),10),i=parseInt(b.substr(2,2),10),j=parseInt(b.substr(4,2),10);if(j=j+1800+100*parseInt(b.charAt(6),10),!a.fn.bootstrapValidator.helpers.date(j,i,h))return!1;for(e=0,f=[10,5,8,4,2,1,6,3,7,9],c=0;g-1>c;c++)e+=parseInt(b.charAt(c),10)*f[c];return e=(e+1)%11%10,e+""===b.charAt(g-1)},_mt:function(a){if(/^MT[0-9]{8}$/.test(a)&&(a=a.substr(2)),!/^[0-9]{8}$/.test(a))return!1;for(var b=0,c=[3,4,6,7,8,9,10,1],d=0;8>d;d++)b+=parseInt(a.charAt(d),10)*c[d];return b%37===0},_nl:function(a){if(/^NL[0-9]{9}B[0-9]{2}$/.test(a)&&(a=a.substr(2)),!/^[0-9]{9}B[0-9]{2}$/.test(a))return!1;for(var b=0,c=[9,8,7,6,5,4,3,2],d=0;8>d;d++)b+=parseInt(a.charAt(d),10)*c[d];return b%=11,b>9&&(b=0),b+""===a.substr(8,1)},_no:function(a){if(/^NO[0-9]{9}$/.test(a)&&(a=a.substr(2)),!/^[0-9]{9}$/.test(a))return!1;for(var b=0,c=[3,2,7,6,5,4,3,2],d=0;8>d;d++)b+=parseInt(a.charAt(d),10)*c[d];return b=11-b%11,11===b&&(b=0),b+""===a.substr(8,1)},_pl:function(a){if(/^PL[0-9]{10}$/.test(a)&&(a=a.substr(2)),!/^[0-9]{10}$/.test(a))return!1;for(var b=0,c=[6,5,7,2,3,4,5,6,7,-1],d=0;10>d;d++)b+=parseInt(a.charAt(d),10)*c[d];return b%11===0},_pt:function(a){if(/^PT[0-9]{9}$/.test(a)&&(a=a.substr(2)),!/^[0-9]{9}$/.test(a))return!1;for(var b=0,c=[9,8,7,6,5,4,3,2],d=0;8>d;d++)b+=parseInt(a.charAt(d),10)*c[d];return b=11-b%11,b>9&&(b=0),b+""===a.substr(8,1)},_ro:function(a){if(/^RO[1-9][0-9]{1,9}$/.test(a)&&(a=a.substr(2)),!/^[1-9][0-9]{1,9}$/.test(a))return!1;for(var b=a.length,c=[7,5,3,2,1,7,5,3,2].slice(10-b),d=0,e=0;b-1>e;e++)d+=parseInt(a.charAt(e),10)*c[e];return d=10*d%11%10,d+""===a.substr(b-1,1)},_ru:function(a){if(/^RU([0-9]{10}|[0-9]{12})$/.test(a)&&(a=a.substr(2)),!/^([0-9]{10}|[0-9]{12})$/.test(a))return!1;var b=0;if(10===a.length){var c=0,d=[2,4,10,3,5,9,4,6,8,0];for(b=0;10>b;b++)c+=parseInt(a.charAt(b),10)*d[b];return c%=11,c>9&&(c%=10),c+""===a.substr(9,1)}if(12===a.length){var e=0,f=[7,2,4,10,3,5,9,4,6,8,0],g=0,h=[3,7,2,4,10,3,5,9,4,6,8,0];for(b=0;11>b;b++)e+=parseInt(a.charAt(b),10)*f[b],g+=parseInt(a.charAt(b),10)*h[b];return e%=11,e>9&&(e%=10),g%=11,g>9&&(g%=10),e+""===a.substr(10,1)&&g+""===a.substr(11,1)}return!1},_rs:function(a){if(/^RS[0-9]{9}$/.test(a)&&(a=a.substr(2)),!/^[0-9]{9}$/.test(a))return!1;for(var b=10,c=0,d=0;8>d;d++)c=(parseInt(a.charAt(d),10)+b)%10,0===c&&(c=10),b=2*c%11;return(b+parseInt(a.substr(8,1),10))%10===1},_se:function(b){return/^SE[0-9]{10}01$/.test(b)&&(b=b.substr(2)),/^[0-9]{10}01$/.test(b)?(b=b.substr(0,10),a.fn.bootstrapValidator.helpers.luhn(b)):!1},_si:function(a){if(/^SI[0-9]{8}$/.test(a)&&(a=a.substr(2)),!/^[0-9]{8}$/.test(a))return!1;for(var b=0,c=[8,7,6,5,4,3,2],d=0;7>d;d++)b+=parseInt(a.charAt(d),10)*c[d];return b=11-b%11,10===b&&(b=0),b+""===a.substr(7,1)},_sk:function(a){return/^SK[1-9][0-9][(2-4)|(6-9)][0-9]{7}$/.test(a)&&(a=a.substr(2)),/^[1-9][0-9][(2-4)|(6-9)][0-9]{7}$/.test(a)?parseInt(a,10)%11===0:!1},_ve:function(a){if(/^VE[VEJPG][0-9]{9}$/.test(a)&&(a=a.substr(2)),!/^[VEJPG][0-9]{9}$/.test(a))return!1;for(var b={V:4,E:8,J:12,P:16,G:20},c=b[a.charAt(0)],d=[3,2,7,6,5,4,3,2],e=0;8>e;e++)c+=parseInt(a.charAt(e+1),10)*d[e];return c=11-c%11,(11===c||10===c)&&(c=0),c+""===a.substr(9,1)},_za:function(a){return/^ZA4[0-9]{9}$/.test(a)&&(a=a.substr(2)),/^4[0-9]{9}$/.test(a)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.vin=a.extend(a.fn.bootstrapValidator.i18n.vin||{},{"default":"Please enter a valid VIN number"}),a.fn.bootstrapValidator.validators.vin={validate:function(a,b){var c=b.val();if(""===c)return!0;
6686if(!/^[a-hj-npr-z0-9]{8}[0-9xX][a-hj-npr-z0-9]{8}$/i.test(c))return!1;c=c.toUpperCase();for(var d={A:1,B:2,C:3,D:4,E:5,F:6,G:7,H:8,J:1,K:2,L:3,M:4,N:5,P:7,R:9,S:2,T:3,U:4,V:5,W:6,X:7,Y:8,Z:9,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,0:0},e=[8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2],f=0,g=c.length,h=0;g>h;h++)f+=d[c.charAt(h)+""]*e[h];var i=f%11;return 10===i&&(i="X"),i+""===c.charAt(8)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.i18n.zipCode=a.extend(a.fn.bootstrapValidator.i18n.zipCode||{},{"default":"Please enter a valid postal code",countryNotSupported:"The country code %s is not supported",country:"Please enter a valid postal code in %s",countries:{BR:"Brazil",CA:"Canada",CZ:"Czech Republic",DK:"Denmark",GB:"United Kingdom",IT:"Italy",MA:"Morocco",NL:"Netherlands",RO:"Romania",RU:"Russia",SE:"Sweden",SG:"Singapore",SK:"Slovakia",US:"USA"}}),a.fn.bootstrapValidator.validators.zipCode={html5Attributes:{message:"message",country:"country"},COUNTRY_CODES:["BR","CA","CZ","DK","GB","IT","MA","NL","RO","RU","SE","SG","SK","US"],validate:function(b,c,d){var e=c.val();if(""===e||!d.country)return!0;var f=d.country;if(("string"!=typeof f||-1===a.inArray(f,this.COUNTRY_CODES))&&(f=b.getDynamicOption(c,f)),!f||-1===a.inArray(f.toUpperCase(),this.COUNTRY_CODES))return{valid:!1,message:a.fn.bootstrapValidator.helpers.format(a.fn.bootstrapValidator.i18n.zipCode.countryNotSupported,f)};var g=!1;switch(f=f.toUpperCase()){case"BR":g=/^(\d{2})([\.]?)(\d{3})([\-]?)(\d{3})$/.test(e);break;case"CA":g=/^(?:A|B|C|E|G|H|J|K|L|M|N|P|R|S|T|V|X|Y){1}[0-9]{1}(?:A|B|C|E|G|H|J|K|L|M|N|P|R|S|T|V|W|X|Y|Z){1}\s?[0-9]{1}(?:A|B|C|E|G|H|J|K|L|M|N|P|R|S|T|V|W|X|Y|Z){1}[0-9]{1}$/i.test(e);break;case"CZ":g=/^(\d{3})([ ]?)(\d{2})$/.test(e);break;case"DK":g=/^(DK(-|\s)?)?\d{4}$/i.test(e);break;case"GB":g=this._gb(e);break;case"IT":g=/^(I-|IT-)?\d{5}$/i.test(e);break;case"MA":g=/^[1-9][0-9]{4}$/i.test(e);break;case"NL":g=/^[1-9][0-9]{3} ?(?!sa|sd|ss)[a-z]{2}$/i.test(e);break;case"RO":g=/^(0[1-8]{1}|[1-9]{1}[0-5]{1})?[0-9]{4}$/i.test(e);break;case"RU":g=/^[0-9]{6}$/i.test(e);break;case"SE":g=/^(S-)?\d{3}\s?\d{2}$/i.test(e);break;case"SG":g=/^([0][1-9]|[1-6][0-9]|[7]([0-3]|[5-9])|[8][0-2])(\d{4})$/i.test(e);break;case"SK":g=/^(\d{3})([ ]?)(\d{2})$/.test(e);break;case"US":default:g=/^\d{4,5}([\-]?\d{4})?$/.test(e)}return{valid:g,message:a.fn.bootstrapValidator.helpers.format(d.message||a.fn.bootstrapValidator.i18n.zipCode.country,a.fn.bootstrapValidator.i18n.zipCode.countries[f])}},_gb:function(a){for(var b="[ABCDEFGHIJKLMNOPRSTUWYZ]",c="[ABCDEFGHKLMNOPQRSTUVWXY]",d="[ABCDEFGHJKPMNRSTUVWXY]",e="[ABEHMNPRVWXY]",f="[ABDEFGHJLNPQRSTUWXYZ]",g=[new RegExp("^("+b+"{1}"+c+"?[0-9]{1,2})(\\s*)([0-9]{1}"+f+"{2})$","i"),new RegExp("^("+b+"{1}[0-9]{1}"+d+"{1})(\\s*)([0-9]{1}"+f+"{2})$","i"),new RegExp("^("+b+"{1}"+c+"{1}?[0-9]{1}"+e+"{1})(\\s*)([0-9]{1}"+f+"{2})$","i"),new RegExp("^(BF1)(\\s*)([0-6]{1}[ABDEFGHJLNPQRST]{1}[ABDEFGHJLNPQRSTUWZYZ]{1})$","i"),/^(GIR)(\s*)(0AA)$/i,/^(BFPO)(\s*)([0-9]{1,4})$/i,/^(BFPO)(\s*)(c\/o\s*[0-9]{1,3})$/i,/^([A-Z]{4}
6686)(\s*)(1ZZ)$/i,/^(AI-2640)$/i],h=0;h<g.length;h++)if(g[h].test(a))return!0;return!1}}}(window.jQuery);;
6687(function($) {
6688    $.fn.bootstrapValidator.i18n = $.extend(true, $.fn.bootstrapValidator.i18n, {
6689        base64: {
6690            'default': 'Vui lòng nhập chuỗi mã hoá base64 hợp lệ'
6691        },
6692        between: {
6693            'default': 'Vui lòng nhập giá trị nằm giữa %s và %s',
6694            notInclusive: 'Vui lòng nhập giá trị nằm giữa %s và %s'
6695        },
6696        callback: {
6697            'default': 'Vui lòng nhập giá trị hợp lệ'
6698        },
6699        choice: {
6700            'default': 'Vui lòng nhập giá trị hợp lệ',
6701            less: 'Vui lòng chọn ít nhất %s lựa chọn',
6702            more: 'Vui lòng chọn nhiều nhất %s lựa chọn',
6703            between: 'Vui lòng chọn %s - %s lựa chọn'
6704        },
6705        creditCard: {
6706            'default': 'Vui lòng nhập số thẻ tín dụng hợp lệ'
6707        },
6708        cusip: {
6709            'default': 'Vui lòng nhập số CUSIP hợp lệ'
6710        },
6711        cvv: {
6712            'default': 'Vui lòng nhập số CVV hợp lệ'
6713        },
6714        date: {
6715            'default': 'Vui lòng nhập ngày hợp lệ'
6716        },
6717        different: {
6718            'default': 'Vui lòng nhập một giá trị khác'
6719        },
6720        digits: {
6721             'default': 'Vui lòng chỉ nhập số'
6722        },
6723        ean: {
6724            'default': 'Vui lòng nhập số EAN hợp lệ'
6725        },
6726        emailAddress: {
6727            'default': 'Vui lòng nhập địa chỉ email hợp lệ'
6728        },
6729        file: {
6730            'default': 'Vui lòng chọn file hợp lệ'
6731        },
6732        greaterThan: {
6733            'default': 'Vui lòng nhập giá trị lớn hơn hoặc bằng %s',
6734            notInclusive: 'Vui lòng nhập giá trị lớn hơn %s'
6735        },
6736        grid: {
6737            'default': 'Vui lòng nhập số GRId hợp lệ'
6738        },
6739        hex: {
6740            'default': 'Vui lòng nhập số hexa hợp lệ'
6741        },
6742        hexColor: {
6743            'default': 'Vui lòng nhập mã màu hợp lệ'
6744        },
6745        iban: {
6746            'default': 'Vui lòng nhập số IBAN hợp lệ',
6747            countryNotSupported: 'Mã quốc gia %s không được hỗ trợ',
6748            country: 'Vui lòng nhập mã IBAN hợp lệ của %s',
6749            countries: {
6750                AD: 'Andorra',
6751                AE: 'Tiểu vương quốc Ả Rập thống nhất',
6752                AL: 'Albania',
6753                AO: 'Angola',
6754                AT: 'Áo',
6755                AZ: 'Azerbaijan',
6756                BA: 'Bosnia và Herzegovina',
6757                BE: 'Bỉ',
6758                BF: 'Burkina Faso',
6759                BG: 'Bulgaria',
6760                BH: 'Bahrain',
6761                BI: 'Burundi',
6762                BJ: 'Benin',
6763                BR: 'Brazil',
6764                CH: 'Thuỵ Sĩ',
6765                CI: 'Bờ Biển Ngà',
6766                CM: 'Cameroon',
6767                CR: 'Costa Rica',
6768                CV: 'Cape Verde',
6769                CY: 'Síp',
6770                CZ: 'Séc',
6771                DE: 'Đức',
6772                DK: 'Đan Mạch',
6773                DO: 'Dominican',
6774                DZ: 'Algeria',
6775                EE: 'Estonia',
6776                ES: 'Tây Ban Nha',
6777                FI: 'Phần Lan',
6778                FO: 'Đảo Faroe',
6779                FR: 'Pháp',
6780                GB: 'Vương quốc Anh',
6781                GE: 'Georgia',
6782                GI: 'Gibraltar',
6783                GL: 'Greenland',
6784                GR: 'Hy Lạp',
6785                GT: 'Guatemala',
6786                HR: 'Croatia',
6787                HU: 'Hungary',
6788                IE: 'Ireland',
6789                IL: 'Israel',
6790                IR: 'Iran',
6791                IS: 'Iceland',
6792                IT: 'Ý',
6793                JO: 'Jordan',
6794                KW: 'Kuwait',
6795                KZ: 'Kazakhstan',
6796                LB: 'Lebanon',
6797                LI: 'Liechtenstein',
6798                LT: 'Lithuania',
6799                LU: 'Luxembourg',
6800                LV: 'Latvia',
6801                MC: 'Monaco',
6802                MD: 'Moldova',
6803                ME: 'Montenegro',
6804                MG: 'Madagascar',
6805                MK: 'Macedonia',
6806                ML: 'Mali',
6807                MR: 'Mauritania',
6808                MT: 'Malta',
6809                MU: 'Mauritius',
6810                MZ: 'Mozambique',
6811                NL: 'Hà Lan',
6812                NO: 'Na Uy',
6813                PK: 'Pakistan',
6814                PL: 'Ba Lan',
6815                PS: 'Palestine',
6816                PT: 'Bồ Đào Nha',
6817                QA: 'Qatar',
6818                RO: 'Romania',
6819                RS: 'Serbia',
6820                SA: 'Ả Rập Xê Út',
6821                SE: 'Thuỵ Điển',
6822                SI: 'Slovenia',
6823                SK: 'Slovakia',
6824                SM: 'San Marino',
6825                SN: 'Senegal',
6826                TN: 'Tunisia',
6827                TR: 'Thổ Nhĩ Kỳ',
6828                VG: 'Đảo Virgin, Anh quốc'
6829            }
6830        },
6831        id: {
6832            'default': 'Vui lòng nhập mã ID hợp lệ',
6833            countryNotSupported: 'Mã quốc gia %s không được hỗ trợ',
6834            country: 'Vui lòng nhập mã ID hợp lệ của %s',
6835            countries: {
6836                BA: 'Bosnia và Herzegovina',
6837                BG: 'Bulgaria',
6838                BR: 'Brazil',
6839                CH: 'Thuỵ Sĩ',
6840                CL: 'Chi Lê',
6841                CN: 'Trung Quốc',
6842                CZ: 'Séc',
6843                DK: 'Đan Mạch',
6844                EE: 'Estonia',
6845                ES: 'Tây Ban Nha',
6846                FI: 'Phần Lan',
6847                HR: 'Croatia',
6848                IE: 'Ireland',
6849                IS: 'Iceland',
6850                LT: 'Lithuania',
6851                LV: 'Latvia',
6852                ME: 'Montenegro',
6853                MK: 'Macedonia',
6854                NL: 'Hà Lan',
6855                RO: 'Romania',
6856                RS: 'Serbia',
6857                SE: 'Thuỵ Điển',
6858                SI: 'Slovenia',
6859                SK: 'Slovakia',
6860                SM: 'San Marino',
6861                TH: 'Thái Lan',
6862                ZA: 'Nam Phi'
6863            }
6864        },
6865        identical: {
6866            'default': 'Vui lòng nhập cùng giá trị'
6867        },
6868        imei: {
6869            'default': 'Vui lòng nhập số IMEI hợp lệ'
6870        },
6871        imo: {
6872            'default': 'Vui lòng nhập số IMO hợp lệ'
6873        },
6874        integer: {
6875            'default': 'Vui lòng nhập số hợp lệ'
6876        },
6877        ip: {
6878            'default': 'Vui lòng nhập địa chỉ IP hợp lệ',
6879            ipv4: 'Vui lòng nhập địa chỉ IPv4 hợp lệ',
6880            ipv6: 'Vui lòng nhập địa chỉ IPv6 hợp lệ'
6881        },
6882        isbn: {
6883            'default': 'Vui lòng nhập số ISBN hợp lệ'
6884        },
6885        isin: {
6886            'default': 'Vui lòng nhập số ISIN hợp lệ'
6887        },
6888        ismn: {
6889            'default': 'Vui lòng nhập số ISMN hợp lệ'
6890        },
6891        issn: {
6892            'default': 'Vui lòng nhập số ISSN hợp lệ'
6893        },
6894        lessThan: {
6895            'default': 'Vui lòng nhập giá trị nhỏ hơn hoặc bằng %s',
6896            notInclusive: 'Vui lòng nhập giá trị nhỏ hơn %s'
6897        },
6898        mac: {
6899            'default': 'Vui lòng nhập địa chỉ MAC hợp lệ'
6900        },
6901        meid: {
6902            'default': 'Vui lòng nhập số MEID hợp lệ'
6903        },
6904        notEmpty: {
6905            'default': 'Vui lòng nhập giá trị'
6906        },
6907        numeric: {
6908            'default': 'Vui lòng nhập số hợp lệ'
6909        },
6910        phone: {
6911            'default': 'Vui lòng nhập số điện thoại hợp lệ',
6912            countryNotSupported: 'Mã quốc gia %s không được hỗ trợ',
6913            country: 'Vui lòng nhập số điện thoại hợp lệ của %s',
6914            countries: {
6915                BR: 'Brazil',
6916                CN: 'Trung Quốc',
6917                CZ: 'Séc',
6918                DK: 'Đan Mạch',
6919                ES: 'Tây Ban Nha',
6920                FR: 'Pháp',
6921                GB: 'Vương quốc Anh',
6922                MA: 'Maroc',
6923                PK: 'Pakistan',
6924                RO: 'Romania',
6925                RU: 'Nga',
6926                SK: 'Slovakia',
6927                TH: 'Thái Lan',
6928                US: 'Mỹ',
6929                VE: 'Venezuela'
6930            }
6931        },
6932        regexp: {
6933            'default': 'Vui lòng nhập giá trị thích hợp với biểu mẫu'
vendor: 17,204 bytes, lines 6934-7489
6934        },
6935        remote: {
6936            'default': 'Vui lòng nhập giá trị hợp lệ'
6937        },
6938        rtn: {
6939            'default': 'Vui lòng nhập số RTN hợp lệ'
6940        },
6941        sedol: {
6942            'default': 'Vui lòng nhập số SEDOL hợp lệ'
6943        },
6944        siren: {
6945            'default': 'Vui lòng nhập số Siren hợp lệ'
6946        },
6947        siret: {
6948            'default': 'Vui lòng nhập số Siret hợp lệ'
6949        },
6950        step: {
6951            'default': 'Vui lòng nhập bước nhảy của %s'
6952        },
6953        stringCase: {
6954            'default': 'Vui lòng nhập ký tự thường',
6955            upper: 'Vui lòng nhập ký tự in hoa'
6956        },
6957        stringLength: {
6958            'default': 'Vui lòng nhập giá trị có độ dài hợp lệ',
6959            less: 'Vui lòng nhập ít hơn %s ký tự',
6960            more: 'Vui lòng nhập nhiều hơn %s ký tự',
6961            between: 'Vui lòng nhập giá trị có độ dài trong khoảng %s và %s ký tự'
6962        },
6963        uri: {
6964            'default': 'Vui lòng nhập địa chỉ URI hợp lệ'
6965        },
6966        uuid: {
6967            'default': 'Vui lòng nhập số UUID hợp lệ',
6968            version: 'Vui lòng nhập số UUID phiên bản %s hợp lệ'
6969        },
6970        vat: {
6971            'default': 'Vui lòng nhập số VAT hợp lệ',
6972            countryNotSupported: 'Mã quốc gia %s không được hỗ trợ',
6973            country: 'Vui lòng nhập số VAT hợp lệ của %s',
6974            countries: {
6975                AT: 'Áo',
6976                BE: 'Bỉ',
6977                BG: 'Bulgaria',
6978                BR: 'Brazil',
6979                CH: 'Thuỵ Sĩ',
6980                CY: 'Síp',
6981                CZ: 'Séc',
6982                DE: 'Đức',
6983                DK: 'Đan Mạch',
6984                EE: 'Estonia',
6985                ES: 'Tây Ban Nha',
6986                FI: 'Phần Lan',
6987                FR: 'Pháp',
6988                GB: 'Vương quốc Anh',
6989                GR: 'Hy Lạp',
6990                EL: 'Hy Lạp',
6991                HU: 'Hungari',
6992                HR: 'Croatia',
6993                IE: 'Ireland',
6994                IS: 'Iceland',
6995                IT: 'Ý',
6996                LT: 'Lithuania',
6997                LU: 'Luxembourg',
6998                LV: 'Latvia',
6999                MT: 'Malta',
7000                NL: 'Hà Lan',
7001                NO: 'Na Uy',
7002                PL: 'Ba Lan',
7003                PT: 'Bồ Đào Nha',
7004                RO: 'Romania',
7005                RU: 'Nga',
7006                RS: 'Serbia',
7007                SE: 'Thuỵ Điển',
7008                SI: 'Slovenia',
7009                SK: 'Slovakia',
7010                VE: 'Venezuela',
7011                ZA: 'Nam Phi'
7012            }
7013        },
7014        vin: {
7015            'default': 'Vui lòng nhập số VIN hợp lệ'
7016        },
7017        zipCode: {
7018            'default': 'Vui lòng nhập mã bưu điện hợp lệ',
7019            countryNotSupported: 'Mã quốc gia %s không được hỗ trợ',
7020            country: 'Vui lòng nhập mã bưu điện hợp lệ của %s',
7021            countries: {
7022                BR: 'Brazil',
7023                CA: 'Canada',
7024                CZ: 'Séc',
7025                DK: 'Đan Mạch',
7026                GB: 'Vương quốc Anh',
7027                IT: 'Ý',
7028                MA: 'Maroc',
7029                NL: 'Hà Lan',
7030                RO: 'Romania',
7031                RU: 'Nga',
7032                SE: 'Thuỵ Sĩ',
7033                SG: 'Singapore',
7034                SK: 'Slovakia',
7035                US: 'Mỹ'
7036            }
7037        }
7038    });
7039}(window.jQuery));
7040;
7041//! moment.js
7042//! version : 2.29.1
7043//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
7044//! license : MIT
7045//! momentjs.com
7046
7047;(function (global, factory) {
7048    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
7049    typeof define === 'function' && define.amd ? define(factory) :
7050    global.moment = factory()
7051}(this, (function () { 'use strict';
7052
7053    var hookCallback;
7054
7055    function hooks() {
7056        return hookCallback.apply(null, arguments);
7057    }
7058
7059    // This is done to register the method called with moment()
7060    // without creating circular dependencies.
7061    function setHookCallback(callback) {
7062        hookCallback = callback;
7063    }
7064
7065    function isArray(input) {
7066        return (
7067            input instanceof Array ||
7068            Object.prototype.toString.call(input) === '[object Array]'
7069        );
7070    }
7071
7072    function isObject(input) {
7073        // IE8 will treat undefined and null as object if it wasn't for
7074        // input != null
7075        return (
7076            input != null &&
7077            Object.prototype.toString.call(input) === '[object Object]'
7078        );
7079    }
7080
7081    function hasOwnProp(a, b) {
7082        return Object.prototype.hasOwnProperty.call(a, b);
7083    }
7084
7085    function isObjectEmpty(obj) {
7086        if (Object.getOwnPropertyNames) {
7087            return Object.getOwnPropertyNames(obj).length === 0;
7088        } else {
7089            var k;
7090            for (k in obj) {
7091                if (hasOwnProp(obj, k)) {
7092                    return false;
7093                }
7094            }
7095            return true;
7096        }
7097    }
7098
7099    function isUndefined(input) {
7100        return input === void 0;
7101    }
7102
7103    function isNumber(input) {
7104        return (
7105            typeof input === 'number' ||
7106            Object.prototype.toString.call(input) === '[object Number]'
7107        );
7108    }
7109
7110    function isDate(input) {
7111        return (
7112            input instanceof Date ||
7113            Object.prototype.toString.call(input) === '[object Date]'
7114        );
7115    }
7116
7117    function map(arr, fn) {
7118        var res = [],
7119            i;
7120        for (i = 0; i < arr.length; ++i) {
7121            res.push(fn(arr[i], i));
7122        }
7123        return res;
7124    }
7125
7126    function extend(a, b) {
7127        for (var i in b) {
7128            if (hasOwnProp(b, i)) {
7129                a[i] = b[i];
7130            }
7131        }
7132
7133        if (hasOwnProp(b, 'toString')) {
7134            a.toString = b.toString;
7135        }
7136
7137        if (hasOwnProp(b, 'valueOf')) {
7138            a.valueOf = b.valueOf;
7139        }
7140
7141        return a;
7142    }
7143
7144    function createUTC(input, format, locale, strict) {
7145        return createLocalOrUTC(input, format, locale, strict, true).utc();
7146    }
7147
7148    function defaultParsingFlags() {
7149        // We need to deep clone this object.
7150        return {
7151            empty: false,
7152            unusedTokens: [],
7153            unusedInput: [],
7154            overflow: -2,
7155            charsLeftOver: 0,
7156            nullInput: false,
7157            invalidEra: null,
7158            invalidMonth: null,
7159            invalidFormat: false,
7160            userInvalidated: false,
7161            iso: false,
7162            parsedDateParts: [],
7163            era: null,
7164            meridiem: null,
7165            rfc2822: false,
7166            weekdayMismatch: false,
7167        };
7168    }
7169
7170    function getParsingFlags(m) {
7171        if (m._pf == null) {
7172            m._pf = defaultParsingFlags();
7173        }
7174        return m._pf;
7175    }
7176
7177    var some;
7178    if (Array.prototype.some) {
7179        some = Array.prototype.some;
7180    } else {
7181        some = function (fun) {
7182            var t = Object(this),
7183                len = t.length >>> 0,
7184                i;
7185
7186            for (i = 0; i < len; i++) {
7187                if (i in t && fun.call(this, t[i], i, t)) {
7188                    return true;
7189                }
7190            }
7191
7192            return false;
7193        };
7194    }
7195
7196    function isValid(m) {
7197        if (m._isValid == null) {
7198            var flags = getParsingFlags(m),
7199                parsedParts = some.call(flags.parsedDateParts, function (i) {
7200                    return i != null;
7201                }),
7202                isNowValid =
7203                    !isNaN(m._d.getTime()) &&
7204                    flags.overflow < 0 &&
7205                    !flags.empty &&
7206                    !flags.invalidEra &&
7207                    !flags.invalidMonth &&
7208                    !flags.invalidWeekday &&
7209                    !flags.weekdayMismatch &&
7210                    !flags.nullInput &&
7211                    !flags.invalidFormat &&
7212                    !flags.userInvalidated &&
7213                    (!flags.meridiem || (flags.meridiem && parsedParts));
7214
7215            if (m._strict) {
7216                isNowValid =
7217                    isNowValid &&
7218                    flags.charsLeftOver === 0 &&
7219                    flags.unusedTokens.length === 0 &&
7220                    flags.bigHour === undefined;
7221            }
7222
7223            if (Object.isFrozen == null || !Object.isFrozen(m)) {
7224                m._isValid = isNowValid;
7225            } else {
7226                return isNowValid;
7227            }
7228        }
7229        return m._isValid;
7230    }
7231
7232    function createInvalid(flags) {
7233        var m = createUTC(NaN);
7234        if (flags != null) {
7235            extend(getParsingFlags(m), flags);
7236        } else {
7237            getParsingFlags(m).userInvalidated = true;
7238        }
7239
7240        return m;
7241    }
7242
7243    // Plugins that add properties should also add the key here (null value),
7244    // so we can properly clone ourselves.
7245    var momentProperties = (hooks.momentProperties = []),
7246        updateInProgress = false;
7247
7248    function copyConfig(to, from) {
7249        var i, prop, val;
7250
7251        if (!isUndefined(from._isAMomentObject)) {
7252            to._isAMomentObject = from._isAMomentObject;
7253        }
7254        if (!isUndefined(from._i)) {
7255            to._i = from._i;
7256        }
7257        if (!isUndefined(from._f)) {
7258            to._f = from._f;
7259        }
7260        if (!isUndefined(from._l)) {
7261            to._l = from._l;
7262        }
7263        if (!isUndefined(from._strict)) {
7264            to._strict = from._strict;
7265        }
7266        if (!isUndefined(from._tzm)) {
7267            to._tzm = from._tzm;
7268        }
7269        if (!isUndefined(from._isUTC)) {
7270            to._isUTC = from._isUTC;
7271        }
7272        if (!isUndefined(from._offset)) {
7273            to._offset = from._offset;
7274        }
7275        if (!isUndefined(from._pf)) {
7276            to._pf = getParsingFlags(from);
7277        }
7278        if (!isUndefined(from._locale)) {
7279            to._locale = from._locale;
7280        }
7281
7282        if (momentProperties.length > 0) {
7283            for (i = 0; i < momentProperties.length; i++) {
7284                prop = momentProperties[i];
7285                val = from[prop];
7286                if (!isUndefined(val)) {
7287                    to[prop] = val;
7288                }
7289            }
7290        }
7291
7292        return to;
7293    }
7294
7295    // Moment prototype object
7296    function Moment(config) {
7297        copyConfig(this, config);
7298        this._d = new Date(config._d != null ? config._d.getTime() : NaN);
7299        if (!this.isValid()) {
7300            this._d = new Date(NaN);
7301        }
7302        // Prevent infinite loop in case updateOffset creates new moment
7303        // objects.
7304        if (updateInProgress === false) {
7305            updateInProgress = true;
7306            hooks.updateOffset(this);
7307            updateInProgress = false;
7308        }
7309    }
7310
7311    function isMoment(obj) {
7312        return (
7313            obj instanceof Moment || (obj != null && obj._isAMomentObject != null)
7314        );
7315    }
7316
7317    function warn(msg) {
7318        if (
7319            hooks.suppressDeprecationWarnings === false &&
7320            typeof console !== 'undefined' &&
7321            console.warn
7322        ) {
7323            console.warn('Deprecation warning: ' + msg);
7324        }
7325    }
7326
7327    function deprecate(msg, fn) {
7328        var firstTime = true;
7329
7330        return extend(function () {
7331            if (hooks.deprecationHandler != null) {
7332                hooks.deprecationHandler(null, msg);
7333            }
7334            if (firstTime) {
7335                var args = [],
7336                    arg,
7337                    i,
7338                    key;
7339                for (i = 0; i < arguments.length; i++) {
7340                    arg = '';
7341                    if (typeof arguments[i] === 'object') {
7342                        arg += '\n[' + i + '] ';
7343                        for (key in arguments[0]) {
7344                            if (hasOwnProp(arguments[0], key)) {
7345                                arg += key + ': ' + arguments[0][key] + ', ';
7346                            }
7347                        }
7348                        arg = arg.slice(0, -2); // Remove trailing comma and space
7349                    } else {
7350                        arg = arguments[i];
7351                    }
7352                    args.push(arg);
7353                }
7354                warn(
7355                    msg +
7356                        '\nArguments: ' +
7357                        Array.prototype.slice.call(args).join('') +
7358                        '\n' +
7359                        new Error().stack
7360                );
7361                firstTime = false;
7362            }
7363            return fn.apply(this, arguments);
7364        }, fn);
7365    }
7366
7367    var deprecations = {};
7368
7369    function deprecateSimple(name, msg) {
7370        if (hooks.deprecationHandler != null) {
7371            hooks.deprecationHandler(name, msg);
7372        }
7373        if (!deprecations[name]) {
7374            warn(msg);
7375            deprecations[name] = true;
7376        }
7377    }
7378
7379    hooks.suppressDeprecationWarnings = false;
7380    hooks.deprecationHandler = null;
7381
7382    function isFunction(input) {
7383        return (
7384            (typeof Function !== 'undefined' && input instanceof Function) ||
7385            Object.prototype.toString.call(input) === '[object Function]'
7386        );
7387    }
7388
7389    function set(config) {
7390        var prop, i;
7391        for (i in config) {
7392            if (hasOwnProp(config, i)) {
7393                prop = config[i];
7394                if (isFunction(prop)) {
7395                    this[i] = prop;
7396                } else {
7397                    this['_' + i] = prop;
7398                }
7399            }
7400        }
7401        this._config = config;
7402        // Lenient ordinal parsing accepts just a number in addition to
7403        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.
7404        // TODO: Remove "ordinalParse" fallback in next major release.
7405        this._dayOfMonthOrdinalParseLenient = new RegExp(
7406            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +
7407                '|' +
7408                /\d{1,2}/.source
7409        );
7410    }
7411
7412    function mergeConfigs(parentConfig, childConfig) {
7413        var res = extend({}, parentConfig),
7414            prop;
7415        for (prop in childConfig) {
7416            if (hasOwnProp(childConfig, prop)) {
7417                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {
7418                    res[prop] = {};
7419                    extend(res[prop], parentConfig[prop]);
7420                    extend(res[prop], childConfig[prop]);
7421                } else if (childConfig[prop] != null) {
7422                    res[prop] = childConfig[prop];
7423                } else {
7424                    delete res[prop];
7425                }
7426            }
7427        }
7428        for (prop in parentConfig) {
7429            if (
7430                hasOwnProp(parentConfig, prop) &&
7431                !hasOwnProp(childConfig, prop) &&
7432                isObject(parentConfig[prop])
7433            ) {
7434                // make sure changes to properties don't modify parent config
7435                res[prop] = extend({}, res[prop]);
7436            }
7437        }
7438        return res;
7439    }
7440
7441    function Locale(config) {
7442        if (config != null) {
7443            this.set(config);
7444        }
7445    }
7446
7447    var keys;
7448
7449    if (Object.keys) {
7450        keys = Object.keys;
7451    } else {
7452        keys = function (obj) {
7453            var i,
7454                res = [];
7455            for (i in obj) {
7456                if (hasOwnProp(obj, i)) {
7457                    res.push(i);
7458                }
7459            }
7460            return res;
7461        };
7462    }
7463
7464    var defaultCalendar = {
7465        sameDay: '[Today at] LT',
7466        nextDay: '[Tomorrow at] LT',
7467        nextWeek: 'dddd [at] LT',
7468        lastDay: '[Yesterday at] LT',
7469        lastWeek: '[Last] dddd [at] LT',
7470        sameElse: 'L',
7471    };
7472
7473    function calendar(key, mom, now) {
7474        var output = this._calendar[key] || this._calendar['sameElse'];
7475        return isFunction(output) ? output.call(mom, now) : output;
7476    }
7477
7478    function zeroFill(number, targetLength, forceSign) {
7479        var absNumber = '' + Math.abs(number),
7480            zerosToFill = targetLength - absNumber.length,
7481            sign = number >= 0;
7482        return (
7483            (sign ? (forceSign ? '+' : '') : '-') +
7484            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +
7485            absNumber
7486        );
7487    }
7488
7489    var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}
vendor: 8,433 bytes, lines 7489-7784
7489|x|X|zz?|ZZ?|.)/g,
7490        localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,
7491        formatFunctions = {},
7492        formatTokenFunctions = {};
7493
7494    // token:    'M'
7495    // padded:   ['MM', 2]
7496    // ordinal:  'Mo'
7497    // callback: function () { this.month() + 1 }
7498    function addFormatToken(token, padded, ordinal, callback) {
7499        var func = callback;
7500        if (typeof callback === 'string') {
7501            func = function () {
7502                return this[callback]();
7503            };
7504        }
7505        if (token) {
7506            formatTokenFunctions[token] = func;
7507        }
7508        if (padded) {
7509            formatTokenFunctions[padded[0]] = function () {
7510                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
7511            };
7512        }
7513        if (ordinal) {
7514            formatTokenFunctions[ordinal] = function () {
7515                return this.localeData().ordinal(
7516                    func.apply(this, arguments),
7517                    token
7518                );
7519            };
7520        }
7521    }
7522
7523    function removeFormattingTokens(input) {
7524        if (input.match(/\[[\s\S]/)) {
7525            return input.replace(/^\[|\]$/g, '');
7526        }
7527        return input.replace(/\\/g, '');
7528    }
7529
7530    function makeFormatFunction(format) {
7531        var array = format.match(formattingTokens),
7532            i,
7533            length;
7534
7535        for (i = 0, length = array.length; i < length; i++) {
7536            if (formatTokenFunctions[array[i]]) {
7537                array[i] = formatTokenFunctions[array[i]];
7538            } else {
7539                array[i] = removeFormattingTokens(array[i]);
7540            }
7541        }
7542
7543        return function (mom) {
7544            var output = '',
7545                i;
7546            for (i = 0; i < length; i++) {
7547                output += isFunction(array[i])
7548                    ? array[i].call(mom, format)
7549                    : array[i];
7550            }
7551            return output;
7552        };
7553    }
7554
7555    // format date using native date object
7556    function formatMoment(m, format) {
7557        if (!m.isValid()) {
7558            return m.localeData().invalidDate();
7559        }
7560
7561        format = expandFormat(format, m.localeData());
7562        formatFunctions[format] =
7563            formatFunctions[format] || makeFormatFunction(format);
7564
7565        return formatFunctions[format](m);
7566    }
7567
7568    function expandFormat(format, locale) {
7569        var i = 5;
7570
7571        function replaceLongDateFormatTokens(input) {
7572            return locale.longDateFormat(input) || input;
7573        }
7574
7575        localFormattingTokens.lastIndex = 0;
7576        while (i >= 0 && localFormattingTokens.test(format)) {
7577            format = format.replace(
7578                localFormattingTokens,
7579                replaceLongDateFormatTokens
7580            );
7581            localFormattingTokens.lastIndex = 0;
7582            i -= 1;
7583        }
7584
7585        return format;
7586    }
7587
7588    var defaultLongDateFormat = {
7589        LTS: 'h:mm:ss A',
7590        LT: 'h:mm A',
7591        L: 'MM/DD/YYYY',
7592        LL: 'MMMM D, YYYY',
7593        LLL: 'MMMM D, YYYY h:mm A',
7594        LLLL: 'dddd, MMMM D, YYYY h:mm A',
7595    };
7596
7597    function longDateFormat(key) {
7598        var format = this._longDateFormat[key],
7599            formatUpper = this._longDateFormat[key.toUpperCase()];
7600
7601        if (format || !formatUpper) {
7602            return format;
7603        }
7604
7605        this._longDateFormat[key] = formatUpper
7606            .match(formattingTokens)
7607            .map(function (tok) {
7608                if (
7609                    tok === 'MMMM' ||
7610                    tok === 'MM' ||
7611                    tok === 'DD' ||
7612                    tok === 'dddd'
7613                ) {
7614                    return tok.slice(1);
7615                }
7616                return tok;
7617            })
7618            .join('');
7619
7620        return this._longDateFormat[key];
7621    }
7622
7623    var defaultInvalidDate = 'Invalid date';
7624
7625    function invalidDate() {
7626        return this._invalidDate;
7627    }
7628
7629    var defaultOrdinal = '%d',
7630        defaultDayOfMonthOrdinalParse = /\d{1,2}/;
7631
7632    function ordinal(number) {
7633        return this._ordinal.replace('%d', number);
7634    }
7635
7636    var defaultRelativeTime = {
7637        future: 'in %s',
7638        past: '%s ago',
7639        s: 'a few seconds',
7640        ss: '%d seconds',
7641        m: 'a minute',
7642        mm: '%d minutes',
7643        h: 'an hour',
7644        hh: '%d hours',
7645        d: 'a day',
7646        dd: '%d days',
7647        w: 'a week',
7648        ww: '%d weeks',
7649        M: 'a month',
7650        MM: '%d months',
7651        y: 'a year',
7652        yy: '%d years',
7653    };
7654
7655    function relativeTime(number, withoutSuffix, string, isFuture) {
7656        var output = this._relativeTime[string];
7657        return isFunction(output)
7658            ? output(number, withoutSuffix, string, isFuture)
7659            : output.replace(/%d/i, number);
7660    }
7661
7662    function pastFuture(diff, output) {
7663        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
7664        return isFunction(format) ? format(output) : format.replace(/%s/i, output);
7665    }
7666
7667    var aliases = {};
7668
7669    function addUnitAlias(unit, shorthand) {
7670        var lowerCase = unit.toLowerCase();
7671        aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;
7672    }
7673
7674    function normalizeUnits(units) {
7675        return typeof units === 'string'
7676            ? aliases[units] || aliases[units.toLowerCase()]
7677            : undefined;
7678    }
7679
7680    function normalizeObjectUnits(inputObject) {
7681        var normalizedInput = {},
7682            normalizedProp,
7683            prop;
7684
7685        for (prop in inputObject) {
7686            if (hasOwnProp(inputObject, prop)) {
7687                normalizedProp = normalizeUnits(prop);
7688                if (normalizedProp) {
7689                    normalizedInput[normalizedProp] = inputObject[prop];
7690                }
7691            }
7692        }
7693
7694        return normalizedInput;
7695    }
7696
7697    var priorities = {};
7698
7699    function addUnitPriority(unit, priority) {
7700        priorities[unit] = priority;
7701    }
7702
7703    function getPrioritizedUnits(unitsObj) {
7704        var units = [],
7705            u;
7706        for (u in unitsObj) {
7707            if (hasOwnProp(unitsObj, u)) {
7708                units.push({ unit: u, priority: priorities[u] });
7709            }
7710        }
7711        units.sort(function (a, b) {
7712            return a.priority - b.priority;
7713        });
7714        return units;
7715    }
7716
7717    function isLeapYear(year) {
7718        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
7719    }
7720
7721    function absFloor(number) {
7722        if (number < 0) {
7723            // -0 -> 0
7724            return Math.ceil(number) || 0;
7725        } else {
7726            return Math.floor(number);
7727        }
7728    }
7729
7730    function toInt(argumentForCoercion) {
7731        var coercedNumber = +argumentForCoercion,
7732            value = 0;
7733
7734        if (coercedNumber !== 0 && isFinite(coercedNumber)) {
7735            value = absFloor(coercedNumber);
7736        }
7737
7738        return value;
7739    }
7740
7741    function makeGetSet(unit, keepTime) {
7742        return function (value) {
7743            if (value != null) {
7744                set$1(this, unit, value);
7745                hooks.updateOffset(this, keepTime);
7746                return this;
7747            } else {
7748                return get(this, unit);
7749            }
7750        };
7751    }
7752
7753    function get(mom, unit) {
7754        return mom.isValid()
7755            ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()
7756            : NaN;
7757    }
7758
7759    function set$1(mom, unit, value) {
7760        if (mom.isValid() && !isNaN(value)) {
7761            if (
7762                unit === 'FullYear' &&
7763                isLeapYear(mom.year()) &&
7764                mom.month() === 1 &&
7765                mom.date() === 29
7766            ) {
7767                value = toInt(value);
7768                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](
7769                    value,
7770                    mom.month(),
7771                    daysInMonth(value, mom.month())
7772                );
7773            } else {
7774                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);
7775            }
7776        }
7777    }
7778
7779    // MOMENTS
7780
7781    function stringGet(units) {
7782        units = normalizeUnits(units);
7783        if (isFunction(this[units])) {
7784            return this[units]();
vendor: 5,050 bytes, lines 7785-7945
7785        }
7786        return this;
7787    }
7788
7789    function stringSet(units, value) {
7790        if (typeof units === 'object') {
7791            units = normalizeObjectUnits(units);
7792            var prioritized = getPrioritizedUnits(units),
7793                i;
7794            for (i = 0; i < prioritized.length; i++) {
7795                this[prioritized[i].unit](units[prioritized[i].unit]);
7796            }
7797        } else {
7798            units = normalizeUnits(units);
7799            if (isFunction(this[units])) {
7800                return this[units](value);
7801            }
7802        }
7803        return this;
7804    }
7805
7806    var match1 = /\d/, //       0 - 9
7807        match2 = /\d\d/, //      00 - 99
7808        match3 = /\d{3}/, //     000 - 999
7809        match4 = /\d{4}/, //    0000 - 9999
7810        match6 = /[+-]?\d{6}/, // -999999 - 999999
7811        match1to2 = /\d\d?/, //       0 - 99
7812        match3to4 = /\d\d\d\d?/, //     999 - 9999
7813        match5to6 = /\d\d\d\d\d\d?/, //   99999 - 999999
7814        match1to3 = /\d{1,3}/, //       0 - 999
7815        match1to4 = /\d{1,4}/, //       0 - 9999
7816        match1to6 = /[+-]?\d{1,6}/, // -999999 - 999999
7817        matchUnsigned = /\d+/, //       0 - inf
7818        matchSigned = /[+-]?\d+/, //    -inf - inf
7819        matchOffset = /Z|[+-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z
7820        matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z
7821        matchTimestamp = /[+-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123
7822        // any word (or two) characters or numbers including two/three word month in arabic.
7823        // includes scottish gaelic two word and hyphenated months
7824        matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,
7825        regexes;
7826
7827    regexes = {};
7828
7829    function addRegexToken(token, regex, strictRegex) {
7830        regexes[token] = isFunction(regex)
7831            ? regex
7832            : function (isStrict, localeData) {
7833                  return isStrict && strictRegex ? strictRegex : regex;
7834              };
7835    }
7836
7837    function getParseRegexForToken(token, config) {
7838        if (!hasOwnProp(regexes, token)) {
7839            return new RegExp(unescapeFormat(token));
7840        }
7841
7842        return regexes[token](config._strict, config._locale);
7843    }
7844
7845    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
7846    function unescapeFormat(s) {
7847        return regexEscape(
7848            s
7849                .replace('\\', '')
7850                .replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (
7851                    matched,
7852                    p1,
7853                    p2,
7854                    p3,
7855                    p4
7856                ) {
7857                    return p1 || p2 || p3 || p4;
7858                })
7859        );
7860    }
7861
7862    function regexEscape(s) {
7863        return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
7864    }
7865
7866    var tokens = {};
7867
7868    function addParseToken(token, callback) {
7869        var i,
7870            func = callback;
7871        if (typeof token === 'string') {
7872            token = [token];
7873        }
7874        if (isNumber(callback)) {
7875            func = function (input, array) {
7876                array[callback] = toInt(input);
7877            };
7878        }
7879        for (i = 0; i < token.length; i++) {
7880            tokens[token[i]] = func;
7881        }
7882    }
7883
7884    function addWeekParseToken(token, callback) {
7885        addParseToken(token, function (input, array, config, token) {
7886            config._w = config._w || {};
7887            callback(input, config._w, config, token);
7888        });
7889    }
7890
7891    function addTimeToArrayFromToken(token, input, config) {
7892        if (input != null && hasOwnProp(tokens, token)) {
7893            tokens[token](input, config._a, config, token);
7894        }
7895    }
7896
7897    var YEAR = 0,
7898        MONTH = 1,
7899        DATE = 2,
7900        HOUR = 3,
7901        MINUTE = 4,
7902        SECOND = 5,
7903        MILLISECOND = 6,
7904        WEEK = 7,
7905        WEEKDAY = 8;
7906
7907    function mod(n, x) {
7908        return ((n % x) + x) % x;
7909    }
7910
7911    var indexOf;
7912
7913    if (Array.prototype.indexOf) {
7914        indexOf = Array.prototype.indexOf;
7915    } else {
7916        indexOf = function (o) {
7917            // I know
7918            var i;
7919            for (i = 0; i < this.length; ++i) {
7920                if (this[i] === o) {
7921                    return i;
7922                }
7923            }
7924            return -1;
7925        };
7926    }
7927
7928    function daysInMonth(year, month) {
7929        if (isNaN(year) || isNaN(month)) {
7930            return NaN;
7931        }
7932        var modMonth = mod(month, 12);
7933        year += (month - modMonth) / 12;
7934        return modMonth === 1
7935            ? isLeapYear(year)
7936                ? 29
7937                : 28
7938            : 31 - ((modMonth % 7) % 2);
7939    }
7940
7941    // FORMATTING
7942
7943    addFormatToken('M', ['MM', 2], 'Mo', function () {
7944        return this.month() + 1;
7945    });
vendor: 33,641 bytes, lines 7946-8999
7946
7947    addFormatToken('MMM', 0, 0, function (format) {
7948        return this.localeData().monthsShort(this, format);
7949    });
7950
7951    addFormatToken('MMMM', 0, 0, function (format) {
7952        return this.localeData().months(this, format);
7953    });
7954
7955    // ALIASES
7956
7957    addUnitAlias('month', 'M');
7958
7959    // PRIORITY
7960
7961    addUnitPriority('month', 8);
7962
7963    // PARSING
7964
7965    addRegexToken('M', match1to2);
7966    addRegexToken('MM', match1to2, match2);
7967    addRegexToken('MMM', function (isStrict, locale) {
7968        return locale.monthsShortRegex(isStrict);
7969    });
7970    addRegexToken('MMMM', function (isStrict, locale) {
7971        return locale.monthsRegex(isStrict);
7972    });
7973
7974    addParseToken(['M', 'MM'], function (input, array) {
7975        array[MONTH] = toInt(input) - 1;
7976    });
7977
7978    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
7979        var month = config._locale.monthsParse(input, token, config._strict);
7980        // if we didn't find a month name, mark the date as invalid.
7981        if (month != null) {
7982            array[MONTH] = month;
7983        } else {
7984            getParsingFlags(config).invalidMonth = input;
7985        }
7986    });
7987
7988    // LOCALES
7989
7990    var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
7991            '_'
7992        ),
7993        defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(
7994            '_'
7995        ),
7996        MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,
7997        defaultMonthsShortRegex = matchWord,
7998        defaultMonthsRegex = matchWord;
7999
8000    function localeMonths(m, format) {
8001        if (!m) {
8002            return isArray(this._months)
8003                ? this._months
8004                : this._months['standalone'];
8005        }
8006        return isArray(this._months)
8007            ? this._months[m.month()]
8008            : this._months[
8009                  (this._months.isFormat || MONTHS_IN_FORMAT).test(format)
8010                      ? 'format'
8011                      : 'standalone'
8012              ][m.month()];
8013    }
8014
8015    function localeMonthsShort(m, format) {
8016        if (!m) {
8017            return isArray(this._monthsShort)
8018                ? this._monthsShort
8019                : this._monthsShort['standalone'];
8020        }
8021        return isArray(this._monthsShort)
8022            ? this._monthsShort[m.month()]
8023            : this._monthsShort[
8024                  MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'
8025              ][m.month()];
8026    }
8027
8028    function handleStrictParse(monthName, format, strict) {
8029        var i,
8030            ii,
8031            mom,
8032            llc = monthName.toLocaleLowerCase();
8033        if (!this._monthsParse) {
8034            // this is not used
8035            this._monthsParse = [];
8036            this._longMonthsParse = [];
8037            this._shortMonthsParse = [];
8038            for (i = 0; i < 12; ++i) {
8039                mom = createUTC([2000, i]);
8040                this._shortMonthsParse[i] = this.monthsShort(
8041                    mom,
8042                    ''
8043                ).toLocaleLowerCase();
8044                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();
8045            }
8046        }
8047
8048        if (strict) {
8049            if (format === 'MMM') {
8050                ii = indexOf.call(this._shortMonthsParse, llc);
8051                return ii !== -1 ? ii : null;
8052            } else {
8053                ii = indexOf.call(this._longMonthsParse, llc);
8054                return ii !== -1 ? ii : null;
8055            }
8056        } else {
8057            if (format === 'MMM') {
8058                ii = indexOf.call(this._shortMonthsParse, llc);
8059                if (ii !== -1) {
8060                    return ii;
8061                }
8062                ii = indexOf.call(this._longMonthsParse, llc);
8063                return ii !== -1 ? ii : null;
8064            } else {
8065                ii = indexOf.call(this._longMonthsParse, llc);
8066                if (ii !== -1) {
8067                    return ii;
8068                }
8069                ii = indexOf.call(this._shortMonthsParse, llc);
8070                return ii !== -1 ? ii : null;
8071            }
8072        }
8073    }
8074
8075    function localeMonthsParse(monthName, format, strict) {
8076        var i, mom, regex;
8077
8078        if (this._monthsParseExact) {
8079            return handleStrictParse.call(this, monthName, format, strict);
8080        }
8081
8082        if (!this._monthsParse) {
8083            this._monthsParse = [];
8084            this._longMonthsParse = [];
8085            this._shortMonthsParse = [];
8086        }
8087
8088        // TODO: add sorting
8089        // Sorting makes sure if one month (or abbr) is a prefix of another
8090        // see sorting in computeMonthsParse
8091        for (i = 0; i < 12; i++) {
8092            // make the regex if we don't have it already
8093            mom = createUTC([2000, i]);
8094            if (strict && !this._longMonthsParse[i]) {
8095                this._longMonthsParse[i] = new RegExp(
8096                    '^' + this.months(mom, '').replace('.', '') + '$',
8097                    'i'
8098                );
8099                this._shortMonthsParse[i] = new RegExp(
8100                    '^' + this.monthsShort(mom, '').replace('.', '') + '$',
8101                    'i'
8102                );
8103            }
8104            if (!strict && !this._monthsParse[i]) {
8105                regex =
8106                    '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
8107                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
8108            }
8109            // test the regex
8110            if (
8111                strict &&
8112                format === 'MMMM' &&
8113                this._longMonthsParse[i].test(monthName)
8114            ) {
8115                return i;
8116            } else if (
8117                strict &&
8118                format === 'MMM' &&
8119                this._shortMonthsParse[i].test(monthName)
8120            ) {
8121                return i;
8122            } else if (!strict && this._monthsParse[i].test(monthName)) {
8123                return i;
8124            }
8125        }
8126    }
8127
8128    // MOMENTS
8129
8130    function setMonth(mom, value) {
8131        var dayOfMonth;
8132
8133        if (!mom.isValid()) {
8134            // No op
8135            return mom;
8136        }
8137
8138        if (typeof value === 'string') {
8139            if (/^\d+$/.test(value)) {
8140                value = toInt(value);
8141            } else {
8142                value = mom.localeData().monthsParse(value);
8143                // TODO: Another silent failure?
8144                if (!isNumber(value)) {
8145                    return mom;
8146                }
8147            }
8148        }
8149
8150        dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));
8151        mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
8152        return mom;
8153    }
8154
8155    function getSetMonth(value) {
8156        if (value != null) {
8157            setMonth(this, value);
8158            hooks.updateOffset(this, true);
8159            return this;
8160        } else {
8161            return get(this, 'Month');
8162        }
8163    }
8164
8165    function getDaysInMonth() {
8166        return daysInMonth(this.year(), this.month());
8167    }
8168
8169    function monthsShortRegex(isStrict) {
8170        if (this._monthsParseExact) {
8171            if (!hasOwnProp(this, '_monthsRegex')) {
8172                computeMonthsParse.call(this);
8173            }
8174            if (isStrict) {
8175                return this._monthsShortStrictRegex;
8176            } else {
8177                return this._monthsShortRegex;
8178            }
8179        } else {
8180            if (!hasOwnProp(this, '_monthsShortRegex')) {
8181                this._monthsShortRegex = defaultMonthsShortRegex;
8182            }
8183            return this._monthsShortStrictRegex && isStrict
8184                ? this._monthsShortStrictRegex
8185                : this._monthsShortRegex;
8186        }
8187    }
8188
8189    function monthsRegex(isStrict) {
8190        if (this._monthsParseExact) {
8191            if (!hasOwnProp(this, '_monthsRegex')) {
8192                computeMonthsParse.call(this);
8193            }
8194            if (isStrict) {
8195                return this._monthsStrictRegex;
8196            } else {
8197                return this._monthsRegex;
8198            }
8199        } else {
8200            if (!hasOwnProp(this, '_monthsRegex')) {
8201                this._monthsRegex = defaultMonthsRegex;
8202            }
8203            return this._monthsStrictRegex && isStrict
8204                ? this._monthsStrictRegex
8205                : this._monthsRegex;
8206        }
8207    }
8208
8209    function computeMonthsParse() {
8210        function cmpLenRev(a, b) {
8211            return b.length - a.length;
8212        }
8213
8214        var shortPieces = [],
8215            longPieces = [],
8216            mixedPieces = [],
8217            i,
8218            mom;
8219        for (i = 0; i < 12; i++) {
8220            // make the regex if we don't have it already
8221            mom = createUTC([2000, i]);
8222            shortPieces.push(this.monthsShort(mom, ''));
8223            longPieces.push(this.months(mom, ''));
8224            mixedPieces.push(this.months(mom, ''));
8225            mixedPieces.push(this.monthsShort(mom, ''));
8226        }
8227        // Sorting makes sure if one month (or abbr) is a prefix of another it
8228        // will match the longer piece.
8229        shortPieces.sort(cmpLenRev);
8230        longPieces.sort(cmpLenRev);
8231        mixedPieces.sort(cmpLenRev);
8232        for (i = 0; i < 12; i++) {
8233            shortPieces[i] = regexEscape(shortPieces[i]);
8234            longPieces[i] = regexEscape(longPieces[i]);
8235        }
8236        for (i = 0; i < 24; i++) {
8237            mixedPieces[i] = regexEscape(mixedPieces[i]);
8238        }
8239
8240        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
8241        this._monthsShortRegex = this._monthsRegex;
8242        this._monthsStrictRegex = new RegExp(
8243            '^(' + longPieces.join('|') + ')',
8244            'i'
8245        );
8246        this._monthsShortStrictRegex = new RegExp(
8247            '^(' + shortPieces.join('|') + ')',
8248            'i'
8249        );
8250    }
8251
8252    // FORMATTING
8253
8254    addFormatToken('Y', 0, 0, function () {
8255        var y = this.year();
8256        return y <= 9999 ? zeroFill(y, 4) : '+' + y;
8257    });
8258
8259    addFormatToken(0, ['YY', 2], 0, function () {
8260        return this.year() % 100;
8261    });
8262
8263    addFormatToken(0, ['YYYY', 4], 0, 'year');
8264    addFormatToken(0, ['YYYYY', 5], 0, 'year');
8265    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');
8266
8267    // ALIASES
8268
8269    addUnitAlias('year', 'y');
8270
8271    // PRIORITIES
8272
8273    addUnitPriority('year', 1);
8274
8275    // PARSING
8276
8277    addRegexToken('Y', matchSigned);
8278    addRegexToken('YY', match1to2, match2);
8279    addRegexToken('YYYY', match1to4, match4);
8280    addRegexToken('YYYYY', match1to6, match6);
8281    addRegexToken('YYYYYY', match1to6, match6);
8282
8283    addParseToken(['YYYYY', 'YYYYYY'], YEAR);
8284    addParseToken('YYYY', function (input, array) {
8285        array[YEAR] =
8286            input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);
8287    });
8288    addParseToken('YY', function (input, array) {
8289        array[YEAR] = hooks.parseTwoDigitYear(input);
8290    });
8291    addParseToken('Y', function (input, array) {
8292        array[YEAR] = parseInt(input, 10);
8293    });
8294
8295    // HELPERS
8296
8297    function daysInYear(year) {
8298        return isLeapYear(year) ? 366 : 365;
8299    }
8300
8301    // HOOKS
8302
8303    hooks.parseTwoDigitYear = function (input) {
8304        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
8305    };
8306
8307    // MOMENTS
8308
8309    var getSetYear = makeGetSet('FullYear', true);
8310
8311    function getIsLeapYear() {
8312        return isLeapYear(this.year());
8313    }
8314
8315    function createDate(y, m, d, h, M, s, ms) {
8316        // can't just apply() to create a date:
8317        // https://stackoverflow.com/q/181348
8318        var date;
8319        // the date constructor remaps years 0-99 to 1900-1999
8320        if (y < 100 && y >= 0) {
8321            // preserve leap years using a full 400 year cycle, then reset
8322            date = new Date(y + 400, m, d, h, M, s, ms);
8323            if (isFinite(date.getFullYear())) {
8324                date.setFullYear(y);
8325            }
8326        } else {
8327            date = new Date(y, m, d, h, M, s, ms);
8328        }
8329
8330        return date;
8331    }
8332
8333    function createUTCDate(y) {
8334        var date, args;
8335        // the Date.UTC function remaps years 0-99 to 1900-1999
8336        if (y < 100 && y >= 0) {
8337            args = Array.prototype.slice.call(arguments);
8338            // preserve leap years using a full 400 year cycle, then reset
8339            args[0] = y + 400;
8340            date = new Date(Date.UTC.apply(null, args));
8341            if (isFinite(date.getUTCFullYear())) {
8342                date.setUTCFullYear(y);
8343            }
8344        } else {
8345            date = new Date(Date.UTC.apply(null, arguments));
8346        }
8347
8348        return date;
8349    }
8350
8351    // start-of-first-week - start-of-year
8352    function firstWeekOffset(year, dow, doy) {
8353        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)
8354            fwd = 7 + dow - doy,
8355            // first-week day local weekday -- which local weekday is fwd
8356            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
8357
8358        return -fwdlw + fwd - 1;
8359    }
8360
8361    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
8362    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
8363        var localWeekday = (7 + weekday - dow) % 7,
8364            weekOffset = firstWeekOffset(year, dow, doy),
8365            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,
8366            resYear,
8367            resDayOfYear;
8368
8369        if (dayOfYear <= 0) {
8370            resYear = year - 1;
8371            resDayOfYear = daysInYear(resYear) + dayOfYear;
8372        } else if (dayOfYear > daysInYear(year)) {
8373            resYear = year + 1;
8374            resDayOfYear = dayOfYear - daysInYear(year);
8375        } else {
8376            resYear = year;
8377            resDayOfYear = dayOfYear;
8378        }
8379
8380        return {
8381            year: resYear,
8382            dayOfYear: resDayOfYear,
8383        };
8384    }
8385
8386    function weekOfYear(mom, dow, doy) {
8387        var weekOffset = firstWeekOffset(mom.year(), dow, doy),
8388            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,
8389            resWeek,
8390            resYear;
8391
8392        if (week < 1) {
8393            resYear = mom.year() - 1;
8394            resWeek = week + weeksInYear(resYear, dow, doy);
8395        } else if (week > weeksInYear(mom.year(), dow, doy)) {
8396            resWeek = week - weeksInYear(mom.year(), dow, doy);
8397            resYear = mom.year() + 1;
8398        } else {
8399            resYear = mom.year();
8400            resWeek = week;
8401        }
8402
8403        return {
8404            week: resWeek,
8405            year: resYear,
8406        };
8407    }
8408
8409    function weeksInYear(year, dow, doy) {
8410        var weekOffset = firstWeekOffset(year, dow, doy),
8411            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
8412        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;
8413    }
8414
8415    // FORMATTING
8416
8417    addFormatToken('w', ['ww', 2], 'wo', 'week');
8418    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');
8419
8420    // ALIASES
8421
8422    addUnitAlias('week', 'w');
8423    addUnitAlias('isoWeek', 'W');
8424
8425    // PRIORITIES
8426
8427    addUnitPriority('week', 5);
8428    addUnitPriority('isoWeek', 5);
8429
8430    // PARSING
8431
8432    addRegexToken('w', match1to2);
8433    addRegexToken('ww', match1to2, match2);
8434    addRegexToken('W', match1to2);
8435    addRegexToken('WW', match1to2, match2);
8436
8437    addWeekParseToken(['w', 'ww', 'W', 'WW'], function (
8438        input,
8439        week,
8440        config,
8441        token
8442    ) {
8443        week[token.substr(0, 1)] = toInt(input);
8444    });
8445
8446    // HELPERS
8447
8448    // LOCALES
8449
8450    function localeWeek(mom) {
8451        return weekOfYear(mom, this._week.dow, this._week.doy).week;
8452    }
8453
8454    var defaultLocaleWeek = {
8455        dow: 0, // Sunday is the first day of the week.
8456        doy: 6, // The week that contains Jan 6th is the first week of the year.
8457    };
8458
8459    function localeFirstDayOfWeek() {
8460        return this._week.dow;
8461    }
8462
8463    function localeFirstDayOfYear() {
8464        return this._week.doy;
8465    }
8466
8467    // MOMENTS
8468
8469    function getSetWeek(input) {
8470        var week = this.localeData().week(this);
8471        return input == null ? week : this.add((input - week) * 7, 'd');
8472    }
8473
8474    function getSetISOWeek(input) {
8475        var week = weekOfYear(this, 1, 4).week;
8476        return input == null ? week : this.add((input - week) * 7, 'd');
8477    }
8478
8479    // FORMATTING
8480
8481    addFormatToken('d', 0, 'do', 'day');
8482
8483    addFormatToken('dd', 0, 0, function (format) {
8484        return this.localeData().weekdaysMin(this, format);
8485    });
8486
8487    addFormatToken('ddd', 0, 0, function (format) {
8488        return this.localeData().weekdaysShort(this, format);
8489    });
8490
8491    addFormatToken('dddd', 0, 0, function (format) {
8492        return this.localeData().weekdays(this, format);
8493    });
8494
8495    addFormatToken('e', 0, 0, 'weekday');
8496    addFormatToken('E', 0, 0, 'isoWeekday');
8497
8498    // ALIASES
8499
8500    addUnitAlias('day', 'd');
8501    addUnitAlias('weekday', 'e');
8502    addUnitAlias('isoWeekday', 'E');
8503
8504    // PRIORITY
8505    addUnitPriority('day', 11);
8506    addUnitPriority('weekday', 11);
8507    addUnitPriority('isoWeekday', 11);
8508
8509    // PARSING
8510
8511    addRegexToken('d', match1to2);
8512    addRegexToken('e', match1to2);
8513    addRegexToken('E', match1to2);
8514    addRegexToken('dd', function (isStrict, locale) {
8515        return locale.weekdaysMinRegex(isStrict);
8516    });
8517    addRegexToken('ddd', function (isStrict, locale) {
8518        return locale.weekdaysShortRegex(isStrict);
8519    });
8520    addRegexToken('dddd', function (isStrict, locale) {
8521        return locale.weekdaysRegex(isStrict);
8522    });
8523
8524    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {
8525        var weekday = config._locale.weekdaysParse(input, token, config._strict);
8526        // if we didn't get a weekday name, mark the date as invalid
8527        if (weekday != null) {
8528            week.d = weekday;
8529        } else {
8530            getParsingFlags(config).invalidWeekday = input;
8531        }
8532    });
8533
8534    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {
8535        week[token] = toInt(input);
8536    });
8537
8538    // HELPERS
8539
8540    function parseWeekday(input, locale) {
8541        if (typeof input !== 'string') {
8542            return input;
8543        }
8544
8545        if (!isNaN(input)) {
8546            return parseInt(input, 10);
8547        }
8548
8549        input = locale.weekdaysParse(input);
8550        if (typeof input === 'number') {
8551            return input;
8552        }
8553
8554        return null;
8555    }
8556
8557    function parseIsoWeekday(input, locale) {
8558        if (typeof input === 'string') {
8559            return locale.weekdaysParse(input) % 7 || 7;
8560        }
8561        return isNaN(input) ? null : input;
8562    }
8563
8564    // LOCALES
8565    function shiftWeekdays(ws, n) {
8566        return ws.slice(n, 7).concat(ws.slice(0, n));
8567    }
8568
8569    var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
8570            '_'
8571        ),
8572        defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
8573        defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
8574        defaultWeekdaysRegex = matchWord,
8575        defaultWeekdaysShortRegex = matchWord,
8576        defaultWeekdaysMinRegex = matchWord;
8577
8578    function localeWeekdays(m, format) {
8579        var weekdays = isArray(this._weekdays)
8580            ? this._weekdays
8581            : this._weekdays[
8582                  m && m !== true && this._weekdays.isFormat.test(format)
8583                      ? 'format'
8584                      : 'standalone'
8585              ];
8586        return m === true
8587            ? shiftWeekdays(weekdays, this._week.dow)
8588            : m
8589            ? weekdays[m.day()]
8590            : weekdays;
8591    }
8592
8593    function localeWeekdaysShort(m) {
8594        return m === true
8595            ? shiftWeekdays(this._weekdaysShort, this._week.dow)
8596            : m
8597            ? this._weekdaysShort[m.day()]
8598            : this._weekdaysShort;
8599    }
8600
8601    function localeWeekdaysMin(m) {
8602        return m === true
8603            ? shiftWeekdays(this._weekdaysMin, this._week.dow)
8604            : m
8605            ? this._weekdaysMin[m.day()]
8606            : this._weekdaysMin;
8607    }
8608
8609    function handleStrictParse$1(weekdayName, format, strict) {
8610        var i,
8611            ii,
8612            mom,
8613            llc = weekdayName.toLocaleLowerCase();
8614        if (!this._weekdaysParse) {
8615            this._weekdaysParse = [];
8616            this._shortWeekdaysParse = [];
8617            this._minWeekdaysParse = [];
8618
8619            for (i = 0; i < 7; ++i) {
8620                mom = createUTC([2000, 1]).day(i);
8621                this._minWeekdaysParse[i] = this.weekdaysMin(
8622                    mom,
8623                    ''
8624                ).toLocaleLowerCase();
8625                this._shortWeekdaysParse[i] = this.weekdaysShort(
8626                    mom,
8627                    ''
8628                ).toLocaleLowerCase();
8629                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();
8630            }
8631        }
8632
8633        if (strict) {
8634            if (format === 'dddd') {
8635                ii = indexOf.call(this._weekdaysParse, llc);
8636                return ii !== -1 ? ii : null;
8637            } else if (format === 'ddd') {
8638                ii = indexOf.call(this._shortWeekdaysParse, llc);
8639                return ii !== -1 ? ii : null;
8640            } else {
8641                ii = indexOf.call(this._minWeekdaysParse, llc);
8642                return ii !== -1 ? ii : null;
8643            }
8644        } else {
8645            if (format === 'dddd') {
8646                ii = indexOf.call(this._weekdaysParse, llc);
8647                if (ii !== -1) {
8648                    return ii;
8649                }
8650                ii = indexOf.call(this._shortWeekdaysParse, llc);
8651                if (ii !== -1) {
8652                    return ii;
8653                }
8654                ii = indexOf.call(this._minWeekdaysParse, llc);
8655                return ii !== -1 ? ii : null;
8656            } else if (format === 'ddd') {
8657                ii = indexOf.call(this._shortWeekdaysParse, llc);
8658                if (ii !== -1) {
8659                    return ii;
8660                }
8661                ii = indexOf.call(this._weekdaysParse, llc);
8662                if (ii !== -1) {
8663                    return ii;
8664                }
8665                ii = indexOf.call(this._minWeekdaysParse, llc);
8666                return ii !== -1 ? ii : null;
8667            } else {
8668                ii = indexOf.call(this._minWeekdaysParse, llc);
8669                if (ii !== -1) {
8670                    return ii;
8671                }
8672                ii = indexOf.call(this._weekdaysParse, llc);
8673                if (ii !== -1) {
8674                    return ii;
8675                }
8676                ii = indexOf.call(this._shortWeekdaysParse, llc);
8677                return ii !== -1 ? ii : null;
8678            }
8679        }
8680    }
8681
8682    function localeWeekdaysParse(weekdayName, format, strict) {
8683        var i, mom, regex;
8684
8685        if (this._weekdaysParseExact) {
8686            return handleStrictParse$1.call(this, weekdayName, format, strict);
8687        }
8688
8689        if (!this._weekdaysParse) {
8690            this._weekdaysParse = [];
8691            this._minWeekdaysParse = [];
8692            this._shortWeekdaysParse = [];
8693            this._fullWeekdaysParse = [];
8694        }
8695
8696        for (i = 0; i < 7; i++) {
8697            // make the regex if we don't have it already
8698
8699            mom = createUTC([2000, 1]).day(i);
8700            if (strict && !this._fullWeekdaysParse[i]) {
8701                this._fullWeekdaysParse[i] = new RegExp(
8702                    '^' + this.weekdays(mom, '').replace('.', '\\.?') + '$',
8703                    'i'
8704                );
8705                this._shortWeekdaysParse[i] = new RegExp(
8706                    '^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$',
8707                    'i'
8708                );
8709                this._minWeekdaysParse[i] = new RegExp(
8710                    '^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$',
8711                    'i'
8712                );
8713            }
8714            if (!this._weekdaysParse[i]) {
8715                regex =
8716                    '^' +
8717                    this.weekdays(mom, '') +
8718                    '|^' +
8719                    this.weekdaysShort(mom, '') +
8720                    '|^' +
8721                    this.weekdaysMin(mom, '');
8722                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
8723            }
8724            // test the regex
8725            if (
8726                strict &&
8727                format === 'dddd' &&
8728                this._fullWeekdaysParse[i].test(weekdayName)
8729            ) {
8730                return i;
8731            } else if (
8732                strict &&
8733                format === 'ddd' &&
8734                this._shortWeekdaysParse[i].test(weekdayName)
8735            ) {
8736                return i;
8737            } else if (
8738                strict &&
8739                format === 'dd' &&
8740                this._minWeekdaysParse[i].test(weekdayName)
8741            ) {
8742                return i;
8743            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {
8744                return i;
8745            }
8746        }
8747    }
8748
8749    // MOMENTS
8750
8751    function getSetDayOfWeek(input) {
8752        if (!this.isValid()) {
8753            return input != null ? this : NaN;
8754        }
8755        var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
8756        if (input != null) {
8757            input = parseWeekday(input, this.localeData());
8758            return this.add(input - day, 'd');
8759        } else {
8760            return day;
8761        }
8762    }
8763
8764    function getSetLocaleDayOfWeek(input) {
8765        if (!this.isValid()) {
8766            return input != null ? this : NaN;
8767        }
8768        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
8769        return input == null ? weekday : this.add(input - weekday, 'd');
8770    }
8771
8772    function getSetISODayOfWeek(input) {
8773        if (!this.isValid()) {
8774            return input != null ? this : NaN;
8775        }
8776
8777        // behaves the same as moment#day except
8778        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
8779        // as a setter, sunday should belong to the previous week.
8780
8781        if (input != null) {
8782            var weekday = parseIsoWeekday(input, this.localeData());
8783            return this.day(this.day() % 7 ? weekday : weekday - 7);
8784        } else {
8785            return this.day() || 7;
8786        }
8787    }
8788
8789    function weekdaysRegex(isStrict) {
8790        if (this._weekdaysParseExact) {
8791            if (!hasOwnProp(this, '_weekdaysRegex')) {
8792                computeWeekdaysParse.call(this);
8793            }
8794            if (isStrict) {
8795                return this._weekdaysStrictRegex;
8796            } else {
8797                return this._weekdaysRegex;
8798            }
8799        } else {
8800            if (!hasOwnProp(this, '_weekdaysRegex')) {
8801                this._weekdaysRegex = defaultWeekdaysRegex;
8802            }
8803            return this._weekdaysStrictRegex && isStrict
8804                ? this._weekdaysStrictRegex
8805                : this._weekdaysRegex;
8806        }
8807    }
8808
8809    function weekdaysShortRegex(isStrict) {
8810        if (this._weekdaysParseExact) {
8811            if (!hasOwnProp(this, '_weekdaysRegex')) {
8812                computeWeekdaysParse.call(this);
8813            }
8814            if (isStrict) {
8815                return this._weekdaysShortStrictRegex;
8816            } else {
8817                return this._weekdaysShortRegex;
8818            }
8819        } else {
8820            if (!hasOwnProp(this, '_weekdaysShortRegex')) {
8821                this._weekdaysShortRegex = defaultWeekdaysShortRegex;
8822            }
8823            return this._weekdaysShortStrictRegex && isStrict
8824                ? this._weekdaysShortStrictRegex
8825                : this._weekdaysShortRegex;
8826        }
8827    }
8828
8829    function weekdaysMinRegex(isStrict) {
8830        if (this._weekdaysParseExact) {
8831            if (!hasOwnProp(this, '_weekdaysRegex')) {
8832                computeWeekdaysParse.call(this);
8833            }
8834            if (isStrict) {
8835                return this._weekdaysMinStrictRegex;
8836            } else {
8837                return this._weekdaysMinRegex;
8838            }
8839        } else {
8840            if (!hasOwnProp(this, '_weekdaysMinRegex')) {
8841                this._weekdaysMinRegex = defaultWeekdaysMinRegex;
8842            }
8843            return this._weekdaysMinStrictRegex && isStrict
8844                ? this._weekdaysMinStrictRegex
8845                : this._weekdaysMinRegex;
8846        }
8847    }
8848
8849    function computeWeekdaysParse() {
8850        function cmpLenRev(a, b) {
8851            return b.length - a.length;
8852        }
8853
8854        var minPieces = [],
8855            shortPieces = [],
8856            longPieces = [],
8857            mixedPieces = [],
8858            i,
8859            mom,
8860            minp,
8861            shortp,
8862            longp;
8863        for (i = 0; i < 7; i++) {
8864            // make the regex if we don't have it already
8865            mom = createUTC([2000, 1]).day(i);
8866            minp = regexEscape(this.weekdaysMin(mom, ''));
8867            shortp = regexEscape(this.weekdaysShort(mom, ''));
8868            longp = regexEscape(this.weekdays(mom, ''));
8869            minPieces.push(minp);
8870            shortPieces.push(shortp);
8871            longPieces.push(longp);
8872            mixedPieces.push(minp);
8873            mixedPieces.push(shortp);
8874            mixedPieces.push(longp);
8875        }
8876        // Sorting makes sure if one weekday (or abbr) is a prefix of another it
8877        // will match the longer piece.
8878        minPieces.sort(cmpLenRev);
8879        shortPieces.sort(cmpLenRev);
8880        longPieces.sort(cmpLenRev);
8881        mixedPieces.sort(cmpLenRev);
8882
8883        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
8884        this._weekdaysShortRegex = this._weekdaysRegex;
8885        this._weekdaysMinRegex = this._weekdaysRegex;
8886
8887        this._weekdaysStrictRegex = new RegExp(
8888            '^(' + longPieces.join('|') + ')',
8889            'i'
8890        );
8891        this._weekdaysShortStrictRegex = new RegExp(
8892            '^(' + shortPieces.join('|') + ')',
8893            'i'
8894        );
8895        this._weekdaysMinStrictRegex = new RegExp(
8896            '^(' + minPieces.join('|') + ')',
8897            'i'
8898        );
8899    }
8900
8901    // FORMATTING
8902
8903    function hFormat() {
8904        return this.hours() % 12 || 12;
8905    }
8906
8907    function kFormat() {
8908        return this.hours() || 24;
8909    }
8910
8911    addFormatToken('H', ['HH', 2], 0, 'hour');
8912    addFormatToken('h', ['hh', 2], 0, hFormat);
8913    addFormatToken('k', ['kk', 2], 0, kFormat);
8914
8915    addFormatToken('hmm', 0, 0, function () {
8916        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);
8917    });
8918
8919    addFormatToken('hmmss', 0, 0, function () {
8920        return (
8921            '' +
8922            hFormat.apply(this) +
8923            zeroFill(this.minutes(), 2) +
8924            zeroFill(this.seconds(), 2)
8925        );
8926    });
8927
8928    addFormatToken('Hmm', 0, 0, function () {
8929        return '' + this.hours() + zeroFill(this.minutes(), 2);
8930    });
8931
8932    addFormatToken('Hmmss', 0, 0, function () {
8933        return (
8934            '' +
8935            this.hours() +
8936            zeroFill(this.minutes(), 2) +
8937            zeroFill(this.seconds(), 2)
8938        );
8939    });
8940
8941    function meridiem(token, lowercase) {
8942        addFormatToken(token, 0, 0, function () {
8943            return this.localeData().meridiem(
8944                this.hours(),
8945                this.minutes(),
8946                lowercase
8947            );
8948        });
8949    }
8950
8951    meridiem('a', true);
8952    meridiem('A', false);
8953
8954    // ALIASES
8955
8956    addUnitAlias('hour', 'h');
8957
8958    // PRIORITY
8959    addUnitPriority('hour', 13);
8960
8961    // PARSING
8962
8963    function matchMeridiem(isStrict, locale) {
8964        return locale._meridiemParse;
8965    }
8966
8967    addRegexToken('a', matchMeridiem);
8968    addRegexToken('A', matchMeridiem);
8969    addRegexToken('H', match1to2);
8970    addRegexToken('h', match1to2);
8971    addRegexToken('k', match1to2);
8972    addRegexToken('HH', match1to2, match2);
8973    addRegexToken('hh', match1to2, match2);
8974    addRegexToken('kk', match1to2, match2);
8975
8976    addRegexToken('hmm', match3to4);
8977    addRegexToken('hmmss', match5to6);
8978    addRegexToken('Hmm', match3to4);
8979    addRegexToken('Hmmss', match5to6);
8980
8981    addParseToken(['H', 'HH'], HOUR);
8982    addParseToken(['k', 'kk'], function (input, array, config) {
8983        var kInput = toInt(input);
8984        array[HOUR] = kInput === 24 ? 0 : kInput;
8985    });
8986    addParseToken(['a', 'A'], function (input, array, config) {
8987        config._isPm = config._locale.isPM(input);
8988        config._meridiem = input;
8989    });
8990    addParseToken(['h', 'hh'], function (input, array, config) {
8991        array[HOUR] = toInt(input);
8992        getParsingFlags(config).bigHour = true;
8993    });
8994    addParseToken('hmm', function (input, array, config) {
8995        var pos = input.length - 2;
8996        array[HOUR] = toInt(input.substr(0, pos));
8997        array[MINUTE] = toInt(input.substr(pos));
8998        getParsingFlags(config).bigHour = true;
8999    });
vendor: 23,121 bytes, lines 9000-9657
9000    addParseToken('hmmss', function (input, array, config) {
9001        var pos1 = input.length - 4,
9002            pos2 = input.length - 2;
9003        array[HOUR] = toInt(input.substr(0, pos1));
9004        array[MINUTE] = toInt(input.substr(pos1, 2));
9005        array[SECOND] = toInt(input.substr(pos2));
9006        getParsingFlags(config).bigHour = true;
9007    });
9008    addParseToken('Hmm', function (input, array, config) {
9009        var pos = input.length - 2;
9010        array[HOUR] = toInt(input.substr(0, pos));
9011        array[MINUTE] = toInt(input.substr(pos));
9012    });
9013    addParseToken('Hmmss', function (input, array, config) {
9014        var pos1 = input.length - 4,
9015            pos2 = input.length - 2;
9016        array[HOUR] = toInt(input.substr(0, pos1));
9017        array[MINUTE] = toInt(input.substr(pos1, 2));
9018        array[SECOND] = toInt(input.substr(pos2));
9019    });
9020
9021    // LOCALES
9022
9023    function localeIsPM(input) {
9024        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
9025        // Using charAt should be more compatible.
9026        return (input + '').toLowerCase().charAt(0) === 'p';
9027    }
9028
9029    var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i,
9030        // Setting the hour should keep the time, because the user explicitly
9031        // specified which hour they want. So trying to maintain the same hour (in
9032        // a new timezone) makes sense. Adding/subtracting hours does not follow
9033        // this rule.
9034        getSetHour = makeGetSet('Hours', true);
9035
9036    function localeMeridiem(hours, minutes, isLower) {
9037        if (hours > 11) {
9038            return isLower ? 'pm' : 'PM';
9039        } else {
9040            return isLower ? 'am' : 'AM';
9041        }
9042    }
9043
9044    var baseConfig = {
9045        calendar: defaultCalendar,
9046        longDateFormat: defaultLongDateFormat,
9047        invalidDate: defaultInvalidDate,
9048        ordinal: defaultOrdinal,
9049        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,
9050        relativeTime: defaultRelativeTime,
9051
9052        months: defaultLocaleMonths,
9053        monthsShort: defaultLocaleMonthsShort,
9054
9055        week: defaultLocaleWeek,
9056
9057        weekdays: defaultLocaleWeekdays,
9058        weekdaysMin: defaultLocaleWeekdaysMin,
9059        weekdaysShort: defaultLocaleWeekdaysShort,
9060
9061        meridiemParse: defaultLocaleMeridiemParse,
9062    };
9063
9064    // internal storage for locale config files
9065    var locales = {},
9066        localeFamilies = {},
9067        globalLocale;
9068
9069    function commonPrefix(arr1, arr2) {
9070        var i,
9071            minl = Math.min(arr1.length, arr2.length);
9072        for (i = 0; i < minl; i += 1) {
9073            if (arr1[i] !== arr2[i]) {
9074                return i;
9075            }
9076        }
9077        return minl;
9078    }
9079
9080    function normalizeLocale(key) {
9081        return key ? key.toLowerCase().replace('_', '-') : key;
9082    }
9083
9084    // pick the locale from the array
9085    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
9086    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
9087    function chooseLocale(names) {
9088        var i = 0,
9089            j,
9090            next,
9091            locale,
9092            split;
9093
9094        while (i < names.length) {
9095            split = normalizeLocale(names[i]).split('-');
9096            j = split.length;
9097            next = normalizeLocale(names[i + 1]);
9098            next = next ? next.split('-') : null;
9099            while (j > 0) {
9100                locale = loadLocale(split.slice(0, j).join('-'));
9101                if (locale) {
9102                    return locale;
9103                }
9104                if (
9105                    next &&
9106                    next.length >= j &&
9107                    commonPrefix(split, next) >= j - 1
9108                ) {
9109                    //the next array item is better than a shallower substring of this one
9110                    break;
9111                }
9112                j--;
9113            }
9114            i++;
9115        }
9116        return globalLocale;
9117    }
9118
9119    function loadLocale(name) {
9120        var oldLocale = null,
9121            aliasedRequire;
9122        // TODO: Find a better way to register and load all the locales in Node
9123        if (
9124            locales[name] === undefined &&
9125            typeof module !== 'undefined' &&
9126            module &&
9127            module.exports
9128        ) {
9129            try {
9130                oldLocale = globalLocale._abbr;
9131                aliasedRequire = require;
9132                aliasedRequire('./locale/' + name);
9133                getSetGlobalLocale(oldLocale);
9134            } catch (e) {
9135                // mark as not found to avoid repeating expensive file require call causing high CPU
9136                // when trying to find en-US, en_US, en-us for every format call
9137                locales[name] = null; // null means not found
9138            }
9139        }
9140        return locales[name];
9141    }
9142
9143    // This function will load locale and then set the global locale.  If
9144    // no arguments are passed in, it will simply return the current global
9145    // locale key.
9146    function getSetGlobalLocale(key, values) {
9147        var data;
9148        if (key) {
9149            if (isUndefined(values)) {
9150                data = getLocale(key);
9151            } else {
9152                data = defineLocale(key, values);
9153            }
9154
9155            if (data) {
9156                // moment.duration._locale = moment._locale = data;
9157                globalLocale = data;
9158            } else {
9159                if (typeof console !== 'undefined' && console.warn) {
9160                    //warn user if arguments are passed but the locale could not be set
9161                    console.warn(
9162                        'Locale ' + key + ' not found. Did you forget to load it?'
9163                    );
9164                }
9165            }
9166        }
9167
9168        return globalLocale._abbr;
9169    }
9170
9171    function defineLocale(name, config) {
9172        if (config !== null) {
9173            var locale,
9174                parentConfig = baseConfig;
9175            config.abbr = name;
9176            if (locales[name] != null) {
9177                deprecateSimple(
9178                    'defineLocaleOverride',
9179                    'use moment.updateLocale(localeName, config) to change ' +
9180                        'an existing locale. moment.defineLocale(localeName, ' +
9181                        'config) should only be used for creating a new locale ' +
9182                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'
9183                );
9184                parentConfig = locales[name]._config;
9185            } else if (config.parentLocale != null) {
9186                if (locales[config.parentLocale] != null) {
9187                    parentConfig = locales[config.parentLocale]._config;
9188                } else {
9189                    locale = loadLocale(config.parentLocale);
9190                    if (locale != null) {
9191                        parentConfig = locale._config;
9192                    } else {
9193                        if (!localeFamilies[config.parentLocale]) {
9194                            localeFamilies[config.parentLocale] = [];
9195                        }
9196                        localeFamilies[config.parentLocale].push({
9197                            name: name,
9198                            config: config,
9199                        });
9200                        return null;
9201                    }
9202                }
9203            }
9204            locales[name] = new Locale(mergeConfigs(parentConfig, config));
9205
9206            if (localeFamilies[name]) {
9207                localeFamilies[name].forEach(function (x) {
9208                    defineLocale(x.name, x.config);
9209                });
9210            }
9211
9212            // backwards compat for now: also set the locale
9213            // make sure we set the locale AFTER all child locales have been
9214            // created, so we won't end up with the child locale set.
9215            getSetGlobalLocale(name);
9216
9217            return locales[name];
9218        } else {
9219            // useful for testing
9220            delete locales[name];
9221            return null;
9222        }
9223    }
9224
9225    function updateLocale(name, config) {
9226        if (config != null) {
9227            var locale,
9228                tmpLocale,
9229                parentConfig = baseConfig;
9230
9231            if (locales[name] != null && locales[name].parentLocale != null) {
9232                // Update existing child locale in-place to avoid memory-leaks
9233                locales[name].set(mergeConfigs(locales[name]._config, config));
9234            } else {
9235                // MERGE
9236                tmpLocale = loadLocale(name);
9237                if (tmpLocale != null) {
9238                    parentConfig = tmpLocale._config;
9239                }
9240                config = mergeConfigs(parentConfig, config);
9241                if (tmpLocale == null) {
9242                    // updateLocale is called for creating a new locale
9243                    // Set abbr so it will have a name (getters return
9244                    // undefined otherwise).
9245                    config.abbr = name;
9246                }
9247                locale = new Locale(config);
9248                locale.parentLocale = locales[name];
9249                locales[name] = locale;
9250            }
9251
9252            // backwards compat for now: also set the locale
9253            getSetGlobalLocale(name);
9254        } else {
9255            // pass null for config to unupdate, useful for tests
9256            if (locales[name] != null) {
9257                if (locales[name].parentLocale != null) {
9258                    locales[name] = locales[name].parentLocale;
9259                    if (name === getSetGlobalLocale()) {
9260                        getSetGlobalLocale(name);
9261                    }
9262                } else if (locales[name] != null) {
9263                    delete locales[name];
9264                }
9265            }
9266        }
9267        return locales[name];
9268    }
9269
9270    // returns locale data
9271    function getLocale(key) {
9272        var locale;
9273
9274        if (key && key._locale && key._locale._abbr) {
9275            key = key._locale._abbr;
9276        }
9277
9278        if (!key) {
9279            return globalLocale;
9280        }
9281
9282        if (!isArray(key)) {
9283            //short-circuit everything else
9284            locale = loadLocale(key);
9285            if (locale) {
9286                return locale;
9287            }
9288            key = [key];
9289        }
9290
9291        return chooseLocale(key);
9292    }
9293
9294    function listLocales() {
9295        return keys(locales);
9296    }
9297
9298    function checkOverflow(m) {
9299        var overflow,
9300            a = m._a;
9301
9302        if (a && getParsingFlags(m).overflow === -2) {
9303            overflow =
9304                a[MONTH] < 0 || a[MONTH] > 11
9305                    ? MONTH
9306                    : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])
9307                    ? DATE
9308                    : a[HOUR] < 0 ||
9309                      a[HOUR] > 24 ||
9310                      (a[HOUR] === 24 &&
9311                          (a[MINUTE] !== 0 ||
9312                              a[SECOND] !== 0 ||
9313                              a[MILLISECOND] !== 0))
9314                    ? HOUR
9315                    : a[MINUTE] < 0 || a[MINUTE] > 59
9316                    ? MINUTE
9317                    : a[SECOND] < 0 || a[SECOND] > 59
9318                    ? SECOND
9319                    : a[MILLISECOND] < 0 || a[MILLISECOND] > 999
9320                    ? MILLISECOND
9321                    : -1;
9322
9323            if (
9324                getParsingFlags(m)._overflowDayOfYear &&
9325                (overflow < YEAR || overflow > DATE)
9326            ) {
9327                overflow = DATE;
9328            }
9329            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
9330                overflow = WEEK;
9331            }
9332            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
9333                overflow = WEEKDAY;
9334            }
9335
9336            getParsingFlags(m).overflow = overflow;
9337        }
9338
9339        return m;
9340    }
9341
9342    // iso 8601 regex
9343    // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)
9344    var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
9345        basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
9346        tzRegex = /Z|[+-]\d\d(?::?\d\d)?/,
9347        isoDates = [
9348            ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/],
9349            ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/],
9350            ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/],
9351            ['GGGG-[W]WW', /\d{4}-W\d\d/, false],
9352            ['YYYY-DDD', /\d{4}-\d{3}/],
9353            ['YYYY-MM', /\d{4}-\d\d/, false],
9354            ['YYYYYYMMDD', /[+-]\d{10}/],
9355            ['YYYYMMDD', /\d{8}/],
9356            ['GGGG[W]WWE', /\d{4}W\d{3}/],
9357            ['GGGG[W]WW', /\d{4}W\d{2}/, false],
9358            ['YYYYDDD', /\d{7}/],
9359            ['YYYYMM', /\d{6}/, false],
9360            ['YYYY', /\d{4}/, false],
9361        ],
9362        // iso time formats and regexes
9363        isoTimes = [
9364            ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/],
9365            ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/],
9366            ['HH:mm:ss', /\d\d:\d\d:\d\d/],
9367            ['HH:mm', /\d\d:\d\d/],
9368            ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/],
9369            ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/],
9370            ['HHmmss', /\d\d\d\d\d\d/],
9371            ['HHmm', /\d\d\d\d/],
9372            ['HH', /\d\d/],
9373        ],
9374        aspNetJsonRegex = /^\/?Date\((-?\d+)/i,
9375        // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3
9376        rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,
9377        obsOffsets = {
9378            UT: 0,
9379            GMT: 0,
9380            EDT: -4 * 60,
9381            EST: -5 * 60,
9382            CDT: -5 * 60,
9383            CST: -6 * 60,
9384            MDT: -6 * 60,
9385            MST: -7 * 60,
9386            PDT: -7 * 60,
9387            PST: -8 * 60,
9388        };
9389
9390    // date from iso format
9391    function configFromISO(config) {
9392        var i,
9393            l,
9394            string = config._i,
9395            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),
9396            allowTime,
9397            dateFormat,
9398            timeFormat,
9399            tzFormat;
9400
9401        if (match) {
9402            getParsingFlags(config).iso = true;
9403
9404            for (i = 0, l = isoDates.length; i < l; i++) {
9405                if (isoDates[i][1].exec(match[1])) {
9406                    dateFormat = isoDates[i][0];
9407                    allowTime = isoDates[i][2] !== false;
9408                    break;
9409                }
9410            }
9411            if (dateFormat == null) {
9412                config._isValid = false;
9413                return;
9414            }
9415            if (match[3]) {
9416                for (i = 0, l = isoTimes.length; i < l; i++) {
9417                    if (isoTimes[i][1].exec(match[3])) {
9418                        // match[2] should be 'T' or space
9419                        timeFormat = (match[2] || ' ') + isoTimes[i][0];
9420                        break;
9421                    }
9422                }
9423                if (timeFormat == null) {
9424                    config._isValid = false;
9425                    return;
9426                }
9427            }
9428            if (!allowTime && timeFormat != null) {
9429                config._isValid = false;
9430                return;
9431            }
9432            if (match[4]) {
9433                if (tzRegex.exec(match[4])) {
9434                    tzFormat = 'Z';
9435                } else {
9436                    config._isValid = false;
9437                    return;
9438                }
9439            }
9440            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');
9441            configFromStringAndFormat(config);
9442        } else {
9443            config._isValid = false;
9444        }
9445    }
9446
9447    function extractFromRFC2822Strings(
9448        yearStr,
9449        monthStr,
9450        dayStr,
9451        hourStr,
9452        minuteStr,
9453        secondStr
9454    ) {
9455        var result = [
9456            untruncateYear(yearStr),
9457            defaultLocaleMonthsShort.indexOf(monthStr),
9458            parseInt(dayStr, 10),
9459            parseInt(hourStr, 10),
9460            parseInt(minuteStr, 10),
9461        ];
9462
9463        if (secondStr) {
9464            result.push(parseInt(secondStr, 10));
9465        }
9466
9467        return result;
9468    }
9469
9470    function untruncateYear(yearStr) {
9471        var year = parseInt(yearStr, 10);
9472        if (year <= 49) {
9473            return 2000 + year;
9474        } else if (year <= 999) {
9475            return 1900 + year;
9476        }
9477        return year;
9478    }
9479
9480    function preprocessRFC2822(s) {
9481        // Remove comments and folding whitespace and replace multiple-spaces with a single space
9482        return s
9483            .replace(/\([^)]*\)|[\n\t]/g, ' ')
9484            .replace(/(\s\s+)/g, ' ')
9485            .replace(/^\s\s*/, '')
9486            .replace(/\s\s*$/, '');
9487    }
9488
9489    function checkWeekday(weekdayStr, parsedInput, config) {
9490        if (weekdayStr) {
9491            // TODO: Replace the vanilla JS Date object with an independent day-of-week check.
9492            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),
9493                weekdayActual = new Date(
9494                    parsedInput[0],
9495                    parsedInput[1],
9496                    parsedInput[2]
9497                ).getDay();
9498            if (weekdayProvided !== weekdayActual) {
9499                getParsingFlags(config).weekdayMismatch = true;
9500                config._isValid = false;
9501                return false;
9502            }
9503        }
9504        return true;
9505    }
9506
9507    function calculateOffset(obsOffset, militaryOffset, numOffset) {
9508        if (obsOffset) {
9509            return obsOffsets[obsOffset];
9510        } else if (militaryOffset) {
9511            // the only allowed military tz is Z
9512            return 0;
9513        } else {
9514            var hm = parseInt(numOffset, 10),
9515                m = hm % 100,
9516                h = (hm - m) / 100;
9517            return h * 60 + m;
9518        }
9519    }
9520
9521    // date and time from ref 2822 format
9522    function configFromRFC2822(config) {
9523        var match = rfc2822.exec(preprocessRFC2822(config._i)),
9524            parsedArray;
9525        if (match) {
9526            parsedArray = extractFromRFC2822Strings(
9527                match[4],
9528                match[3],
9529                match[2],
9530                match[5],
9531                match[6],
9532                match[7]
9533            );
9534            if (!checkWeekday(match[1], parsedArray, config)) {
9535                return;
9536            }
9537
9538            config._a = parsedArray;
9539            config._tzm = calculateOffset(match[8], match[9], match[10]);
9540
9541            config._d = createUTCDate.apply(null, config._a);
9542            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
9543
9544            getParsingFlags(config).rfc2822 = true;
9545        } else {
9546            config._isValid = false;
9547        }
9548    }
9549
9550    // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict
9551    function configFromString(config) {
9552        var matched = aspNetJsonRegex.exec(config._i);
9553        if (matched !== null) {
9554            config._d = new Date(+matched[1]);
9555            return;
9556        }
9557
9558        configFromISO(config);
9559        if (config._isValid === false) {
9560            delete config._isValid;
9561        } else {
9562            return;
9563        }
9564
9565        configFromRFC2822(config);
9566        if (config._isValid === false) {
9567            delete config._isValid;
9568        } else {
9569            return;
9570        }
9571
9572        if (config._strict) {
9573            config._isValid = false;
9574        } else {
9575            // Final attempt, use Input Fallback
9576            hooks.createFromInputFallback(config);
9577        }
9578    }
9579
9580    hooks.createFromInputFallback = deprecate(
9581        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +
9582            'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +
9583            'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',
9584        function (config) {
9585            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
9586        }
9587    );
9588
9589    // Pick the first defined of two or three arguments.
9590    function defaults(a, b, c) {
9591        if (a != null) {
9592            return a;
9593        }
9594        if (b != null) {
9595            return b;
9596        }
9597        return c;
9598    }
9599
9600    function currentDateArray(config) {
9601        // hooks is actually the exported moment object
9602        var nowValue = new Date(hooks.now());
9603        if (config._useUTC) {
9604            return [
9605                nowValue.getUTCFullYear(),
9606                nowValue.getUTCMonth(),
9607                nowValue.getUTCDate(),
9608            ];
9609        }
9610        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];
9611    }
9612
9613    // convert an array to a date.
9614    // the array should mirror the parameters below
9615    // note: all values past the year are optional and will default to the lowest possible value.
9616    // [year, month, day , hour, minute, second, millisecond]
9617    function configFromArray(config) {
9618        var i,
9619            date,
9620            input = [],
9621            currentDate,
9622            expectedWeekday,
9623            yearToUse;
9624
9625        if (config._d) {
9626            return;
9627        }
9628
9629        currentDate = currentDateArray(config);
9630
9631        //compute day of the year from weeks and weekdays
9632        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
9633            dayOfYearFromWeekInfo(config);
9634        }
9635
9636        //if the day of the year is set, figure out what it is
9637        if (config._dayOfYear != null) {
9638            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
9639
9640            if (
9641                config._dayOfYear > daysInYear(yearToUse) ||
9642                config._dayOfYear === 0
9643            ) {
9644                getParsingFlags(config)._overflowDayOfYear = true;
9645            }
9646
9647            date = createUTCDate(yearToUse, 0, config._dayOfYear);
9648            config._a[MONTH] = date.getUTCMonth();
9649            config._a[DATE] = date.getUTCDate();
9650        }
9651
9652        // Default to current date.
9653        // * if no year, month, day of month are given, default to today
9654        // * if day of month is given, default month and year
9655        // * if month is given, default only year
9656        // * if year is given, don't default anything
9657        for (i = 0; i < 3 && config._a[i] == null; ++i) {
vendor: 4,611 bytes, lines 9658-9793
9658            config._a[i] = input[i] = currentDate[i];
9659        }
9660
9661        // Zero out whatever was not defaulted, including time
9662        for (; i < 7; i++) {
9663            config._a[i] = input[i] =
9664                config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];
9665        }
9666
9667        // Check for 24:00:00.000
9668        if (
9669            config._a[HOUR] === 24 &&
9670            config._a[MINUTE] === 0 &&
9671            config._a[SECOND] === 0 &&
9672            config._a[MILLISECOND] === 0
9673        ) {
9674            config._nextDay = true;
9675            config._a[HOUR] = 0;
9676        }
9677
9678        config._d = (config._useUTC ? createUTCDate : createDate).apply(
9679            null,
9680            input
9681        );
9682        expectedWeekday = config._useUTC
9683            ? config._d.getUTCDay()
9684            : config._d.getDay();
9685
9686        // Apply timezone offset from input. The actual utcOffset can be changed
9687        // with parseZone.
9688        if (config._tzm != null) {
9689            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
9690        }
9691
9692        if (config._nextDay) {
9693            config._a[HOUR] = 24;
9694        }
9695
9696        // check for mismatching day of week
9697        if (
9698            config._w &&
9699            typeof config._w.d !== 'undefined' &&
9700            config._w.d !== expectedWeekday
9701        ) {
9702            getParsingFlags(config).weekdayMismatch = true;
9703        }
9704    }
9705
9706    function dayOfYearFromWeekInfo(config) {
9707        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;
9708
9709        w = config._w;
9710        if (w.GG != null || w.W != null || w.E != null) {
9711            dow = 1;
9712            doy = 4;
9713
9714            // TODO: We need to take the current isoWeekYear, but that depends on
9715            // how we interpret now (local, utc, fixed offset). So create
9716            // a now version of current config (take local/utc/offset flags, and
9717            // create now).
9718            weekYear = defaults(
9719                w.GG,
9720                config._a[YEAR],
9721                weekOfYear(createLocal(), 1, 4).year
9722            );
9723            week = defaults(w.W, 1);
9724            weekday = defaults(w.E, 1);
9725            if (weekday < 1 || weekday > 7) {
9726                weekdayOverflow = true;
9727            }
9728        } else {
9729            dow = config._locale._week.dow;
9730            doy = config._locale._week.doy;
9731
9732            curWeek = weekOfYear(createLocal(), dow, doy);
9733
9734            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);
9735
9736            // Default to current week.
9737            week = defaults(w.w, curWeek.week);
9738
9739            if (w.d != null) {
9740                // weekday -- low day numbers are considered next week
9741                weekday = w.d;
9742                if (weekday < 0 || weekday > 6) {
9743                    weekdayOverflow = true;
9744                }
9745            } else if (w.e != null) {
9746                // local weekday -- counting starts from beginning of week
9747                weekday = w.e + dow;
9748                if (w.e < 0 || w.e > 6) {
9749                    weekdayOverflow = true;
9750                }
9751            } else {
9752                // default to beginning of week
9753                weekday = dow;
9754            }
9755        }
9756        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {
9757            getParsingFlags(config)._overflowWeeks = true;
9758        } else if (weekdayOverflow != null) {
9759            getParsingFlags(config)._overflowWeekday = true;
9760        } else {
9761            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);
9762            config._a[YEAR] = temp.year;
9763            config._dayOfYear = temp.dayOfYear;
9764        }
9765    }
9766
9767    // constant that refers to the ISO standard
9768    hooks.ISO_8601 = function () {};
9769
9770    // constant that refers to the RFC 2822 form
9771    hooks.RFC_2822 = function () {};
9772
9773    // date from string and format string
9774    function configFromStringAndFormat(config) {
9775        // TODO: Move this to another part of the creation flow to prevent circular deps
9776        if (config._f === hooks.ISO_8601) {
9777            configFromISO(config);
9778            return;
9779        }
9780        if (config._f === hooks.RFC_2822) {
9781            configFromRFC2822(config);
9782            return;
9783        }
9784        config._a = [];
9785        getParsingFlags(config).empty = true;
9786
9787        // This array is used to make a Date, either with `new Date` or `Date.UTC`
9788        var string = '' + config._i,
9789            i,
9790            parsedInput,
9791            tokens,
9792            token,
9793            skipped,
vendor: 17,307 bytes, lines 9794-10336
9794            stringLength = string.length,
9795            totalParsedInputLength = 0,
9796            era;
9797
9798        tokens =
9799            expandFormat(config._f, config._locale).match(formattingTokens) || [];
9800
9801        for (i = 0; i < tokens.length; i++) {
9802            token = tokens[i];
9803            parsedInput = (string.match(getParseRegexForToken(token, config)) ||
9804                [])[0];
9805            if (parsedInput) {
9806                skipped = string.substr(0, string.indexOf(parsedInput));
9807                if (skipped.length > 0) {
9808                    getParsingFlags(config).unusedInput.push(skipped);
9809                }
9810                string = string.slice(
9811                    string.indexOf(parsedInput) + parsedInput.length
9812                );
9813                totalParsedInputLength += parsedInput.length;
9814            }
9815            // don't parse if it's not a known token
9816            if (formatTokenFunctions[token]) {
9817                if (parsedInput) {
9818                    getParsingFlags(config).empty = false;
9819                } else {
9820                    getParsingFlags(config).unusedTokens.push(token);
9821                }
9822                addTimeToArrayFromToken(token, parsedInput, config);
9823            } else if (config._strict && !parsedInput) {
9824                getParsingFlags(config).unusedTokens.push(token);
9825            }
9826        }
9827
9828        // add remaining unparsed input length to the string
9829        getParsingFlags(config).charsLeftOver =
9830            stringLength - totalParsedInputLength;
9831        if (string.length > 0) {
9832            getParsingFlags(config).unusedInput.push(string);
9833        }
9834
9835        // clear _12h flag if hour is <= 12
9836        if (
9837            config._a[HOUR] <= 12 &&
9838            getParsingFlags(config).bigHour === true &&
9839            config._a[HOUR] > 0
9840        ) {
9841            getParsingFlags(config).bigHour = undefined;
9842        }
9843
9844        getParsingFlags(config).parsedDateParts = config._a.slice(0);
9845        getParsingFlags(config).meridiem = config._meridiem;
9846        // handle meridiem
9847        config._a[HOUR] = meridiemFixWrap(
9848            config._locale,
9849            config._a[HOUR],
9850            config._meridiem
9851        );
9852
9853        // handle era
9854        era = getParsingFlags(config).era;
9855        if (era !== null) {
9856            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);
9857        }
9858
9859        configFromArray(config);
9860        checkOverflow(config);
9861    }
9862
9863    function meridiemFixWrap(locale, hour, meridiem) {
9864        var isPm;
9865
9866        if (meridiem == null) {
9867            // nothing to do
9868            return hour;
9869        }
9870        if (locale.meridiemHour != null) {
9871            return locale.meridiemHour(hour, meridiem);
9872        } else if (locale.isPM != null) {
9873            // Fallback
9874            isPm = locale.isPM(meridiem);
9875            if (isPm && hour < 12) {
9876                hour += 12;
9877            }
9878            if (!isPm && hour === 12) {
9879                hour = 0;
9880            }
9881            return hour;
9882        } else {
9883            // this is not supposed to happen
9884            return hour;
9885        }
9886    }
9887
9888    // date from string and array of format strings
9889    function configFromStringAndArray(config) {
9890        var tempConfig,
9891            bestMoment,
9892            scoreToBeat,
9893            i,
9894            currentScore,
9895            validFormatFound,
9896            bestFormatIsValid = false;
9897
9898        if (config._f.length === 0) {
9899            getParsingFlags(config).invalidFormat = true;
9900            config._d = new Date(NaN);
9901            return;
9902        }
9903
9904        for (i = 0; i < config._f.length; i++) {
9905            currentScore = 0;
9906            validFormatFound = false;
9907            tempConfig = copyConfig({}, config);
9908            if (config._useUTC != null) {
9909                tempConfig._useUTC = config._useUTC;
9910            }
9911            tempConfig._f = config._f[i];
9912            configFromStringAndFormat(tempConfig);
9913
9914            if (isValid(tempConfig)) {
9915                validFormatFound = true;
9916            }
9917
9918            // if there is any input that was not parsed add a penalty for that format
9919            currentScore += getParsingFlags(tempConfig).charsLeftOver;
9920
9921            //or tokens
9922            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
9923
9924            getParsingFlags(tempConfig).score = currentScore;
9925
9926            if (!bestFormatIsValid) {
9927                if (
9928                    scoreToBeat == null ||
9929                    currentScore < scoreToBeat ||
9930                    validFormatFound
9931                ) {
9932                    scoreToBeat = currentScore;
9933                    bestMoment = tempConfig;
9934                    if (validFormatFound) {
9935                        bestFormatIsValid = true;
9936                    }
9937                }
9938            } else {
9939                if (currentScore < scoreToBeat) {
9940                    scoreToBeat = currentScore;
9941                    bestMoment = tempConfig;
9942                }
9943            }
9944        }
9945
9946        extend(config, bestMoment || tempConfig);
9947    }
9948
9949    function configFromObject(config) {
9950        if (config._d) {
9951            return;
9952        }
9953
9954        var i = normalizeObjectUnits(config._i),
9955            dayOrDate = i.day === undefined ? i.date : i.day;
9956        config._a = map(
9957            [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],
9958            function (obj) {
9959                return obj && parseInt(obj, 10);
9960            }
9961        );
9962
9963        configFromArray(config);
9964    }
9965
9966    function createFromConfig(config) {
9967        var res = new Moment(checkOverflow(prepareConfig(config)));
9968        if (res._nextDay) {
9969            // Adding is smart enough around DST
9970            res.add(1, 'd');
9971            res._nextDay = undefined;
9972        }
9973
9974        return res;
9975    }
9976
9977    function prepareConfig(config) {
9978        var input = config._i,
9979            format = config._f;
9980
9981        config._locale = config._locale || getLocale(config._l);
9982
9983        if (input === null || (format === undefined && input === '')) {
9984            return createInvalid({ nullInput: true });
9985        }
9986
9987        if (typeof input === 'string') {
9988            config._i = input = config._locale.preparse(input);
9989        }
9990
9991        if (isMoment(input)) {
9992            return new Moment(checkOverflow(input));
9993        } else if (isDate(input)) {
9994            config._d = input;
9995        } else if (isArray(format)) {
9996            configFromStringAndArray(config);
9997        } else if (format) {
9998            configFromStringAndFormat(config);
9999        } else {
10000            configFromInput(config);
10001        }
10002
10003        if (!isValid(config)) {
10004            config._d = null;
10005        }
10006
10007        return config;
10008    }
10009
10010    function configFromInput(config) {
10011        var input = config._i;
10012        if (isUndefined(input)) {
10013            config._d = new Date(hooks.now());
10014        } else if (isDate(input)) {
10015            config._d = new Date(input.valueOf());
10016        } else if (typeof input === 'string') {
10017            configFromString(config);
10018        } else if (isArray(input)) {
10019            config._a = map(input.slice(0), function (obj) {
10020                return parseInt(obj, 10);
10021            });
10022            configFromArray(config);
10023        } else if (isObject(input)) {
10024            configFromObject(config);
10025        } else if (isNumber(input)) {
10026            // from milliseconds
10027            config._d = new Date(input);
10028        } else {
10029            hooks.createFromInputFallback(config);
10030        }
10031    }
10032
10033    function createLocalOrUTC(input, format, locale, strict, isUTC) {
10034        var c = {};
10035
10036        if (format === true || format === false) {
10037            strict = format;
10038            format = undefined;
10039        }
10040
10041        if (locale === true || locale === false) {
10042            strict = locale;
10043            locale = undefined;
10044        }
10045
10046        if (
10047            (isObject(input) && isObjectEmpty(input)) ||
10048            (isArray(input) && input.length === 0)
10049        ) {
10050            input = undefined;
10051        }
10052        // object construction must be done this way.
10053        // https://github.com/moment/moment/issues/1423
10054        c._isAMomentObject = true;
10055        c._useUTC = c._isUTC = isUTC;
10056        c._l = locale;
10057        c._i = input;
10058        c._f = format;
10059        c._strict = strict;
10060
10061        return createFromConfig(c);
10062    }
10063
10064    function createLocal(input, format, locale, strict) {
10065        return createLocalOrUTC(input, format, locale, strict, false);
10066    }
10067
10068    var prototypeMin = deprecate(
10069            'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',
10070            function () {
10071                var other = createLocal.apply(null, arguments);
10072                if (this.isValid() && other.isValid()) {
10073                    return other < this ? this : other;
10074                } else {
10075                    return createInvalid();
10076                }
10077            }
10078        ),
10079        prototypeMax = deprecate(
10080            'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',
10081            function () {
10082                var other = createLocal.apply(null, arguments);
10083                if (this.isValid() && other.isValid()) {
10084                    return other > this ? this : other;
10085                } else {
10086                    return createInvalid();
10087                }
10088            }
10089        );
10090
10091    // Pick a moment m from moments so that m[fn](other) is true for all
10092    // other. This relies on the function fn to be transitive.
10093    //
10094    // moments should either be an array of moment objects or an array, whose
10095    // first element is an array of moment objects.
10096    function pickBy(fn, moments) {
10097        var res, i;
10098        if (moments.length === 1 && isArray(moments[0])) {
10099            moments = moments[0];
10100        }
10101        if (!moments.length) {
10102            return createLocal();
10103        }
10104        res = moments[0];
10105        for (i = 1; i < moments.length; ++i) {
10106            if (!moments[i].isValid() || moments[i][fn](res)) {
10107                res = moments[i];
10108            }
10109        }
10110        return res;
10111    }
10112
10113    // TODO: Use [].sort instead?
10114    function min() {
10115        var args = [].slice.call(arguments, 0);
10116
10117        return pickBy('isBefore', args);
10118    }
10119
10120    function max() {
10121        var args = [].slice.call(arguments, 0);
10122
10123        return pickBy('isAfter', args);
10124    }
10125
10126    var now = function () {
10127        return Date.now ? Date.now() : +new Date();
10128    };
10129
10130    var ordering = [
10131        'year',
10132        'quarter',
10133        'month',
10134        'week',
10135        'day',
10136        'hour',
10137        'minute',
10138        'second',
10139        'millisecond',
10140    ];
10141
10142    function isDurationValid(m) {
10143        var key,
10144            unitHasDecimal = false,
10145            i;
10146        for (key in m) {
10147            if (
10148                hasOwnProp(m, key) &&
10149                !(
10150                    indexOf.call(ordering, key) !== -1 &&
10151                    (m[key] == null || !isNaN(m[key]))
10152                )
10153            ) {
10154                return false;
10155            }
10156        }
10157
10158        for (i = 0; i < ordering.length; ++i) {
10159            if (m[ordering[i]]) {
10160                if (unitHasDecimal) {
10161                    return false; // only allow non-integers for smallest unit
10162                }
10163                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {
10164                    unitHasDecimal = true;
10165                }
10166            }
10167        }
10168
10169        return true;
10170    }
10171
10172    function isValid$1() {
10173        return this._isValid;
10174    }
10175
10176    function createInvalid$1() {
10177        return createDuration(NaN);
10178    }
10179
10180    function Duration(duration) {
10181        var normalizedInput = normalizeObjectUnits(duration),
10182            years = normalizedInput.year || 0,
10183            quarters = normalizedInput.quarter || 0,
10184            months = normalizedInput.month || 0,
10185            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,
10186            days = normalizedInput.day || 0,
10187            hours = normalizedInput.hour || 0,
10188            minutes = normalizedInput.minute || 0,
10189            seconds = normalizedInput.second || 0,
10190            milliseconds = normalizedInput.millisecond || 0;
10191
10192        this._isValid = isDurationValid(normalizedInput);
10193
10194        // representation for dateAddRemove
10195        this._milliseconds =
10196            +milliseconds +
10197            seconds * 1e3 + // 1000
10198            minutes * 6e4 + // 1000 * 60
10199            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978
10200        // Because of dateAddRemove treats 24 hours as different from a
10201        // day when working around DST, we need to store them separately
10202        this._days = +days + weeks * 7;
10203        // It is impossible to translate months into days without knowing
10204        // which months you are are talking about, so we have to store
10205        // it separately.
10206        this._months = +months + quarters * 3 + years * 12;
10207
10208        this._data = {};
10209
10210        this._locale = getLocale();
10211
10212        this._bubble();
10213    }
10214
10215    function isDuration(obj) {
10216        return obj instanceof Duration;
10217    }
10218
10219    function absRound(number) {
10220        if (number < 0) {
10221            return Math.round(-1 * number) * -1;
10222        } else {
10223            return Math.round(number);
10224        }
10225    }
10226
10227    // compare two arrays, return the number of differences
10228    function compareArrays(array1, array2, dontConvert) {
10229        var len = Math.min(array1.length, array2.length),
10230            lengthDiff = Math.abs(array1.length - array2.length),
10231            diffs = 0,
10232            i;
10233        for (i = 0; i < len; i++) {
10234            if (
10235                (dontConvert && array1[i] !== array2[i]) ||
10236                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))
10237            ) {
10238                diffs++;
10239            }
10240        }
10241        return diffs + lengthDiff;
10242    }
10243
10244    // FORMATTING
10245
10246    function offset(token, separator) {
10247        addFormatToken(token, 0, 0, function () {
10248            var offset = this.utcOffset(),
10249                sign = '+';
10250            if (offset < 0) {
10251                offset = -offset;
10252                sign = '-';
10253            }
10254            return (
10255                sign +
10256                zeroFill(~~(offset / 60), 2) +
10257                separator +
10258                zeroFill(~~offset % 60, 2)
10259            );
10260        });
10261    }
10262
10263    offset('Z', ':');
10264    offset('ZZ', '');
10265
10266    // PARSING
10267
10268    addRegexToken('Z', matchShortOffset);
10269    addRegexToken('ZZ', matchShortOffset);
10270    addParseToken(['Z', 'ZZ'], function (input, array, config) {
10271        config._useUTC = true;
10272        config._tzm = offsetFromString(matchShortOffset, input);
10273    });
10274
10275    // HELPERS
10276
10277    // timezone chunker
10278    // '+10:00' > ['10',  '00']
10279    // '-1530'  > ['-15', '30']
10280    var chunkOffset = /([\+\-]|\d\d)/gi;
10281
10282    function offsetFromString(matcher, string) {
10283        var matches = (string || '').match(matcher),
10284            chunk,
10285            parts,
10286            minutes;
10287
10288        if (matches === null) {
10289            return null;
10290        }
10291
10292        chunk = matches[matches.length - 1] || [];
10293        parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];
10294        minutes = +(parts[1] * 60) + toInt(parts[2]);
10295
10296        return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;
10297    }
10298
10299    // Return a moment from input, that is local/utc/zone equivalent to model.
10300    function cloneWithOffset(input, model) {
10301        var res, diff;
10302        if (model._isUTC) {
10303            res = model.clone();
10304            diff =
10305                (isMoment(input) || isDate(input)
10306                    ? input.valueOf()
10307                    : createLocal(input).valueOf()) - res.valueOf();
10308            // Use low-level api, because this fn is low-level api.
10309            res._d.setTime(res._d.valueOf() + diff);
10310            hooks.updateOffset(res, false);
10311            return res;
10312        } else {
10313            return createLocal(input).local();
10314        }
10315    }
10316
10317    function getDateOffset(m) {
10318        // On Firefox.24 Date#getTimezoneOffset returns a floating point.
10319        // https://github.com/moment/moment/pull/1871
10320        return -Math.round(m._d.getTimezoneOffset());
10321    }
10322
10323    // HOOKS
10324
10325    // This function will be called whenever a moment is mutated.
10326    // It is intended to keep the offset in sync with the timezone.
10327    hooks.updateOffset = function () {};
10328
10329    // MOMENTS
10330
10331    // keepLocalTime = true means only change the timezone, without
10332    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
10333    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
10334    // +0200, so we adjust the time as needed, to be valid.
10335    //
10336    // Keeping the time actually adds/subtracts (one hour)
vendor: 31,184 bytes, lines 10337-11297
10337    // from the actual represented time. That is why we call updateOffset
10338    // a second time. In case it wants us to change the offset again
10339    // _changeInProgress == true case, then we have to adjust, because
10340    // there is no such time in the given timezone.
10341    function getSetOffset(input, keepLocalTime, keepMinutes) {
10342        var offset = this._offset || 0,
10343            localAdjust;
10344        if (!this.isValid()) {
10345            return input != null ? this : NaN;
10346        }
10347        if (input != null) {
10348            if (typeof input === 'string') {
10349                input = offsetFromString(matchShortOffset, input);
10350                if (input === null) {
10351                    return this;
10352                }
10353            } else if (Math.abs(input) < 16 && !keepMinutes) {
10354                input = input * 60;
10355            }
10356            if (!this._isUTC && keepLocalTime) {
10357                localAdjust = getDateOffset(this);
10358            }
10359            this._offset = input;
10360            this._isUTC = true;
10361            if (localAdjust != null) {
10362                this.add(localAdjust, 'm');
10363            }
10364            if (offset !== input) {
10365                if (!keepLocalTime || this._changeInProgress) {
10366                    addSubtract(
10367                        this,
10368                        createDuration(input - offset, 'm'),
10369                        1,
10370                        false
10371                    );
10372                } else if (!this._changeInProgress) {
10373                    this._changeInProgress = true;
10374                    hooks.updateOffset(this, true);
10375                    this._changeInProgress = null;
10376                }
10377            }
10378            return this;
10379        } else {
10380            return this._isUTC ? offset : getDateOffset(this);
10381        }
10382    }
10383
10384    function getSetZone(input, keepLocalTime) {
10385        if (input != null) {
10386            if (typeof input !== 'string') {
10387                input = -input;
10388            }
10389
10390            this.utcOffset(input, keepLocalTime);
10391
10392            return this;
10393        } else {
10394            return -this.utcOffset();
10395        }
10396    }
10397
10398    function setOffsetToUTC(keepLocalTime) {
10399        return this.utcOffset(0, keepLocalTime);
10400    }
10401
10402    function setOffsetToLocal(keepLocalTime) {
10403        if (this._isUTC) {
10404            this.utcOffset(0, keepLocalTime);
10405            this._isUTC = false;
10406
10407            if (keepLocalTime) {
10408                this.subtract(getDateOffset(this), 'm');
10409            }
10410        }
10411        return this;
10412    }
10413
10414    function setOffsetToParsedOffset() {
10415        if (this._tzm != null) {
10416            this.utcOffset(this._tzm, false, true);
10417        } else if (typeof this._i === 'string') {
10418            var tZone = offsetFromString(matchOffset, this._i);
10419            if (tZone != null) {
10420                this.utcOffset(tZone);
10421            } else {
10422                this.utcOffset(0, true);
10423            }
10424        }
10425        return this;
10426    }
10427
10428    function hasAlignedHourOffset(input) {
10429        if (!this.isValid()) {
10430            return false;
10431        }
10432        input = input ? createLocal(input).utcOffset() : 0;
10433
10434        return (this.utcOffset() - input) % 60 === 0;
10435    }
10436
10437    function isDaylightSavingTime() {
10438        return (
10439            this.utcOffset() > this.clone().month(0).utcOffset() ||
10440            this.utcOffset() > this.clone().month(5).utcOffset()
10441        );
10442    }
10443
10444    function isDaylightSavingTimeShifted() {
10445        if (!isUndefined(this._isDSTShifted)) {
10446            return this._isDSTShifted;
10447        }
10448
10449        var c = {},
10450            other;
10451
10452        copyConfig(c, this);
10453        c = prepareConfig(c);
10454
10455        if (c._a) {
10456            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);
10457            this._isDSTShifted =
10458                this.isValid() && compareArrays(c._a, other.toArray()) > 0;
10459        } else {
10460            this._isDSTShifted = false;
10461        }
10462
10463        return this._isDSTShifted;
10464    }
10465
10466    function isLocal() {
10467        return this.isValid() ? !this._isUTC : false;
10468    }
10469
10470    function isUtcOffset() {
10471        return this.isValid() ? this._isUTC : false;
10472    }
10473
10474    function isUtc() {
10475        return this.isValid() ? this._isUTC && this._offset === 0 : false;
10476    }
10477
10478    // ASP.NET json date format regex
10479    var aspNetRegex = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,
10480        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
10481        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
10482        // and further modified to allow for strings containing both week and day
10483        isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
10484
10485    function createDuration(input, key) {
10486        var duration = input,
10487            // matching against regexp is expensive, do it on demand
10488            match = null,
10489            sign,
10490            ret,
10491            diffRes;
10492
10493        if (isDuration(input)) {
10494            duration = {
10495                ms: input._milliseconds,
10496                d: input._days,
10497                M: input._months,
10498            };
10499        } else if (isNumber(input) || !isNaN(+input)) {
10500            duration = {};
10501            if (key) {
10502                duration[key] = +input;
10503            } else {
10504                duration.milliseconds = +input;
10505            }
10506        } else if ((match = aspNetRegex.exec(input))) {
10507            sign = match[1] === '-' ? -1 : 1;
10508            duration = {
10509                y: 0,
10510                d: toInt(match[DATE]) * sign,
10511                h: toInt(match[HOUR]) * sign,
10512                m: toInt(match[MINUTE]) * sign,
10513                s: toInt(match[SECOND]) * sign,
10514                ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match
10515            };
10516        } else if ((match = isoRegex.exec(input))) {
10517            sign = match[1] === '-' ? -1 : 1;
10518            duration = {
10519                y: parseIso(match[2], sign),
10520                M: parseIso(match[3], sign),
10521                w: parseIso(match[4], sign),
10522                d: parseIso(match[5], sign),
10523                h: parseIso(match[6], sign),
10524                m: parseIso(match[7], sign),
10525                s: parseIso(match[8], sign),
10526            };
10527        } else if (duration == null) {
10528            // checks for null or undefined
10529            duration = {};
10530        } else if (
10531            typeof duration === 'object' &&
10532            ('from' in duration || 'to' in duration)
10533        ) {
10534            diffRes = momentsDifference(
10535                createLocal(duration.from),
10536                createLocal(duration.to)
10537            );
10538
10539            duration = {};
10540            duration.ms = diffRes.milliseconds;
10541            duration.M = diffRes.months;
10542        }
10543
10544        ret = new Duration(duration);
10545
10546        if (isDuration(input) && hasOwnProp(input, '_locale')) {
10547            ret._locale = input._locale;
10548        }
10549
10550        if (isDuration(input) && hasOwnProp(input, '_isValid')) {
10551            ret._isValid = input._isValid;
10552        }
10553
10554        return ret;
10555    }
10556
10557    createDuration.fn = Duration.prototype;
10558    createDuration.invalid = createInvalid$1;
10559
10560    function parseIso(inp, sign) {
10561        // We'd normally use ~~inp for this, but unfortunately it also
10562        // converts floats to ints.
10563        // inp may be undefined, so careful calling replace on it.
10564        var res = inp && parseFloat(inp.replace(',', '.'));
10565        // apply sign while we're at it
10566        return (isNaN(res) ? 0 : res) * sign;
10567    }
10568
10569    function positiveMomentsDifference(base, other) {
10570        var res = {};
10571
10572        res.months =
10573            other.month() - base.month() + (other.year() - base.year()) * 12;
10574        if (base.clone().add(res.months, 'M').isAfter(other)) {
10575            --res.months;
10576        }
10577
10578        res.milliseconds = +other - +base.clone().add(res.months, 'M');
10579
10580        return res;
10581    }
10582
10583    function momentsDifference(base, other) {
10584        var res;
10585        if (!(base.isValid() && other.isValid())) {
10586            return { milliseconds: 0, months: 0 };
10587        }
10588
10589        other = cloneWithOffset(other, base);
10590        if (base.isBefore(other)) {
10591            res = positiveMomentsDifference(base, other);
10592        } else {
10593            res = positiveMomentsDifference(other, base);
10594            res.milliseconds = -res.milliseconds;
10595            res.months = -res.months;
10596        }
10597
10598        return res;
10599    }
10600
10601    // TODO: remove 'name' arg after deprecation is removed
10602    function createAdder(direction, name) {
10603        return function (val, period) {
10604            var dur, tmp;
10605            //invert the arguments, but complain about it
10606            if (period !== null && !isNaN(+period)) {
10607                deprecateSimple(
10608                    name,
10609                    'moment().' +
10610                        name +
10611                        '(period, number) is deprecated. Please use moment().' +
10612                        name +
10613                        '(number, period). ' +
10614                        'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'
10615                );
10616                tmp = val;
10617                val = period;
10618                period = tmp;
10619            }
10620
10621            dur = createDuration(val, period);
10622            addSubtract(this, dur, direction);
10623            return this;
10624        };
10625    }
10626
10627    function addSubtract(mom, duration, isAdding, updateOffset) {
10628        var milliseconds = duration._milliseconds,
10629            days = absRound(duration._days),
10630            months = absRound(duration._months);
10631
10632        if (!mom.isValid()) {
10633            // No op
10634            return;
10635        }
10636
10637        updateOffset = updateOffset == null ? true : updateOffset;
10638
10639        if (months) {
10640            setMonth(mom, get(mom, 'Month') + months * isAdding);
10641        }
10642        if (days) {
10643            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);
10644        }
10645        if (milliseconds) {
10646            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);
10647        }
10648        if (updateOffset) {
10649            hooks.updateOffset(mom, days || months);
10650        }
10651    }
10652
10653    var add = createAdder(1, 'add'),
10654        subtract = createAdder(-1, 'subtract');
10655
10656    function isString(input) {
10657        return typeof input === 'string' || input instanceof String;
10658    }
10659
10660    // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined
10661    function isMomentInput(input) {
10662        return (
10663            isMoment(input) ||
10664            isDate(input) ||
10665            isString(input) ||
10666            isNumber(input) ||
10667            isNumberOrStringArray(input) ||
10668            isMomentInputObject(input) ||
10669            input === null ||
10670            input === undefined
10671        );
10672    }
10673
10674    function isMomentInputObject(input) {
10675        var objectTest = isObject(input) && !isObjectEmpty(input),
10676            propertyTest = false,
10677            properties = [
10678                'years',
10679                'year',
10680                'y',
10681                'months',
10682                'month',
10683                'M',
10684                'days',
10685                'day',
10686                'd',
10687                'dates',
10688                'date',
10689                'D',
10690                'hours',
10691                'hour',
10692                'h',
10693                'minutes',
10694                'minute',
10695                'm',
10696                'seconds',
10697                'second',
10698                's',
10699                'milliseconds',
10700                'millisecond',
10701                'ms',
10702            ],
10703            i,
10704            property;
10705
10706        for (i = 0; i < properties.length; i += 1) {
10707            property = properties[i];
10708            propertyTest = propertyTest || hasOwnProp(input, property);
10709        }
10710
10711        return objectTest && propertyTest;
10712    }
10713
10714    function isNumberOrStringArray(input) {
10715        var arrayTest = isArray(input),
10716            dataTypeTest = false;
10717        if (arrayTest) {
10718            dataTypeTest =
10719                input.filter(function (item) {
10720                    return !isNumber(item) && isString(input);
10721                }).length === 0;
10722        }
10723        return arrayTest && dataTypeTest;
10724    }
10725
10726    function isCalendarSpec(input) {
10727        var objectTest = isObject(input) && !isObjectEmpty(input),
10728            propertyTest = false,
10729            properties = [
10730                'sameDay',
10731                'nextDay',
10732                'lastDay',
10733                'nextWeek',
10734                'lastWeek',
10735                'sameElse',
10736            ],
10737            i,
10738            property;
10739
10740        for (i = 0; i < properties.length; i += 1) {
10741            property = properties[i];
10742            propertyTest = propertyTest || hasOwnProp(input, property);
10743        }
10744
10745        return objectTest && propertyTest;
10746    }
10747
10748    function getCalendarFormat(myMoment, now) {
10749        var diff = myMoment.diff(now, 'days', true);
10750        return diff < -6
10751            ? 'sameElse'
10752            : diff < -1
10753            ? 'lastWeek'
10754            : diff < 0
10755            ? 'lastDay'
10756            : diff < 1
10757            ? 'sameDay'
10758            : diff < 2
10759            ? 'nextDay'
10760            : diff < 7
10761            ? 'nextWeek'
10762            : 'sameElse';
10763    }
10764
10765    function calendar$1(time, formats) {
10766        // Support for single parameter, formats only overload to the calendar function
10767        if (arguments.length === 1) {
10768            if (!arguments[0]) {
10769                time = undefined;
10770                formats = undefined;
10771            } else if (isMomentInput(arguments[0])) {
10772                time = arguments[0];
10773                formats = undefined;
10774            } else if (isCalendarSpec(arguments[0])) {
10775                formats = arguments[0];
10776                time = undefined;
10777            }
10778        }
10779        // We want to compare the start of today, vs this.
10780        // Getting start-of-today depends on whether we're local/utc/offset or not.
10781        var now = time || createLocal(),
10782            sod = cloneWithOffset(now, this).startOf('day'),
10783            format = hooks.calendarFormat(this, sod) || 'sameElse',
10784            output =
10785                formats &&
10786                (isFunction(formats[format])
10787                    ? formats[format].call(this, now)
10788                    : formats[format]);
10789
10790        return this.format(
10791            output || this.localeData().calendar(format, this, createLocal(now))
10792        );
10793    }
10794
10795    function clone() {
10796        return new Moment(this);
10797    }
10798
10799    function isAfter(input, units) {
10800        var localInput = isMoment(input) ? input : createLocal(input);
10801        if (!(this.isValid() && localInput.isValid())) {
10802            return false;
10803        }
10804        units = normalizeUnits(units) || 'millisecond';
10805        if (units === 'millisecond') {
10806            return this.valueOf() > localInput.valueOf();
10807        } else {
10808            return localInput.valueOf() < this.clone().startOf(units).valueOf();
10809        }
10810    }
10811
10812    function isBefore(input, units) {
10813        var localInput = isMoment(input) ? input : createLocal(input);
10814        if (!(this.isValid() && localInput.isValid())) {
10815            return false;
10816        }
10817        units = normalizeUnits(units) || 'millisecond';
10818        if (units === 'millisecond') {
10819            return this.valueOf() < localInput.valueOf();
10820        } else {
10821            return this.clone().endOf(units).valueOf() < localInput.valueOf();
10822        }
10823    }
10824
10825    function isBetween(from, to, units, inclusivity) {
10826        var localFrom = isMoment(from) ? from : createLocal(from),
10827            localTo = isMoment(to) ? to : createLocal(to);
10828        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {
10829            return false;
10830        }
10831        inclusivity = inclusivity || '()';
10832        return (
10833            (inclusivity[0] === '('
10834                ? this.isAfter(localFrom, units)
10835                : !this.isBefore(localFrom, units)) &&
10836            (inclusivity[1] === ')'
10837                ? this.isBefore(localTo, units)
10838                : !this.isAfter(localTo, units))
10839        );
10840    }
10841
10842    function isSame(input, units) {
10843        var localInput = isMoment(input) ? input : createLocal(input),
10844            inputMs;
10845        if (!(this.isValid() && localInput.isValid())) {
10846            return false;
10847        }
10848        units = normalizeUnits(units) || 'millisecond';
10849        if (units === 'millisecond') {
10850            return this.valueOf() === localInput.valueOf();
10851        } else {
10852            inputMs = localInput.valueOf();
10853            return (
10854                this.clone().startOf(units).valueOf() <= inputMs &&
10855                inputMs <= this.clone().endOf(units).valueOf()
10856            );
10857        }
10858    }
10859
10860    function isSameOrAfter(input, units) {
10861        return this.isSame(input, units) || this.isAfter(input, units);
10862    }
10863
10864    function isSameOrBefore(input, units) {
10865        return this.isSame(input, units) || this.isBefore(input, units);
10866    }
10867
10868    function diff(input, units, asFloat) {
10869        var that, zoneDelta, output;
10870
10871        if (!this.isValid()) {
10872            return NaN;
10873        }
10874
10875        that = cloneWithOffset(input, this);
10876
10877        if (!that.isValid()) {
10878            return NaN;
10879        }
10880
10881        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;
10882
10883        units = normalizeUnits(units);
10884
10885        switch (units) {
10886            case 'year':
10887                output = monthDiff(this, that) / 12;
10888                break;
10889            case 'month':
10890                output = monthDiff(this, that);
10891                break;
10892            case 'quarter':
10893                output = monthDiff(this, that) / 3;
10894                break;
10895            case 'second':
10896                output = (this - that) / 1e3;
10897                break; // 1000
10898            case 'minute':
10899                output = (this - that) / 6e4;
10900                break; // 1000 * 60
10901            case 'hour':
10902                output = (this - that) / 36e5;
10903                break; // 1000 * 60 * 60
10904            case 'day':
10905                output = (this - that - zoneDelta) / 864e5;
10906                break; // 1000 * 60 * 60 * 24, negate dst
10907            case 'week':
10908                output = (this - that - zoneDelta) / 6048e5;
10909                break; // 1000 * 60 * 60 * 24 * 7, negate dst
10910            default:
10911                output = this - that;
10912        }
10913
10914        return asFloat ? output : absFloor(output);
10915    }
10916
10917    function monthDiff(a, b) {
10918        if (a.date() < b.date()) {
10919            // end-of-month calculations work correct when the start month has more
10920            // days than the end month.
10921            return -monthDiff(b, a);
10922        }
10923        // difference in months
10924        var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),
10925            // b is in (anchor - 1 month, anchor + 1 month)
10926            anchor = a.clone().add(wholeMonthDiff, 'months'),
10927            anchor2,
10928            adjust;
10929
10930        if (b - anchor < 0) {
10931            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
10932            // linear across the month
10933            adjust = (b - anchor) / (anchor - anchor2);
10934        } else {
10935            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
10936            // linear across the month
10937            adjust = (b - anchor) / (anchor2 - anchor);
10938        }
10939
10940        //check for negative zero, return zero if negative zero
10941        return -(wholeMonthDiff + adjust) || 0;
10942    }
10943
10944    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
10945    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';
10946
10947    function toString() {
10948        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
10949    }
10950
10951    function toISOString(keepOffset) {
10952        if (!this.isValid()) {
10953            return null;
10954        }
10955        var utc = keepOffset !== true,
10956            m = utc ? this.clone().utc() : this;
10957        if (m.year() < 0 || m.year() > 9999) {
10958            return formatMoment(
10959                m,
10960                utc
10961                    ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'
10962                    : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'
10963            );
10964        }
10965        if (isFunction(Date.prototype.toISOString)) {
10966            // native implementation is ~50x faster, use it when we can
10967            if (utc) {
10968                return this.toDate().toISOString();
10969            } else {
10970                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)
10971                    .toISOString()
10972                    .replace('Z', formatMoment(m, 'Z'));
10973            }
10974        }
10975        return formatMoment(
10976            m,
10977            utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'
10978        );
10979    }
10980
10981    /**
10982     * Return a human readable representation of a moment that can
10983     * also be evaluated to get a new moment which is the same
10984     *
10985     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects
10986     */
10987    function inspect() {
10988        if (!this.isValid()) {
10989            return 'moment.invalid(/* ' + this._i + ' */)';
10990        }
10991        var func = 'moment',
10992            zone = '',
10993            prefix,
10994            year,
10995            datetime,
10996            suffix;
10997        if (!this.isLocal()) {
10998            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';
10999            zone = 'Z';
11000        }
11001        prefix = '[' + func + '("]';
11002        year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';
11003        datetime = '-MM-DD[T]HH:mm:ss.SSS';
11004        suffix = zone + '[")]';
11005
11006        return this.format(prefix + year + datetime + suffix);
11007    }
11008
11009    function format(inputString) {
11010        if (!inputString) {
11011            inputString = this.isUtc()
11012                ? hooks.defaultFormatUtc
11013                : hooks.defaultFormat;
11014        }
11015        var output = formatMoment(this, inputString);
11016        return this.localeData().postformat(output);
11017    }
11018
11019    function from(time, withoutSuffix) {
11020        if (
11021            this.isValid() &&
11022            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())
11023        ) {
11024            return createDuration({ to: this, from: time })
11025                .locale(this.locale())
11026                .humanize(!withoutSuffix);
11027        } else {
11028            return this.localeData().invalidDate();
11029        }
11030    }
11031
11032    function fromNow(withoutSuffix) {
11033        return this.from(createLocal(), withoutSuffix);
11034    }
11035
11036    function to(time, withoutSuffix) {
11037        if (
11038            this.isValid() &&
11039            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())
11040        ) {
11041            return createDuration({ from: this, to: time })
11042                .locale(this.locale())
11043                .humanize(!withoutSuffix);
11044        } else {
11045            return this.localeData().invalidDate();
11046        }
11047    }
11048
11049    function toNow(withoutSuffix) {
11050        return this.to(createLocal(), withoutSuffix);
11051    }
11052
11053    // If passed a locale key, it will set the locale for this
11054    // instance.  Otherwise, it will return the locale configuration
11055    // variables for this instance.
11056    function locale(key) {
11057        var newLocaleData;
11058
11059        if (key === undefined) {
11060            return this._locale._abbr;
11061        } else {
11062            newLocaleData = getLocale(key);
11063            if (newLocaleData != null) {
11064                this._locale = newLocaleData;
11065            }
11066            return this;
11067        }
11068    }
11069
11070    var lang = deprecate(
11071        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
11072        function (key) {
11073            if (key === undefined) {
11074                return this.localeData();
11075            } else {
11076                return this.locale(key);
11077            }
11078        }
11079    );
11080
11081    function localeData() {
11082        return this._locale;
11083    }
11084
11085    var MS_PER_SECOND = 1000,
11086        MS_PER_MINUTE = 60 * MS_PER_SECOND,
11087        MS_PER_HOUR = 60 * MS_PER_MINUTE,
11088        MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;
11089
11090    // actual modulo - handles negative numbers (for dates before 1970):
11091    function mod$1(dividend, divisor) {
11092        return ((dividend % divisor) + divisor) % divisor;
11093    }
11094
11095    function localStartOfDate(y, m, d) {
11096        // the date constructor remaps years 0-99 to 1900-1999
11097        if (y < 100 && y >= 0) {
11098            // preserve leap years using a full 400 year cycle, then reset
11099            return new Date(y + 400, m, d) - MS_PER_400_YEARS;
11100        } else {
11101            return new Date(y, m, d).valueOf();
11102        }
11103    }
11104
11105    function utcStartOfDate(y, m, d) {
11106        // Date.UTC remaps years 0-99 to 1900-1999
11107        if (y < 100 && y >= 0) {
11108            // preserve leap years using a full 400 year cycle, then reset
11109            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;
11110        } else {
11111            return Date.UTC(y, m, d);
11112        }
11113    }
11114
11115    function startOf(units) {
11116        var time, startOfDate;
11117        units = normalizeUnits(units);
11118        if (units === undefined || units === 'millisecond' || !this.isValid()) {
11119            return this;
11120        }
11121
11122        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
11123
11124        switch (units) {
11125            case 'year':
11126                time = startOfDate(this.year(), 0, 1);
11127                break;
11128            case 'quarter':
11129                time = startOfDate(
11130                    this.year(),
11131                    this.month() - (this.month() % 3),
11132                    1
11133                );
11134                break;
11135            case 'month':
11136                time = startOfDate(this.year(), this.month(), 1);
11137                break;
11138            case 'week':
11139                time = startOfDate(
11140                    this.year(),
11141                    this.month(),
11142                    this.date() - this.weekday()
11143                );
11144                break;
11145            case 'isoWeek':
11146                time = startOfDate(
11147                    this.year(),
11148                    this.month(),
11149                    this.date() - (this.isoWeekday() - 1)
11150                );
11151                break;
11152            case 'day':
11153            case 'date':
11154                time = startOfDate(this.year(), this.month(), this.date());
11155                break;
11156            case 'hour':
11157                time = this._d.valueOf();
11158                time -= mod$1(
11159                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
11160                    MS_PER_HOUR
11161                );
11162                break;
11163            case 'minute':
11164                time = this._d.valueOf();
11165                time -= mod$1(time, MS_PER_MINUTE);
11166                break;
11167            case 'second':
11168                time = this._d.valueOf();
11169                time -= mod$1(time, MS_PER_SECOND);
11170                break;
11171        }
11172
11173        this._d.setTime(time);
11174        hooks.updateOffset(this, true);
11175        return this;
11176    }
11177
11178    function endOf(units) {
11179        var time, startOfDate;
11180        units = normalizeUnits(units);
11181        if (units === undefined || units === 'millisecond' || !this.isValid()) {
11182            return this;
11183        }
11184
11185        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
11186
11187        switch (units) {
11188            case 'year':
11189                time = startOfDate(this.year() + 1, 0, 1) - 1;
11190                break;
11191            case 'quarter':
11192                time =
11193                    startOfDate(
11194                        this.year(),
11195                        this.month() - (this.month() % 3) + 3,
11196                        1
11197                    ) - 1;
11198                break;
11199            case 'month':
11200                time = startOfDate(this.year(), this.month() + 1, 1) - 1;
11201                break;
11202            case 'week':
11203                time =
11204                    startOfDate(
11205                        this.year(),
11206                        this.month(),
11207                        this.date() - this.weekday() + 7
11208                    ) - 1;
11209                break;
11210            case 'isoWeek':
11211                time =
11212                    startOfDate(
11213                        this.year(),
11214                        this.month(),
11215                        this.date() - (this.isoWeekday() - 1) + 7
11216                    ) - 1;
11217                break;
11218            case 'day':
11219            case 'date':
11220                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;
11221                break;
11222            case 'hour':
11223                time = this._d.valueOf();
11224                time +=
11225                    MS_PER_HOUR -
11226                    mod$1(
11227                        time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
11228                        MS_PER_HOUR
11229                    ) -
11230                    1;
11231                break;
11232            case 'minute':
11233                time = this._d.valueOf();
11234                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;
11235                break;
11236            case 'second':
11237                time = this._d.valueOf();
11238                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;
11239                break;
11240        }
11241
11242        this._d.setTime(time);
11243        hooks.updateOffset(this, true);
11244        return this;
11245    }
11246
11247    function valueOf() {
11248        return this._d.valueOf() - (this._offset || 0) * 60000;
11249    }
11250
11251    function unix() {
11252        return Math.floor(this.valueOf() / 1000);
11253    }
11254
11255    function toDate() {
11256        return new Date(this.valueOf());
11257    }
11258
11259    function toArray() {
11260        var m = this;
11261        return [
11262            m.year(),
11263            m.month(),
11264            m.date(),
11265            m.hour(),
11266            m.minute(),
11267            m.second(),
11268            m.millisecond(),
11269        ];
11270    }
11271
11272    function toObject() {
11273        var m = this;
11274        return {
11275            years: m.year(),
11276            months: m.month(),
11277            date: m.date(),
11278            hours: m.hours(),
11279            minutes: m.minutes(),
11280            seconds: m.seconds(),
11281            milliseconds: m.milliseconds(),
11282        };
11283    }
11284
11285    function toJSON() {
11286        // new Date(NaN).toJSON() === null
11287        return this.isValid() ? this.toISOString() : null;
11288    }
11289
11290    function isValid$2() {
11291        return isValid(this);
11292    }
11293
11294    function parsingFlags() {
11295        return extend({}, getParsingFlags(this));
11296    }
11297
vendor: 9,164 bytes, lines 11298-11597
11298    function invalidAt() {
11299        return getParsingFlags(this).overflow;
11300    }
11301
11302    function creationData() {
11303        return {
11304            input: this._i,
11305            format: this._f,
11306            locale: this._locale,
11307            isUTC: this._isUTC,
11308            strict: this._strict,
11309        };
11310    }
11311
11312    addFormatToken('N', 0, 0, 'eraAbbr');
11313    addFormatToken('NN', 0, 0, 'eraAbbr');
11314    addFormatToken('NNN', 0, 0, 'eraAbbr');
11315    addFormatToken('NNNN', 0, 0, 'eraName');
11316    addFormatToken('NNNNN', 0, 0, 'eraNarrow');
11317
11318    addFormatToken('y', ['y', 1], 'yo', 'eraYear');
11319    addFormatToken('y', ['yy', 2], 0, 'eraYear');
11320    addFormatToken('y', ['yyy', 3], 0, 'eraYear');
11321    addFormatToken('y', ['yyyy', 4], 0, 'eraYear');
11322
11323    addRegexToken('N', matchEraAbbr);
11324    addRegexToken('NN', matchEraAbbr);
11325    addRegexToken('NNN', matchEraAbbr);
11326    addRegexToken('NNNN', matchEraName);
11327    addRegexToken('NNNNN', matchEraNarrow);
11328
11329    addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (
11330        input,
11331        array,
11332        config,
11333        token
11334    ) {
11335        var era = config._locale.erasParse(input, token, config._strict);
11336        if (era) {
11337            getParsingFlags(config).era = era;
11338        } else {
11339            getParsingFlags(config).invalidEra = input;
11340        }
11341    });
11342
11343    addRegexToken('y', matchUnsigned);
11344    addRegexToken('yy', matchUnsigned);
11345    addRegexToken('yyy', matchUnsigned);
11346    addRegexToken('yyyy', matchUnsigned);
11347    addRegexToken('yo', matchEraYearOrdinal);
11348
11349    addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);
11350    addParseToken(['yo'], function (input, array, config, token) {
11351        var match;
11352        if (config._locale._eraYearOrdinalRegex) {
11353            match = input.match(config._locale._eraYearOrdinalRegex);
11354        }
11355
11356        if (config._locale.eraYearOrdinalParse) {
11357            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);
11358        } else {
11359            array[YEAR] = parseInt(input, 10);
11360        }
11361    });
11362
11363    function localeEras(m, format) {
11364        var i,
11365            l,
11366            date,
11367            eras = this._eras || getLocale('en')._eras;
11368        for (i = 0, l = eras.length; i < l; ++i) {
11369            switch (typeof eras[i].since) {
11370                case 'string':
11371                    // truncate time
11372                    date = hooks(eras[i].since).startOf('day');
11373                    eras[i].since = date.valueOf();
11374                    break;
11375            }
11376
11377            switch (typeof eras[i].until) {
11378                case 'undefined':
11379                    eras[i].until = +Infinity;
11380                    break;
11381                case 'string':
11382                    // truncate time
11383                    date = hooks(eras[i].until).startOf('day').valueOf();
11384                    eras[i].until = date.valueOf();
11385                    break;
11386            }
11387        }
11388        return eras;
11389    }
11390
11391    function localeErasParse(eraName, format, strict) {
11392        var i,
11393            l,
11394            eras = this.eras(),
11395            name,
11396            abbr,
11397            narrow;
11398        eraName = eraName.toUpperCase();
11399
11400        for (i = 0, l = eras.length; i < l; ++i) {
11401            name = eras[i].name.toUpperCase();
11402            abbr = eras[i].abbr.toUpperCase();
11403            narrow = eras[i].narrow.toUpperCase();
11404
11405            if (strict) {
11406                switch (format) {
11407                    case 'N':
11408                    case 'NN':
11409                    case 'NNN':
11410                        if (abbr === eraName) {
11411                            return eras[i];
11412                        }
11413                        break;
11414
11415                    case 'NNNN':
11416                        if (name === eraName) {
11417                            return eras[i];
11418                        }
11419                        break;
11420
11421                    case 'NNNNN':
11422                        if (narrow === eraName) {
11423                            return eras[i];
11424                        }
11425                        break;
11426                }
11427            } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {
11428                return eras[i];
11429            }
11430        }
11431    }
11432
11433    function localeErasConvertYear(era, year) {
11434        var dir = era.since <= era.until ? +1 : -1;
11435        if (year === undefined) {
11436            return hooks(era.since).year();
11437        } else {
11438            return hooks(era.since).year() + (year - era.offset) * dir;
11439        }
11440    }
11441
11442    function getEraName() {
11443        var i,
11444            l,
11445            val,
11446            eras = this.localeData().eras();
11447        for (i = 0, l = eras.length; i < l; ++i) {
11448            // truncate time
11449            val = this.clone().startOf('day').valueOf();
11450
11451            if (eras[i].since <= val && val <= eras[i].until) {
11452                return eras[i].name;
11453            }
11454            if (eras[i].until <= val && val <= eras[i].since) {
11455                return eras[i].name;
11456            }
11457        }
11458
11459        return '';
11460    }
11461
11462    function getEraNarrow() {
11463        var i,
11464            l,
11465            val,
11466            eras = this.localeData().eras();
11467        for (i = 0, l = eras.length; i < l; ++i) {
11468            // truncate time
11469            val = this.clone().startOf('day').valueOf();
11470
11471            if (eras[i].since <= val && val <= eras[i].until) {
11472                return eras[i].narrow;
11473            }
11474            if (eras[i].until <= val && val <= eras[i].since) {
11475                return eras[i].narrow;
11476            }
11477        }
11478
11479        return '';
11480    }
11481
11482    function getEraAbbr() {
11483        var i,
11484            l,
11485            val,
11486            eras = this.localeData().eras();
11487        for (i = 0, l = eras.length; i < l; ++i) {
11488            // truncate time
11489            val = this.clone().startOf('day').valueOf();
11490
11491            if (eras[i].since <= val && val <= eras[i].until) {
11492                return eras[i].abbr;
11493            }
11494            if (eras[i].until <= val && val <= eras[i].since) {
11495                return eras[i].abbr;
11496            }
11497        }
11498
11499        return '';
11500    }
11501
11502    function getEraYear() {
11503        var i,
11504            l,
11505            dir,
11506            val,
11507            eras = this.localeData().eras();
11508        for (i = 0, l = eras.length; i < l; ++i) {
11509            dir = eras[i].since <= eras[i].until ? +1 : -1;
11510
11511            // truncate time
11512            val = this.clone().startOf('day').valueOf();
11513
11514            if (
11515                (eras[i].since <= val && val <= eras[i].until) ||
11516                (eras[i].until <= val && val <= eras[i].since)
11517            ) {
11518                return (
11519                    (this.year() - hooks(eras[i].since).year()) * dir +
11520                    eras[i].offset
11521                );
11522            }
11523        }
11524
11525        return this.year();
11526    }
11527
11528    function erasNameRegex(isStrict) {
11529        if (!hasOwnProp(this, '_erasNameRegex')) {
11530            computeErasParse.call(this);
11531        }
11532        return isStrict ? this._erasNameRegex : this._erasRegex;
11533    }
11534
11535    function erasAbbrRegex(isStrict) {
11536        if (!hasOwnProp(this, '_erasAbbrRegex')) {
11537            computeErasParse.call(this);
11538        }
11539        return isStrict ? this._erasAbbrRegex : this._erasRegex;
11540    }
11541
11542    function erasNarrowRegex(isStrict) {
11543        if (!hasOwnProp(this, '_erasNarrowRegex')) {
11544            computeErasParse.call(this);
11545        }
11546        return isStrict ? this._erasNarrowRegex : this._erasRegex;
11547    }
11548
11549    function matchEraAbbr(isStrict, locale) {
11550        return locale.erasAbbrRegex(isStrict);
11551    }
11552
11553    function matchEraName(isStrict, locale) {
11554        return locale.erasNameRegex(isStrict);
11555    }
11556
11557    function matchEraNarrow(isStrict, locale) {
11558        return locale.erasNarrowRegex(isStrict);
11559    }
11560
11561    function matchEraYearOrdinal(isStrict, locale) {
11562        return locale._eraYearOrdinalRegex || matchUnsigned;
11563    }
11564
11565    function computeErasParse() {
11566        var abbrPieces = [],
11567            namePieces = [],
11568            narrowPieces = [],
11569            mixedPieces = [],
11570            i,
11571            l,
11572            eras = this.eras();
11573
11574        for (i = 0, l = eras.length; i < l; ++i) {
11575            namePieces.push(regexEscape(eras[i].name));
11576            abbrPieces.push(regexEscape(eras[i].abbr));
11577            narrowPieces.push(regexEscape(eras[i].narrow));
11578
11579            mixedPieces.push(regexEscape(eras[i].name));
11580            mixedPieces.push(regexEscape(eras[i].abbr));
11581            mixedPieces.push(regexEscape(eras[i].narrow));
11582        }
11583
11584        this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
11585        this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');
11586        this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');
11587        this._erasNarrowRegex = new RegExp(
11588            '^(' + narrowPieces.join('|') + ')',
11589            'i'
11590        );
11591    }
11592
11593    // FORMATTING
11594
11595    addFormatToken(0, ['gg', 2], 0, function () {
11596        return this.weekYear() % 100;
11597    });
vendor: 9,509 bytes, lines 11598-11963
11598
11599    addFormatToken(0, ['GG', 2], 0, function () {
11600        return this.isoWeekYear() % 100;
11601    });
11602
11603    function addWeekYearFormatToken(token, getter) {
11604        addFormatToken(0, [token, token.length], 0, getter);
11605    }
11606
11607    addWeekYearFormatToken('gggg', 'weekYear');
11608    addWeekYearFormatToken('ggggg', 'weekYear');
11609    addWeekYearFormatToken('GGGG', 'isoWeekYear');
11610    addWeekYearFormatToken('GGGGG', 'isoWeekYear');
11611
11612    // ALIASES
11613
11614    addUnitAlias('weekYear', 'gg');
11615    addUnitAlias('isoWeekYear', 'GG');
11616
11617    // PRIORITY
11618
11619    addUnitPriority('weekYear', 1);
11620    addUnitPriority('isoWeekYear', 1);
11621
11622    // PARSING
11623
11624    addRegexToken('G', matchSigned);
11625    addRegexToken('g', matchSigned);
11626    addRegexToken('GG', match1to2, match2);
11627    addRegexToken('gg', match1to2, match2);
11628    addRegexToken('GGGG', match1to4, match4);
11629    addRegexToken('gggg', match1to4, match4);
11630    addRegexToken('GGGGG', match1to6, match6);
11631    addRegexToken('ggggg', match1to6, match6);
11632
11633    addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (
11634        input,
11635        week,
11636        config,
11637        token
11638    ) {
11639        week[token.substr(0, 2)] = toInt(input);
11640    });
11641
11642    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
11643        week[token] = hooks.parseTwoDigitYear(input);
11644    });
11645
11646    // MOMENTS
11647
11648    function getSetWeekYear(input) {
11649        return getSetWeekYearHelper.call(
11650            this,
11651            input,
11652            this.week(),
11653            this.weekday(),
11654            this.localeData()._week.dow,
11655            this.localeData()._week.doy
11656        );
11657    }
11658
11659    function getSetISOWeekYear(input) {
11660        return getSetWeekYearHelper.call(
11661            this,
11662            input,
11663            this.isoWeek(),
11664            this.isoWeekday(),
11665            1,
11666            4
11667        );
11668    }
11669
11670    function getISOWeeksInYear() {
11671        return weeksInYear(this.year(), 1, 4);
11672    }
11673
11674    function getISOWeeksInISOWeekYear() {
11675        return weeksInYear(this.isoWeekYear(), 1, 4);
11676    }
11677
11678    function getWeeksInYear() {
11679        var weekInfo = this.localeData()._week;
11680        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
11681    }
11682
11683    function getWeeksInWeekYear() {
11684        var weekInfo = this.localeData()._week;
11685        return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);
11686    }
11687
11688    function getSetWeekYearHelper(input, week, weekday, dow, doy) {
11689        var weeksTarget;
11690        if (input == null) {
11691            return weekOfYear(this, dow, doy).year;
11692        } else {
11693            weeksTarget = weeksInYear(input, dow, doy);
11694            if (week > weeksTarget) {
11695                week = weeksTarget;
11696            }
11697            return setWeekAll.call(this, input, week, weekday, dow, doy);
11698        }
11699    }
11700
11701    function setWeekAll(weekYear, week, weekday, dow, doy) {
11702        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),
11703            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
11704
11705        this.year(date.getUTCFullYear());
11706        this.month(date.getUTCMonth());
11707        this.date(date.getUTCDate());
11708        return this;
11709    }
11710
11711    // FORMATTING
11712
11713    addFormatToken('Q', 0, 'Qo', 'quarter');
11714
11715    // ALIASES
11716
11717    addUnitAlias('quarter', 'Q');
11718
11719    // PRIORITY
11720
11721    addUnitPriority('quarter', 7);
11722
11723    // PARSING
11724
11725    addRegexToken('Q', match1);
11726    addParseToken('Q', function (input, array) {
11727        array[MONTH] = (toInt(input) - 1) * 3;
11728    });
11729
11730    // MOMENTS
11731
11732    function getSetQuarter(input) {
11733        return input == null
11734            ? Math.ceil((this.month() + 1) / 3)
11735            : this.month((input - 1) * 3 + (this.month() % 3));
11736    }
11737
11738    // FORMATTING
11739
11740    addFormatToken('D', ['DD', 2], 'Do', 'date');
11741
11742    // ALIASES
11743
11744    addUnitAlias('date', 'D');
11745
11746    // PRIORITY
11747    addUnitPriority('date', 9);
11748
11749    // PARSING
11750
11751    addRegexToken('D', match1to2);
11752    addRegexToken('DD', match1to2, match2);
11753    addRegexToken('Do', function (isStrict, locale) {
11754        // TODO: Remove "ordinalParse" fallback in next major release.
11755        return isStrict
11756            ? locale._dayOfMonthOrdinalParse || locale._ordinalParse
11757            : locale._dayOfMonthOrdinalParseLenient;
11758    });
11759
11760    addParseToken(['D', 'DD'], DATE);
11761    addParseToken('Do', function (input, array) {
11762        array[DATE] = toInt(input.match(match1to2)[0]);
11763    });
11764
11765    // MOMENTS
11766
11767    var getSetDayOfMonth = makeGetSet('Date', true);
11768
11769    // FORMATTING
11770
11771    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');
11772
11773    // ALIASES
11774
11775    addUnitAlias('dayOfYear', 'DDD');
11776
11777    // PRIORITY
11778    addUnitPriority('dayOfYear', 4);
11779
11780    // PARSING
11781
11782    addRegexToken('DDD', match1to3);
11783    addRegexToken('DDDD', match3);
11784    addParseToken(['DDD', 'DDDD'], function (input, array, config) {
11785        config._dayOfYear = toInt(input);
11786    });
11787
11788    // HELPERS
11789
11790    // MOMENTS
11791
11792    function getSetDayOfYear(input) {
11793        var dayOfYear =
11794            Math.round(
11795                (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5
11796            ) + 1;
11797        return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');
11798    }
11799
11800    // FORMATTING
11801
11802    addFormatToken('m', ['mm', 2], 0, 'minute');
11803
11804    // ALIASES
11805
11806    addUnitAlias('minute', 'm');
11807
11808    // PRIORITY
11809
11810    addUnitPriority('minute', 14);
11811
11812    // PARSING
11813
11814    addRegexToken('m', match1to2);
11815    addRegexToken('mm', match1to2, match2);
11816    addParseToken(['m', 'mm'], MINUTE);
11817
11818    // MOMENTS
11819
11820    var getSetMinute = makeGetSet('Minutes', false);
11821
11822    // FORMATTING
11823
11824    addFormatToken('s', ['ss', 2], 0, 'second');
11825
11826    // ALIASES
11827
11828    addUnitAlias('second', 's');
11829
11830    // PRIORITY
11831
11832    addUnitPriority('second', 15);
11833
11834    // PARSING
11835
11836    addRegexToken('s', match1to2);
11837    addRegexToken('ss', match1to2, match2);
11838    addParseToken(['s', 'ss'], SECOND);
11839
11840    // MOMENTS
11841
11842    var getSetSecond = makeGetSet('Seconds', false);
11843
11844    // FORMATTING
11845
11846    addFormatToken('S', 0, 0, function () {
11847        return ~~(this.millisecond() / 100);
11848    });
11849
11850    addFormatToken(0, ['SS', 2], 0, function () {
11851        return ~~(this.millisecond() / 10);
11852    });
11853
11854    addFormatToken(0, ['SSS', 3], 0, 'millisecond');
11855    addFormatToken(0, ['SSSS', 4], 0, function () {
11856        return this.millisecond() * 10;
11857    });
11858    addFormatToken(0, ['SSSSS', 5], 0, function () {
11859        return this.millisecond() * 100;
11860    });
11861    addFormatToken(0, ['SSSSSS', 6], 0, function () {
11862        return this.millisecond() * 1000;
11863    });
11864    addFormatToken(0, ['SSSSSSS', 7], 0, function () {
11865        return this.millisecond() * 10000;
11866    });
11867    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {
11868        return this.millisecond() * 100000;
11869    });
11870    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {
11871        return this.millisecond() * 1000000;
11872    });
11873
11874    // ALIASES
11875
11876    addUnitAlias('millisecond', 'ms');
11877
11878    // PRIORITY
11879
11880    addUnitPriority('millisecond', 16);
11881
11882    // PARSING
11883
11884    addRegexToken('S', match1to3, match1);
11885    addRegexToken('SS', match1to3, match2);
11886    addRegexToken('SSS', match1to3, match3);
11887
11888    var token, getSetMillisecond;
11889    for (token = 'SSSS'; token.length <= 9; token += 'S') {
11890        addRegexToken(token, matchUnsigned);
11891    }
11892
11893    function parseMs(input, array) {
11894        array[MILLISECOND] = toInt(('0.' + input) * 1000);
11895    }
11896
11897    for (token = 'S'; token.length <= 9; token += 'S') {
11898        addParseToken(token, parseMs);
11899    }
11900
11901    getSetMillisecond = makeGetSet('Milliseconds', false);
11902
11903    // FORMATTING
11904
11905    addFormatToken('z', 0, 0, 'zoneAbbr');
11906    addFormatToken('zz', 0, 0, 'zoneName');
11907
11908    // MOMENTS
11909
11910    function getZoneAbbr() {
11911        return this._isUTC ? 'UTC' : '';
11912    }
11913
11914    function getZoneName() {
11915        return this._isUTC ? 'Coordinated Universal Time' : '';
11916    }
11917
11918    var proto = Moment.prototype;
11919
11920    proto.add = add;
11921    proto.calendar = calendar$1;
11922    proto.clone = clone;
11923    proto.diff = diff;
11924    proto.endOf = endOf;
11925    proto.format = format;
11926    proto.from = from;
11927    proto.fromNow = fromNow;
11928    proto.to = to;
11929    proto.toNow = toNow;
11930    proto.get = stringGet;
11931    proto.invalidAt = invalidAt;
11932    proto.isAfter = isAfter;
11933    proto.isBefore = isBefore;
11934    proto.isBetween = isBetween;
11935    proto.isSame = isSame;
11936    proto.isSameOrAfter = isSameOrAfter;
11937    proto.isSameOrBefore = isSameOrBefore;
11938    proto.isValid = isValid$2;
11939    proto.lang = lang;
11940    proto.locale = locale;
11941    proto.localeData = localeData;
11942    proto.max = prototypeMax;
11943    proto.min = prototypeMin;
11944    proto.parsingFlags = parsingFlags;
11945    proto.set = stringSet;
11946    proto.startOf = startOf;
11947    proto.subtract = subtract;
11948    proto.toArray = toArray;
11949    proto.toObject = toObject;
11950    proto.toDate = toDate;
11951    proto.toISOString = toISOString;
11952    proto.inspect = inspect;
11953    if (typeof Symbol !== 'undefined' && Symbol.for != null) {
11954        proto[Symbol.for('nodejs.util.inspect.custom')] = function () {
11955            return 'Moment<' + this.format() + '>';
11956        };
11957    }
11958    proto.toJSON = toJSON;
11959    proto.toString = toString;
11960    proto.unix = unix;
11961    proto.valueOf = valueOf;
11962    proto.creationData = creationData;
11963    proto.eraName = getEraName;
11964    proto.eraNarrow = getEraNarrow;
11965    proto.eraAbbr = getEraAbbr;
11966    proto.eraYear = getEraYear;
11967    proto.year = getSetYear;
11968    proto.isLeapYear = getIsLeapYear;
11969    proto.weekYear = getSetWeekYear;
11970    proto.isoWeekYear = getSetISOWeekYear;
11971    proto.quarter = proto.quarters = getSetQuarter;
11972    proto.month = getSetMonth;
11973    proto.daysInMonth = getDaysInMonth;
11974    proto.week = proto.weeks = getSetWeek;
11975    proto.isoWeek = proto.isoWeeks = getSetISOWeek;
11976    proto.weeksInYear = getWeeksInYear;
11977    proto.weeksInWeekYear = getWeeksInWeekYear;
11978    proto.isoWeeksInYear = getISOWeeksInYear;
11979    proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;
11980    proto.date = getSetDayOfMonth;
11981    proto.day = proto.days = getSetDayOfWeek;
11982    proto.weekday = getSetLocaleDayOfWeek;
11983    proto.isoWeekday = getSetISODayOfWeek;
11984    proto.dayOfYear = getSetDayOfYear;
11985    proto.hour = proto.hours = getSetHour;
11986    proto.minute = proto.minutes = getSetMinute;
11987    proto.second = proto.seconds = getSetSecond;
11988    proto.millisecond = proto.milliseconds = getSetMillisecond;
11989    proto.utcOffset = getSetOffset;
11990    proto.utc = setOffsetToUTC;
11991    proto.local = setOffsetToLocal;
11992    proto.parseZone = setOffsetToParsedOffset;
11993    proto.hasAlignedHourOffset = hasAlignedHourOffset;
11994    proto.isDST = isDaylightSavingTime;
11995    proto.isLocal = isLocal;
11996    proto.isUtcOffset = isUtcOffset;
11997    proto.isUtc = isUtc;
11998    proto.isUTC = isUtc;
11999    proto.zoneAbbr = getZoneAbbr;
12000    proto.zoneName = getZoneName;
12001    proto.dates = deprecate(
12002        'dates accessor is deprecated. Use date instead.',
12003        getSetDayOfMonth
12004    );
12005    proto.months = deprecate(
12006        'months accessor is deprecated. Use month instead',
12007        getSetMonth
12008    );
12009    proto.years = deprecate(
12010        'years accessor is deprecated. Use year instead',
12011        getSetYear
12012    );
12013    proto.zone = deprecate(
12014        'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',
12015        getSetZone
12016    );
12017    proto.isDSTShifted = deprecate(
12018        'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',
12019        isDaylightSavingTimeShifted
12020    );
12021
12022    function createUnix(input) {
12023        return createLocal(input * 1000);
12024    }
12025
12026    function createInZone() {
12027        return createLocal.apply(null, arguments).parseZone();
12028    }
12029
12030    function preParsePostFormat(string) {
12031        return string;
12032    }
12033
12034    var proto$1 = Locale.prototype;
12035
12036    proto$1.calendar = calendar;
12037    proto$1.longDateFormat = longDateFormat;
12038    proto$1.invalidDate = invalidDate;
12039    proto$1.ordinal = ordinal;
12040    proto$1.preparse = preParsePostFormat;
12041    proto$1.postformat = preParsePostFormat;
12042    proto$1.relativeTime = relativeTime;
12043    proto$1.pastFuture = pastFuture;
12044    proto$1.set = set;
12045    proto$1.eras = localeEras;
12046    proto$1.erasParse = localeErasParse;
12047    proto$1.erasConvertYear = localeErasConvertYear;
12048    proto$1.erasAbbrRegex = erasAbbrRegex;
12049    proto$1.erasNameRegex = erasNameRegex;
12050    proto$1.erasNarrowRegex = erasNarrowRegex;
12051
12052    proto$1.months = localeMonths;
12053    proto$1.monthsShort = localeMonthsShort;
12054    proto$1.monthsParse = localeMonthsParse;
12055    proto$1.monthsRegex = monthsRegex;
12056    proto$1.monthsShortRegex = monthsShortRegex;
12057    proto$1.week = localeWeek;
12058    proto$1.firstDayOfYear = localeFirstDayOfYear;
12059    proto$1.firstDayOfWeek = localeFirstDayOfWeek;
12060
12061    proto$1.weekdays = localeWeekdays;
12062    proto$1.weekdaysMin = localeWeekdaysMin;
12063    proto$1.weekdaysShort = localeWeekdaysShort;
12064    proto$1.weekdaysParse = localeWeekdaysParse;
12065
12066    proto$1.weekdaysRegex = weekdaysRegex;
12067    proto$1.weekdaysShortRegex = weekdaysShortRegex;
12068    proto$1.weekdaysMinRegex = weekdaysMinRegex;
12069
12070    proto$1.isPM = localeIsPM;
12071    proto$1.meridiem = localeMeridiem;
12072
12073    function get$1(format, index, field, setter) {
12074        var locale = getLocale(),
12075            utc = createUTC().set(setter, index);
vendor: 17,842 bytes, lines 12076-12652
12076        return locale[field](utc, format);
12077    }
12078
12079    function listMonthsImpl(format, index, field) {
12080        if (isNumber(format)) {
12081            index = format;
12082            format = undefined;
12083        }
12084
12085        format = format || '';
12086
12087        if (index != null) {
12088            return get$1(format, index, field, 'month');
12089        }
12090
12091        var i,
12092            out = [];
12093        for (i = 0; i < 12; i++) {
12094            out[i] = get$1(format, i, field, 'month');
12095        }
12096        return out;
12097    }
12098
12099    // ()
12100    // (5)
12101    // (fmt, 5)
12102    // (fmt)
12103    // (true)
12104    // (true, 5)
12105    // (true, fmt, 5)
12106    // (true, fmt)
12107    function listWeekdaysImpl(localeSorted, format, index, field) {
12108        if (typeof localeSorted === 'boolean') {
12109            if (isNumber(format)) {
12110                index = format;
12111                format = undefined;
12112            }
12113
12114            format = format || '';
12115        } else {
12116            format = localeSorted;
12117            index = format;
12118            localeSorted = false;
12119
12120            if (isNumber(format)) {
12121                index = format;
12122                format = undefined;
12123            }
12124
12125            format = format || '';
12126        }
12127
12128        var locale = getLocale(),
12129            shift = localeSorted ? locale._week.dow : 0,
12130            i,
12131            out = [];
12132
12133        if (index != null) {
12134            return get$1(format, (index + shift) % 7, field, 'day');
12135        }
12136
12137        for (i = 0; i < 7; i++) {
12138            out[i] = get$1(format, (i + shift) % 7, field, 'day');
12139        }
12140        return out;
12141    }
12142
12143    function listMonths(format, index) {
12144        return listMonthsImpl(format, index, 'months');
12145    }
12146
12147    function listMonthsShort(format, index) {
12148        return listMonthsImpl(format, index, 'monthsShort');
12149    }
12150
12151    function listWeekdays(localeSorted, format, index) {
12152        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');
12153    }
12154
12155    function listWeekdaysShort(localeSorted, format, index) {
12156        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');
12157    }
12158
12159    function listWeekdaysMin(localeSorted, format, index) {
12160        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');
12161    }
12162
12163    getSetGlobalLocale('en', {
12164        eras: [
12165            {
12166                since: '0001-01-01',
12167                until: +Infinity,
12168                offset: 1,
12169                name: 'Anno Domini',
12170                narrow: 'AD',
12171                abbr: 'AD',
12172            },
12173            {
12174                since: '0000-12-31',
12175                until: -Infinity,
12176                offset: 1,
12177                name: 'Before Christ',
12178                narrow: 'BC',
12179                abbr: 'BC',
12180            },
12181        ],
12182        dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
12183        ordinal: function (number) {
12184            var b = number % 10,
12185                output =
12186                    toInt((number % 100) / 10) === 1
12187                        ? 'th'
12188                        : b === 1
12189                        ? 'st'
12190                        : b === 2
12191                        ? 'nd'
12192                        : b === 3
12193                        ? 'rd'
12194                        : 'th';
12195            return number + output;
12196        },
12197    });
12198
12199    // Side effect imports
12200
12201    hooks.lang = deprecate(
12202        'moment.lang is deprecated. Use moment.locale instead.',
12203        getSetGlobalLocale
12204    );
12205    hooks.langData = deprecate(
12206        'moment.langData is deprecated. Use moment.localeData instead.',
12207        getLocale
12208    );
12209
12210    var mathAbs = Math.abs;
12211
12212    function abs() {
12213        var data = this._data;
12214
12215        this._milliseconds = mathAbs(this._milliseconds);
12216        this._days = mathAbs(this._days);
12217        this._months = mathAbs(this._months);
12218
12219        data.milliseconds = mathAbs(data.milliseconds);
12220        data.seconds = mathAbs(data.seconds);
12221        data.minutes = mathAbs(data.minutes);
12222        data.hours = mathAbs(data.hours);
12223        data.months = mathAbs(data.months);
12224        data.years = mathAbs(data.years);
12225
12226        return this;
12227    }
12228
12229    function addSubtract$1(duration, input, value, direction) {
12230        var other = createDuration(input, value);
12231
12232        duration._milliseconds += direction * other._milliseconds;
12233        duration._days += direction * other._days;
12234        duration._months += direction * other._months;
12235
12236        return duration._bubble();
12237    }
12238
12239    // supports only 2.0-style add(1, 's') or add(duration)
12240    function add$1(input, value) {
12241        return addSubtract$1(this, input, value, 1);
12242    }
12243
12244    // supports only 2.0-style subtract(1, 's') or subtract(duration)
12245    function subtract$1(input, value) {
12246        return addSubtract$1(this, input, value, -1);
12247    }
12248
12249    function absCeil(number) {
12250        if (number < 0) {
12251            return Math.floor(number);
12252        } else {
12253            return Math.ceil(number);
12254        }
12255    }
12256
12257    function bubble() {
12258        var milliseconds = this._milliseconds,
12259            days = this._days,
12260            months = this._months,
12261            data = this._data,
12262            seconds,
12263            minutes,
12264            hours,
12265            years,
12266            monthsFromDays;
12267
12268        // if we have a mix of positive and negative values, bubble down first
12269        // check: https://github.com/moment/moment/issues/2166
12270        if (
12271            !(
12272                (milliseconds >= 0 && days >= 0 && months >= 0) ||
12273                (milliseconds <= 0 && days <= 0 && months <= 0)
12274            )
12275        ) {
12276            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;
12277            days = 0;
12278            months = 0;
12279        }
12280
12281        // The following code bubbles up values, see the tests for
12282        // examples of what that means.
12283        data.milliseconds = milliseconds % 1000;
12284
12285        seconds = absFloor(milliseconds / 1000);
12286        data.seconds = seconds % 60;
12287
12288        minutes = absFloor(seconds / 60);
12289        data.minutes = minutes % 60;
12290
12291        hours = absFloor(minutes / 60);
12292        data.hours = hours % 24;
12293
12294        days += absFloor(hours / 24);
12295
12296        // convert days to months
12297        monthsFromDays = absFloor(daysToMonths(days));
12298        months += monthsFromDays;
12299        days -= absCeil(monthsToDays(monthsFromDays));
12300
12301        // 12 months -> 1 year
12302        years = absFloor(months / 12);
12303        months %= 12;
12304
12305        data.days = days;
12306        data.months = months;
12307        data.years = years;
12308
12309        return this;
12310    }
12311
12312    function daysToMonths(days) {
12313        // 400 years have 146097 days (taking into account leap year rules)
12314        // 400 years have 12 months === 4800
12315        return (days * 4800) / 146097;
12316    }
12317
12318    function monthsToDays(months) {
12319        // the reverse of daysToMonths
12320        return (months * 146097) / 4800;
12321    }
12322
12323    function as(units) {
12324        if (!this.isValid()) {
12325            return NaN;
12326        }
12327        var days,
12328            months,
12329            milliseconds = this._milliseconds;
12330
12331        units = normalizeUnits(units);
12332
12333        if (units === 'month' || units === 'quarter' || units === 'year') {
12334            days = this._days + milliseconds / 864e5;
12335            months = this._months + daysToMonths(days);
12336            switch (units) {
12337                case 'month':
12338                    return months;
12339                case 'quarter':
12340                    return months / 3;
12341                case 'year':
12342                    return months / 12;
12343            }
12344        } else {
12345            // handle milliseconds separately because of floating point math errors (issue #1867)
12346            days = this._days + Math.round(monthsToDays(this._months));
12347            switch (units) {
12348                case 'week':
12349                    return days / 7 + milliseconds / 6048e5;
12350                case 'day':
12351                    return days + milliseconds / 864e5;
12352                case 'hour':
12353                    return days * 24 + milliseconds / 36e5;
12354                case 'minute':
12355                    return days * 1440 + milliseconds / 6e4;
12356                case 'second':
12357                    return days * 86400 + milliseconds / 1000;
12358                // Math.floor prevents floating point math errors here
12359                case 'millisecond':
12360                    return Math.floor(days * 864e5) + milliseconds;
12361                default:
12362                    throw new Error('Unknown unit ' + units);
12363            }
12364        }
12365    }
12366
12367    // TODO: Use this.as('ms')?
12368    function valueOf$1() {
12369        if (!this.isValid()) {
12370            return NaN;
12371        }
12372        return (
12373            this._milliseconds +
12374            this._days * 864e5 +
12375            (this._months % 12) * 2592e6 +
12376            toInt(this._months / 12) * 31536e6
12377        );
12378    }
12379
12380    function makeAs(alias) {
12381        return function () {
12382            return this.as(alias);
12383        };
12384    }
12385
12386    var asMilliseconds = makeAs('ms'),
12387        asSeconds = makeAs('s'),
12388        asMinutes = makeAs('m'),
12389        asHours = makeAs('h'),
12390        asDays = makeAs('d'),
12391        asWeeks = makeAs('w'),
12392        asMonths = makeAs('M'),
12393        asQuarters = makeAs('Q'),
12394        asYears = makeAs('y');
12395
12396    function clone$1() {
12397        return createDuration(this);
12398    }
12399
12400    function get$2(units) {
12401        units = normalizeUnits(units);
12402        return this.isValid() ? this[units + 's']() : NaN;
12403    }
12404
12405    function makeGetter(name) {
12406        return function () {
12407            return this.isValid() ? this._data[name] : NaN;
12408        };
12409    }
12410
12411    var milliseconds = makeGetter('milliseconds'),
12412        seconds = makeGetter('seconds'),
12413        minutes = makeGetter('minutes'),
12414        hours = makeGetter('hours'),
12415        days = makeGetter('days'),
12416        months = makeGetter('months'),
12417        years = makeGetter('years');
12418
12419    function weeks() {
12420        return absFloor(this.days() / 7);
12421    }
12422
12423    var round = Math.round,
12424        thresholds = {
12425            ss: 44, // a few seconds to seconds
12426            s: 45, // seconds to minute
12427            m: 45, // minutes to hour
12428            h: 22, // hours to day
12429            d: 26, // days to month/week
12430            w: null, // weeks to month
12431            M: 11, // months to year
12432        };
12433
12434    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
12435    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
12436        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
12437    }
12438
12439    function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {
12440        var duration = createDuration(posNegDuration).abs(),
12441            seconds = round(duration.as('s')),
12442            minutes = round(duration.as('m')),
12443            hours = round(duration.as('h')),
12444            days = round(duration.as('d')),
12445            months = round(duration.as('M')),
12446            weeks = round(duration.as('w')),
12447            years = round(duration.as('y')),
12448            a =
12449                (seconds <= thresholds.ss && ['s', seconds]) ||
12450                (seconds < thresholds.s && ['ss', seconds]) ||
12451                (minutes <= 1 && ['m']) ||
12452                (minutes < thresholds.m && ['mm', minutes]) ||
12453                (hours <= 1 && ['h']) ||
12454                (hours < thresholds.h && ['hh', hours]) ||
12455                (days <= 1 && ['d']) ||
12456                (days < thresholds.d && ['dd', days]);
12457
12458        if (thresholds.w != null) {
12459            a =
12460                a ||
12461                (weeks <= 1 && ['w']) ||
12462                (weeks < thresholds.w && ['ww', weeks]);
12463        }
12464        a = a ||
12465            (months <= 1 && ['M']) ||
12466            (months < thresholds.M && ['MM', months]) ||
12467            (years <= 1 && ['y']) || ['yy', years];
12468
12469        a[2] = withoutSuffix;
12470        a[3] = +posNegDuration > 0;
12471        a[4] = locale;
12472        return substituteTimeAgo.apply(null, a);
12473    }
12474
12475    // This function allows you to set the rounding function for relative time strings
12476    function getSetRelativeTimeRounding(roundingFunction) {
12477        if (roundingFunction === undefined) {
12478            return round;
12479        }
12480        if (typeof roundingFunction === 'function') {
12481            round = roundingFunction;
12482            return true;
12483        }
12484        return false;
12485    }
12486
12487    // This function allows you to set a threshold for relative time strings
12488    function getSetRelativeTimeThreshold(threshold, limit) {
12489        if (thresholds[threshold] === undefined) {
12490            return false;
12491        }
12492        if (limit === undefined) {
12493            return thresholds[threshold];
12494        }
12495        thresholds[threshold] = limit;
12496        if (threshold === 's') {
12497            thresholds.ss = limit - 1;
12498        }
12499        return true;
12500    }
12501
12502    function humanize(argWithSuffix, argThresholds) {
12503        if (!this.isValid()) {
12504            return this.localeData().invalidDate();
12505        }
12506
12507        var withSuffix = false,
12508            th = thresholds,
12509            locale,
12510            output;
12511
12512        if (typeof argWithSuffix === 'object') {
12513            argThresholds = argWithSuffix;
12514            argWithSuffix = false;
12515        }
12516        if (typeof argWithSuffix === 'boolean') {
12517            withSuffix = argWithSuffix;
12518        }
12519        if (typeof argThresholds === 'object') {
12520            th = Object.assign({}, thresholds, argThresholds);
12521            if (argThresholds.s != null && argThresholds.ss == null) {
12522                th.ss = argThresholds.s - 1;
12523            }
12524        }
12525
12526        locale = this.localeData();
12527        output = relativeTime$1(this, !withSuffix, th, locale);
12528
12529        if (withSuffix) {
12530            output = locale.pastFuture(+this, output);
12531        }
12532
12533        return locale.postformat(output);
12534    }
12535
12536    var abs$1 = Math.abs;
12537
12538    function sign(x) {
12539        return (x > 0) - (x < 0) || +x;
12540    }
12541
12542    function toISOString$1() {
12543        // for ISO strings we do not use the normal bubbling rules:
12544        //  * milliseconds bubble up until they become hours
12545        //  * days do not bubble at all
12546        //  * months bubble up until they become years
12547        // This is because there is no context-free conversion between hours and days
12548        // (think of clock changes)
12549        // and also not between days and months (28-31 days per month)
12550        if (!this.isValid()) {
12551            return this.localeData().invalidDate();
12552        }
12553
12554        var seconds = abs$1(this._milliseconds) / 1000,
12555            days = abs$1(this._days),
12556            months = abs$1(this._months),
12557            minutes,
12558            hours,
12559            years,
12560            s,
12561            total = this.asSeconds(),
12562            totalSign,
12563            ymSign,
12564            daysSign,
12565            hmsSign;
12566
12567        if (!total) {
12568            // this is the same as C#'s (Noda) and python (isodate)...
12569            // but not other JS (goog.date)
12570            return 'P0D';
12571        }
12572
12573        // 3600 seconds -> 60 minutes -> 1 hour
12574        minutes = absFloor(seconds / 60);
12575        hours = absFloor(minutes / 60);
12576        seconds %= 60;
12577        minutes %= 60;
12578
12579        // 12 months -> 1 year
12580        years = absFloor(months / 12);
12581        months %= 12;
12582
12583        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
12584        s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : '';
12585
12586        totalSign = total < 0 ? '-' : '';
12587        ymSign = sign(this._months) !== sign(total) ? '-' : '';
12588        daysSign = sign(this._days) !== sign(total) ? '-' : '';
12589        hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';
12590
12591        return (
12592            totalSign +
12593            'P' +
12594            (years ? ymSign + years + 'Y' : '') +
12595            (months ? ymSign + months + 'M' : '') +
12596            (days ? daysSign + days + 'D' : '') +
12597            (hours || minutes || seconds ? 'T' : '') +
12598            (hours ? hmsSign + hours + 'H' : '') +
12599            (minutes ? hmsSign + minutes + 'M' : '') +
12600            (seconds ? hmsSign + s + 'S' : '')
12601        );
12602    }
12603
12604    var proto$2 = Duration.prototype;
12605
12606    proto$2.isValid = isValid$1;
12607    proto$2.abs = abs;
12608    proto$2.add = add$1;
12609    proto$2.subtract = subtract$1;
12610    proto$2.as = as;
12611    proto$2.asMilliseconds = asMilliseconds;
12612    proto$2.asSeconds = asSeconds;
12613    proto$2.asMinutes = asMinutes;
12614    proto$2.asHours = asHours;
12615    proto$2.asDays = asDays;
12616    proto$2.asWeeks = asWeeks;
12617    proto$2.asMonths = asMonths;
12618    proto$2.asQuarters = asQuarters;
12619    proto$2.asYears = asYears;
12620    proto$2.valueOf = valueOf$1;
12621    proto$2._bubble = bubble;
12622    proto$2.clone = clone$1;
12623    proto$2.get = get$2;
12624    proto$2.milliseconds = milliseconds;
12625    proto$2.seconds = seconds;
12626    proto$2.minutes = minutes;
12627    proto$2.hours = hours;
12628    proto$2.days = days;
12629    proto$2.weeks = weeks;
12630    proto$2.months = months;
12631    proto$2.years = years;
12632    proto$2.humanize = humanize;
12633    proto$2.toISOString = toISOString$1;
12634    proto$2.toString = toISOString$1;
12635    proto$2.toJSON = toISOString$1;
12636    proto$2.locale = locale;
12637    proto$2.localeData = localeData;
12638
12639    proto$2.toIsoString = deprecate(
12640        'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',
12641        toISOString$1
12642    );
12643    proto$2.lang = lang;
12644
12645    // FORMATTING
12646
12647    addFormatToken('X', 0, 0, 'unix');
12648    addFormatToken('x', 0, 0, 'valueOf');
12649
12650    // PARSING
12651
12652    addRegexToken('x', matchSigned);
vendor: 12,267 bytes, lines 12653-13120
12653    addRegexToken('X', matchTimestamp);
12654    addParseToken('X', function (input, array, config) {
12655        config._d = new Date(parseFloat(input) * 1000);
12656    });
12657    addParseToken('x', function (input, array, config) {
12658        config._d = new Date(toInt(input));
12659    });
12660
12661    //! moment.js
12662
12663    hooks.version = '2.29.1';
12664
12665    setHookCallback(createLocal);
12666
12667    hooks.fn = proto;
12668    hooks.min = min;
12669    hooks.max = max;
12670    hooks.now = now;
12671    hooks.utc = createUTC;
12672    hooks.unix = createUnix;
12673    hooks.months = listMonths;
12674    hooks.isDate = isDate;
12675    hooks.locale = getSetGlobalLocale;
12676    hooks.invalid = createInvalid;
12677    hooks.duration = createDuration;
12678    hooks.isMoment = isMoment;
12679    hooks.weekdays = listWeekdays;
12680    hooks.parseZone = createInZone;
12681    hooks.localeData = getLocale;
12682    hooks.isDuration = isDuration;
12683    hooks.monthsShort = listMonthsShort;
12684    hooks.weekdaysMin = listWeekdaysMin;
12685    hooks.defineLocale = defineLocale;
12686    hooks.updateLocale = updateLocale;
12687    hooks.locales = listLocales;
12688    hooks.weekdaysShort = listWeekdaysShort;
12689    hooks.normalizeUnits = normalizeUnits;
12690    hooks.relativeTimeRounding = getSetRelativeTimeRounding;
12691    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;
12692    hooks.calendarFormat = getCalendarFormat;
12693    hooks.prototype = proto;
12694
12695    // currently HTML5 input type only supports 24-hour formats
12696    hooks.HTML5_FMT = {
12697        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type="datetime-local" />
12698        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type="datetime-local" step="1" />
12699        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type="datetime-local" step="0.001" />
12700        DATE: 'YYYY-MM-DD', // <input type="date" />
12701        TIME: 'HH:mm', // <input type="time" />
12702        TIME_SECONDS: 'HH:mm:ss', // <input type="time" step="1" />
12703        TIME_MS: 'HH:mm:ss.SSS', // <input type="time" step="0.001" />
12704        WEEK: 'GGGG-[W]WW', // <input type="week" />
12705        MONTH: 'YYYY-MM', // <input type="month" />
12706    };
12707
12708    return hooks;
12709
12710})));
12711;
12712//! moment-timezone.js
12713//! version : 0.5.32
12714//! Copyright (c) JS Foundation and other contributors
12715//! license : MIT
12716//! github.com/moment/moment-timezone
12717
12718(function (root, factory) {
12719	"use strict";
12720
12721	/*global define*/
12722	if (typeof module === 'object' && module.exports) {
12723		module.exports = factory(require('moment')); // Node
12724	} else if (typeof define === 'function' && define.amd) {
12725		define(['moment'], factory);                 // AMD
12726	} else {
12727		factory(root.moment);                        // Browser
12728	}
12729}(this, function (moment) {
12730	"use strict";
12731
12732	// Resolves es6 module loading issue
12733	if (moment.version === undefined && moment.default) {
12734		moment = moment.default;
12735	}
12736
12737	// Do not load moment-timezone a second time.
12738	// if (moment.tz !== undefined) {
12739	// 	logError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);
12740	// 	return moment;
12741	// }
12742
12743	var VERSION = "0.5.32",
12744		zones = {},
12745		links = {},
12746		countries = {},
12747		names = {},
12748		guesses = {},
12749		cachedGuess;
12750
12751	if (!moment || typeof moment.version !== 'string') {
12752		logError('Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/');
12753	}
12754
12755	var momentVersion = moment.version.split('.'),
12756		major = +momentVersion[0],
12757		minor = +momentVersion[1];
12758
12759	// Moment.js version check
12760	if (major < 2 || (major === 2 && minor < 6)) {
12761		logError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');
12762	}
12763
12764	/************************************
12765		Unpacking
12766	************************************/
12767
12768	function charCodeToInt(charCode) {
12769		if (charCode > 96) {
12770			return charCode - 87;
12771		} else if (charCode > 64) {
12772			return charCode - 29;
12773		}
12774		return charCode - 48;
12775	}
12776
12777	function unpackBase60(string) {
12778		var i = 0,
12779			parts = string.split('.'),
12780			whole = parts[0],
12781			fractional = parts[1] || '',
12782			multiplier = 1,
12783			num,
12784			out = 0,
12785			sign = 1;
12786
12787		// handle negative numbers
12788		if (string.charCodeAt(0) === 45) {
12789			i = 1;
12790			sign = -1;
12791		}
12792
12793		// handle digits before the decimal
12794		for (i; i < whole.length; i++) {
12795			num = charCodeToInt(whole.charCodeAt(i));
12796			out = 60 * out + num;
12797		}
12798
12799		// handle digits after the decimal
12800		for (i = 0; i < fractional.length; i++) {
12801			multiplier = multiplier / 60;
12802			num = charCodeToInt(fractional.charCodeAt(i));
12803			out += num * multiplier;
12804		}
12805
12806		return out * sign;
12807	}
12808
12809	function arrayToInt (array) {
12810		for (var i = 0; i < array.length; i++) {
12811			array[i] = unpackBase60(array[i]);
12812		}
12813	}
12814
12815	function intToUntil (array, length) {
12816		for (var i = 0; i < length; i++) {
12817			array[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds
12818		}
12819
12820		array[length - 1] = Infinity;
12821	}
12822
12823	function mapIndices (source, indices) {
12824		var out = [], i;
12825
12826		for (i = 0; i < indices.length; i++) {
12827			out[i] = source[indices[i]];
12828		}
12829
12830		return out;
12831	}
12832
12833	function unpack (string) {
12834		var data = string.split('|'),
12835			offsets = data[2].split(' '),
12836			indices = data[3].split(''),
12837			untils  = data[4].split(' ');
12838
12839		arrayToInt(offsets);
12840		arrayToInt(indices);
12841		arrayToInt(untils);
12842
12843		intToUntil(untils, indices.length);
12844
12845		return {
12846			name       : data[0],
12847			abbrs      : mapIndices(data[1].split(' '), indices),
12848			offsets    : mapIndices(offsets, indices),
12849			untils     : untils,
12850			population : data[5] | 0
12851		};
12852	}
12853
12854	/************************************
12855		Zone object
12856	************************************/
12857
12858	function Zone (packedString) {
12859		if (packedString) {
12860			this._set(unpack(packedString));
12861		}
12862	}
12863
12864	Zone.prototype = {
12865		_set : function (unpacked) {
12866			this.name       = unpacked.name;
12867			this.abbrs      = unpacked.abbrs;
12868			this.untils     = unpacked.untils;
12869			this.offsets    = unpacked.offsets;
12870			this.population = unpacked.population;
12871		},
12872
12873		_index : function (timestamp) {
12874			var target = +timestamp,
12875				untils = this.untils,
12876				i;
12877
12878			for (i = 0; i < untils.length; i++) {
12879				if (target < untils[i]) {
12880					return i;
12881				}
12882			}
12883		},
12884
12885		countries : function () {
12886			var zone_name = this.name;
12887			return Object.keys(countries).filter(function (country_code) {
12888				return countries[country_code].zones.indexOf(zone_name) !== -1;
12889			});
12890		},
12891
12892		parse : function (timestamp) {
12893			var target  = +timestamp,
12894				offsets = this.offsets,
12895				untils  = this.untils,
12896				max     = untils.length - 1,
12897				offset, offsetNext, offsetPrev, i;
12898
12899			for (i = 0; i < max; i++) {
12900				offset     = offsets[i];
12901				offsetNext = offsets[i + 1];
12902				offsetPrev = offsets[i ? i - 1 : i];
12903
12904				if (offset < offsetNext && tz.moveAmbiguousForward) {
12905					offset = offsetNext;
12906				} else if (offset > offsetPrev && tz.moveInvalidForward) {
12907					offset = offsetPrev;
12908				}
12909
12910				if (target < untils[i] - (offset * 60000)) {
12911					return offsets[i];
12912				}
12913			}
12914
12915			return offsets[max];
12916		},
12917
12918		abbr : function (mom) {
12919			return this.abbrs[this._index(mom)];
12920		},
12921
12922		offset : function (mom) {
12923			logError("zone.offset has been deprecated in favor of zone.utcOffset");
12924			return this.offsets[this._index(mom)];
12925		},
12926
12927		utcOffset : function (mom) {
12928			return this.offsets[this._index(mom)];
12929		}
12930	};
12931
12932	/************************************
12933		Country object
12934	************************************/
12935
12936	function Country (country_name, zone_names) {
12937		this.name = country_name;
12938		this.zones = zone_names;
12939	}
12940
12941	/************************************
12942		Current Timezone
12943	************************************/
12944
12945	function OffsetAt(at) {
12946		var timeString = at.toTimeString();
12947		var abbr = timeString.match(/\([a-z ]+\)/i);
12948		if (abbr && abbr[0]) {
12949			// 17:56:31 GMT-0600 (CST)
12950			// 17:56:31 GMT-0600 (Central Standard Time)
12951			abbr = abbr[0].match(/[A-Z]/g);
12952			abbr = abbr ? abbr.join('') : undefined;
12953		} else {
12954			// 17:56:31 CST
12955			// 17:56:31 GMT+0800 (台北標準時間)
12956			abbr = timeString.match(/[A-Z]{3,5}/g);
12957			abbr = abbr ? abbr[0] : undefined;
12958		}
12959
12960		if (abbr === 'GMT') {
12961			abbr = undefined;
12962		}
12963
12964		this.at = +at;
12965		this.abbr = abbr;
12966		this.offset = at.getTimezoneOffset();
12967	}
12968
12969	function ZoneScore(zone) {
12970		this.zone = zone;
12971		this.offsetScore = 0;
12972		this.abbrScore = 0;
12973	}
12974
12975	ZoneScore.prototype.scoreOffsetAt = function (offsetAt) {
12976		this.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset);
12977		if (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, '') !== offsetAt.abbr) {
12978			this.abbrScore++;
12979		}
12980	};
12981
12982	function findChange(low, high) {
12983		var mid, diff;
12984
12985		while ((diff = ((high.at - low.at) / 12e4 | 0) * 6e4)) {
12986			mid = new OffsetAt(new Date(low.at + diff));
12987			if (mid.offset === low.offset) {
12988				low = mid;
12989			} else {
12990				high = mid;
12991			}
12992		}
12993
12994		return low;
12995	}
12996
12997	function userOffsets() {
12998		var startYear = new Date().getFullYear() - 2,
12999			last = new OffsetAt(new Date(startYear, 0, 1)),
13000			offsets = [last],
13001			change, next, i;
13002
13003		for (i = 1; i < 48; i++) {
13004			next = new OffsetAt(new Date(startYear, i, 1));
13005			if (next.offset !== last.offset) {
13006				change = findChange(last, next);
13007				offsets.push(change);
13008				offsets.push(new OffsetAt(new Date(change.at + 6e4)));
13009			}
13010			last = next;
13011		}
13012
13013		for (i = 0; i < 4; i++) {
13014			offsets.push(new OffsetAt(new Date(startYear + i, 0, 1)));
13015			offsets.push(new OffsetAt(new Date(startYear + i, 6, 1)));
13016		}
13017
13018		return offsets;
13019	}
13020
13021	function sortZoneScores (a, b) {
13022		if (a.offsetScore !== b.offsetScore) {
13023			return a.offsetScore - b.offsetScore;
13024		}
13025		if (a.abbrScore !== b.abbrScore) {
13026			return a.abbrScore - b.abbrScore;
13027		}
13028		if (a.zone.population !== b.zone.population) {
13029			return b.zone.population - a.zone.population;
13030		}
13031		return b.zone.name.localeCompare(a.zone.name);
13032	}
13033
13034	function addToGuesses (name, offsets) {
13035		var i, offset;
13036		arrayToInt(offsets);
13037		for (i = 0; i < offsets.length; i++) {
13038			offset = offsets[i];
13039			guesses[offset] = guesses[offset] || {};
13040			guesses[offset][name] = true;
13041		}
13042	}
13043
13044	function guessesForUserOffsets (offsets) {
13045		var offsetsLength = offsets.length,
13046			filteredGuesses = {},
13047			out = [],
13048			i, j, guessesOffset;
13049
13050		for (i = 0; i < offsetsLength; i++) {
13051			guessesOffset = guesses[offsets[i].offset] || {};
13052			for (j in guessesOffset) {
13053				if (guessesOffset.hasOwnProperty(j)) {
13054					filteredGuesses[j] = true;
13055				}
13056			}
13057		}
13058
13059		for (i in filteredGuesses) {
13060			if (filteredGuesses.hasOwnProperty(i)) {
13061				out.push(names[i]);
13062			}
13063		}
13064
13065		return out;
13066	}
13067
13068	function rebuildGuess () {
13069
13070		// use Intl API when available and returning valid time zone
13071		try {
13072			var intlName = Intl.DateTimeFormat().resolvedOptions().timeZone;
13073			if (intlName && intlName.length > 3) {
13074				var name = names[normalizeName(intlName)];
13075				if (name) {
13076					return name;
13077				}
13078				logError("Moment Timezone found " + intlName + " from the Intl api, but did not have that data loaded.");
13079			}
13080		} catch (e) {
13081			// Intl unavailable, fall back to manual guessing.
13082		}
13083
13084		var offsets = userOffsets(),
13085			offsetsLength = offsets.length,
13086			guesses = guessesForUserOffsets(offsets),
13087			zoneScores = [],
13088			zoneScore, i, j;
13089
13090		for (i = 0; i < guesses.length; i++) {
13091			zoneScore = new ZoneScore(getZone(guesses[i]), offsetsLength);
13092			for (j = 0; j < offsetsLength; j++) {
13093				zoneScore.scoreOffsetAt(offsets[j]);
13094			}
13095			zoneScores.push(zoneScore);
13096		}
13097
13098		zoneScores.sort(sortZoneScores);
13099
13100		return zoneScores.length > 0 ? zoneScores[0].zone.name : undefined;
13101	}
13102
13103	function guess (ignoreCache) {
13104		if (!cachedGuess || ignoreCache) {
13105			cachedGuess = rebuildGuess();
13106		}
13107		return cachedGuess;
13108	}
13109
13110	/************************************
13111		Global Methods
13112	************************************/
13113
13114	function normalizeName (name) {
13115		return (name || '').toLowerCase().replace(/\//g, '_');
13116	}
13117
13118	function addZone (packed) {
13119		var i, name, split, normalized;
13120
vendor: 1,607 bytes, lines 13121-13199
13121		if (typeof packed === "string") {
13122			packed = [packed];
13123		}
13124
13125		for (i = 0; i < packed.length; i++) {
13126			split = packed[i].split('|');
13127			name = split[0];
13128			normalized = normalizeName(name);
13129			zones[normalized] = packed[i];
13130			names[normalized] = name;
13131			addToGuesses(normalized, split[2].split(' '));
13132		}
13133	}
13134
13135	function getZone (name, caller) {
13136
13137		name = normalizeName(name);
13138
13139		var zone = zones[name];
13140		var link;
13141
13142		if (zone instanceof Zone) {
13143			return zone;
13144		}
13145
13146		if (typeof zone === 'string') {
13147			zone = new Zone(zone);
13148			zones[name] = zone;
13149			return zone;
13150		}
13151
13152		// Pass getZone to prevent recursion more than 1 level deep
13153		if (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {
13154			zone = zones[name] = new Zone();
13155			zone._set(link);
13156			zone.name = names[name];
13157			return zone;
13158		}
13159
13160		return null;
13161	}
13162
13163	function getNames () {
13164		var i, out = [];
13165
13166		for (i in names) {
13167			if (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {
13168				out.push(names[i]);
13169			}
13170		}
13171
13172		return out.sort();
13173	}
13174
13175	function getCountryNames () {
13176		return Object.keys(countries);
13177	}
13178
13179	function addLink (aliases) {
13180		var i, alias, normal0, normal1;
13181
13182		if (typeof aliases === "string") {
13183			aliases = [aliases];
13184		}
13185
13186		for (i = 0; i < aliases.length; i++) {
13187			alias = aliases[i].split('|');
13188
13189			normal0 = normalizeName(alias[0]);
13190			normal1 = normalizeName(alias[1]);
13191
13192			links[normal0] = normal1;
13193			names[normal0] = alias[0];
13194
13195			links[normal1] = normal0;
13196			names[normal1] = alias[1];
13197		}
13198	}
13199
vendor: 7,368 bytes, lines 13200-13415
13200	function addCountries (data) {
13201		var i, country_code, country_zones, split;
13202		if (!data || !data.length) return;
13203		for (i = 0; i < data.length; i++) {
13204			split = data[i].split('|');
13205			country_code = split[0].toUpperCase();
13206			country_zones = split[1].split(' ');
13207			countries[country_code] = new Country(
13208				country_code,
13209				country_zones
13210			);
13211		}
13212	}
13213
13214	function getCountry (name) {
13215		name = name.toUpperCase();
13216		return countries[name] || null;
13217	}
13218
13219	function zonesForCountry(country, with_offset) {
13220		country = getCountry(country);
13221
13222		if (!country) return null;
13223
13224		var zones = country.zones.sort();
13225
13226		if (with_offset) {
13227			return zones.map(function (zone_name) {
13228				var zone = getZone(zone_name);
13229				return {
13230					name: zone_name,
13231					offset: zone.utcOffset(new Date())
13232				};
13233			});
13234		}
13235
13236		return zones;
13237	}
13238
13239	function loadData (data) {
13240		addZone(data.zones);
13241		addLink(data.links);
13242		addCountries(data.countries);
13243		tz.dataVersion = data.version;
13244	}
13245
13246	function zoneExists (name) {
13247		if (!zoneExists.didShowError) {
13248			zoneExists.didShowError = true;
13249				logError("moment.tz.zoneExists('" + name + "') has been deprecated in favor of !moment.tz.zone('" + name + "')");
13250		}
13251		return !!getZone(name);
13252	}
13253
13254	function needsOffset (m) {
13255		var isUnixTimestamp = (m._f === 'X' || m._f === 'x');
13256		return !!(m._a && (m._tzm === undefined) && !isUnixTimestamp);
13257	}
13258
13259	function logError (message) {
13260		if (typeof console !== 'undefined' && typeof console.error === 'function') {
13261			console.error(message);
13262		}
13263	}
13264
13265	/************************************
13266		moment.tz namespace
13267	************************************/
13268
13269	function tz (input) {
13270		var args = Array.prototype.slice.call(arguments, 0, -1),
13271			name = arguments[arguments.length - 1],
13272			zone = getZone(name),
13273			out  = moment.utc.apply(null, args);
13274
13275		if (zone && !moment.isMoment(input) && needsOffset(out)) {
13276			out.add(zone.parse(out), 'minutes');
13277		}
13278
13279		out.tz(name);
13280
13281		return out;
13282	}
13283
13284	tz.version      = VERSION;
13285	tz.dataVersion  = '';
13286	tz._zones       = zones;
13287	tz._links       = links;
13288	tz._names       = names;
13289	tz._countries	= countries;
13290	tz.add          = addZone;
13291	tz.link         = addLink;
13292	tz.load         = loadData;
13293	tz.zone         = getZone;
13294	tz.zoneExists   = zoneExists; // deprecated in 0.1.0
13295	tz.guess        = guess;
13296	tz.names        = getNames;
13297	tz.Zone         = Zone;
13298	tz.unpack       = unpack;
13299	tz.unpackBase60 = unpackBase60;
13300	tz.needsOffset  = needsOffset;
13301	tz.moveInvalidForward   = true;
13302	tz.moveAmbiguousForward = false;
13303	tz.countries    = getCountryNames;
13304	tz.zonesForCountry = zonesForCountry;
13305
13306	/************************************
13307		Interface with Moment.js
13308	************************************/
13309
13310	var fn = moment.fn;
13311
13312	moment.tz = tz;
13313
13314	moment.defaultZone = null;
13315
13316	moment.updateOffset = function (mom, keepTime) {
13317		var zone = moment.defaultZone,
13318			offset;
13319
13320		if (mom._z === undefined) {
13321			if (zone && needsOffset(mom) && !mom._isUTC) {
13322				mom._d = moment.utc(mom._a)._d;
13323				mom.utc().add(zone.parse(mom), 'minutes');
13324			}
13325			mom._z = zone;
13326		}
13327		if (mom._z) {
13328			offset = mom._z.utcOffset(mom);
13329			if (Math.abs(offset) < 16) {
13330				offset = offset / 60;
13331			}
13332			if (mom.utcOffset !== undefined) {
13333				var z = mom._z;
13334				mom.utcOffset(-offset, keepTime);
13335				mom._z = z;
13336			} else {
13337				mom.zone(offset, keepTime);
13338			}
13339		}
13340	};
13341
13342	fn.tz = function (name, keepTime) {
13343		if (name) {
13344			if (typeof name !== 'string') {
13345				throw new Error('Time zone name must be a string, got ' + name + ' [' + typeof name + ']');
13346			}
13347			this._z = getZone(name);
13348			if (this._z) {
13349				moment.updateOffset(this, keepTime);
13350			} else {
13351				logError("Moment Timezone has no data for " + name + ". See http://momentjs.com/timezone/docs/#/data-loading/.");
13352			}
13353			return this;
13354		}
13355		if (this._z) { return this._z.name; }
13356	};
13357
13358	function abbrWrap (old) {
13359		return function () {
13360			if (this._z) { return this._z.abbr(this); }
13361			return old.call(this);
13362		};
13363	}
13364
13365	function resetZoneWrap (old) {
13366		return function () {
13367			this._z = null;
13368			return old.apply(this, arguments);
13369		};
13370	}
13371
13372	function resetZoneWrap2 (old) {
13373		return function () {
13374			if (arguments.length > 0) this._z = null;
13375			return old.apply(this, arguments);
13376		};
13377	}
13378
13379	fn.zoneName  = abbrWrap(fn.zoneName);
13380	fn.zoneAbbr  = abbrWrap(fn.zoneAbbr);
13381	fn.utc       = resetZoneWrap(fn.utc);
13382	fn.local     = resetZoneWrap(fn.local);
13383	fn.utcOffset = resetZoneWrap2(fn.utcOffset);
13384
13385	moment.tz.setDefault = function(name) {
13386		if (major < 2 || (major === 2 && minor < 9)) {
13387			logError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');
13388		}
13389		moment.defaultZone = name ? getZone(name) : null;
13390		return moment;
13391	};
13392
13393	// Cloning a moment should include the _z property.
13394	var momentProperties = moment.momentProperties;
13395	if (Object.prototype.toString.call(momentProperties) === '[object Array]') {
13396		// moment 2.8.1+
13397		momentProperties.push('_z');
13398		momentProperties.push('_a');
13399	} else if (momentProperties) {
13400		// moment 2.7.0
13401		momentProperties._z = null;
13402	}
13403
13404	loadData({
13405		"version": "2020a",
13406		"zones": [
13407			"Africa/Abidjan|LMT GMT|g.8 0|01|-2ldXH.Q|48e5",
13408			"Africa/Accra|LMT GMT +0020|.Q 0 -k|012121212121212121212121212121212121212121212121|-26BbX.8 6tzX.8 MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE|41e5",
13409			"Africa/Nairobi|LMT EAT +0230 +0245|-2r.g -30 -2u -2J|01231|-1F3Cr.g 3Dzr.g okMu MFXJ|47e5",
13410			"Africa/Algiers|PMT WET WEST CET CEST|-9.l 0 -10 -10 -20|0121212121212121343431312123431213|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 DA0 Imo0 rd0 De0 9Xz0 1fb0 1ap0 16K0 2yo0 mEp0 hwL0 jxA0 11A0 dDd0 17b0 11B0 1cN0 2Dy0 1cN0 1fB0 1cL0|26e5",
13411			"Africa/Lagos|LMT WAT|-d.A -10|01|-22y0d.A|17e6",
13412			"Africa/Bissau|LMT -01 GMT|12.k 10 0|012|-2ldX0 2xoo0|39e4",
13413			"Africa/Maputo|LMT CAT|-2a.k -20|01|-2GJea.k|26e5",
13414			"Africa/Cairo|EET EEST|-20 -30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1bIO0 vb0 1ip0 11z0 1iN0 1nz0 12p0 1pz0 10N0 1pz0 16p0 1jz0 s3d0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1WL0 rd0 1Rz0 wp0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1qL0 Xd0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1ny0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 WL0 1qN0 Rb0 1wp0 On0 1zd0 Lz0 1EN0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0|15e6",
13415			"Africa/Casablanca|LMT +00 +01|u.k 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2gMnt.E 130Lt.E rb0 Dd0 dVb0 b6p0 TX0 EoB0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4mn0 SyN0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e
1341500 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0|32e5",
13416			"Africa/Ceuta|WET WEST CET CEST|0 -10 -10 -20|010101010101010101010232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-25KN0 11z0 drd0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1y7o0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4VB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|85e3",
13417			"Africa/El_Aaiun|LMT -01 +00 +01|Q.M 10 0 -10|012323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1rDz7.c 1GVA7.c 6L0 AL0 1Nd0 XX0 1Cp0 pz0 1cBB0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e
1341700 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0|20e4",
13418			"Africa/Johannesburg|SAST SAST SAST|-1u -20 -30|012121|-2GJdu 1Ajdu 1cL0 1cN0 1cL0|84e5",
13419			"Africa/Juba|LMT CAT CAST EAT|-26.s -20 -30 -30|01212121212121212121212121212121213|-1yW26.s 1zK06.s 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0|",
13420			"Africa/Khartoum|LMT CAT CAST EAT|-2a.8 -20 -30 -30|012121212121212121212121212121212131|-1yW2a.8 1zK0a.8 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0 HjL0|51e5",
13421			"Africa/Monrovia|MMT MMT GMT|H.8 I.u 0|012|-23Lzg.Q 28G01.m|11e5",
13422			"Africa/Ndjamena|LMT WAT WAST|-10.c -10 -20|0121|-2le10.c 2J3c0.c Wn0|13e5",
13423			"Africa/Sao_Tome|LMT GMT WAT|A.J 0 -10|0121|-2le00 4i6N0 2q00|",
13424			"Africa/Tripoli|LMT CET CEST EET|-Q.I -10 -20 -20|012121213121212121212121213123123|-21JcQ.I 1hnBQ.I vx0 4iP0 xx0 4eN0 Bb0 7ip0 U0n0 A10 1db0 1cN0 1db0 1dd0 1db0 1eN0 1bb0 1e10 1cL0 1c10 1db0 1dd0 1db0 1cN0 1db0 1q10 fAn0 1ep0 1db0 AKq0 TA0 1o00|11e5",
13425			"Africa/Tunis|PMT CET CEST|-9.l -10 -20|0121212121212121212121212121212121|-2nco9.l 18pa9.l 1qM0 DA0 3Tc0 11B0 1ze0 WM0 7z0 3d0 14L0 1cN0 1f90 1ar0 16J0 1gXB0 WM0 1rA0 11c0 nwo0 Ko0 1cM0 1cM0 1rA0 10M0 zuM0 10N0 1aN0 1qM0 WM0 1qM0 11A0 1o00|20e5",
13426			"Africa/Windhoek|+0130 SAST SAST CAT WAT|-1u -20 -30 -20 -10|01213434343434343434343434343434343434343434343434343|-2GJdu 1Ajdu 1cL0 1SqL0 9Io0 16P0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|32e4",
13427			"America/Adak|NST NWT NPT BST BDT AHST HST HDT|b0 a0 a0 b0 a0 a0 a0 90|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326",
13428			"America/Anchorage|AST AWT APT AHST AHDT YST AKST AKDT|a0 90 90 a0 90 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T00 8wX0 iA0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4",
13429			"America/Port_of_Spain|LMT AST|46.4 40|01|-2kNvR.U|43e3",
13430			"America/Araguaina|LMT -03 -02|3c.M 30 20|0121212121212121212121212121212121212121212121212121|-2glwL.c HdKL.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 ny10 Lz0|14e4",
13431			"America/Argentina/Buenos_Aires|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 A4p0 uL0 1qN0 WL0|",
13432			"America/Argentina/Catamarca|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323132321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 7B0 8zb0 uL0|",
13433			"America/Argentina/Cordoba|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323132323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0 1qN0 WL0|",
13434			"America/Argentina/Jujuy|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323121323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1ze0 TX0 1ld0 WK0 1wp0 TX0 A4p0 uL0|",
13435			"America/Argentina/La_Rioja|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0|",
13436			"America/Argentina/Mendoza|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232312121321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1u20 SL0 1vd0 Tb0 1wp0 TW0 ri10 Op0 7TX0 uL0|",
13437			"America/Argentina/Rio_Gallegos|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0|",
13438			"America/Argentina/Salta|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0|",
13439			"America/Argentina/San_Juan|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rld0 m10 8lb0 uL0|",
13440			"America/Argentina/San_Luis|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323121212321212|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 XX0 1q20 SL0 AN0 vDb0 m10 8lb0 8L0 jd0 1qN0 WL0 1qN0|",
13441			"America/Argentina/Tucuman|CMT -04 -03 -02|4g.M 40 30 20|0121212121212121212121212121212121212121212323232313232123232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 4N0 8BX0 uL0 1qN0 WL0|",
13442			"America/Argentina/Ushuaia|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rkN0 8p0 8zb0 uL0|",
13443			"America/Curacao|LMT -0430 AST|4z.L 4u 40|012|-2kV7o.d 28KLS.d|15e4",
13444			"America/Asuncion|AMT -04 -03|3O.E 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-1x589.k 1DKM9.k 3CL0 3Dd0 10L0 1pB0 10n0 1pB0 10n0 1pB0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1lB0 14n0 1dd0 1cL0 1fd0 WL0 1rd0 1aL0 1dB0 Xz0 1qp0 Xb0 1qN0 10L0 1rB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 WN0 1qL0 11B0 1nX0 1ip0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 TX0 1tB0 19X0 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0|28e5",
13445			"America/Atikokan|CST CDT CWT CPT EST|60 50 50 50 50|0101234|-25TQ0 1in0 Rnb0 3je0 8x30 iw0|28e2",
13446			"America/Bahia_Banderas|LMT MST CST PST MDT CDT|71 70 60 80 60 50|0121212131414141414141414141414141414152525252525252525252525252525252525252525252525252525252|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|84e3",
13447			"America/Bahia|LMT -03 -02|2y.4 30 20|01212121212121212121212121212121212121212121212121212121212121|-2glxp.U HdLp.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 l5B0 Rb0|27e5",
13448			"America/Barbados|LMT BMT AST ADT|3W.t 3W.t 40 30|01232323232|-1Q0I1.v jsM0 1ODC1.v IL0 1ip0 17b0 1ip0 17b0 1ld0 13b0|28e4",
13449			"America/Belem|LMT -03 -02|3d.U 30 20|012121212121212121212121212121|-2glwK.4 HdKK.4 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|20e5",
13450			"America/Belize|LMT CST -0530 CDT|5Q.M 60 5u 50|01212121212121212121212121212121212121212121212121213131|-2kBu7.c fPA7.c Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1f0Mu qn0 lxB0 mn0|57e3",
13451			"America/Blanc-Sablon|AST ADT AWT APT|40 30 30 30|010230|-25TS0 1in0 UGp0 8x50 iu0|11e2",
13452			"America/Boa_Vista|LMT -04 -03|42.E 40 30|0121212121212121212121212121212121|-2glvV.k HdKV.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 smp0 WL0 1tB0 2L0|62e2",
13453			"America/Bogota|BMT -05 -04|4U.g 50 40|0121|-2eb73.I 38yo3.I 2en0|90e5",
13454			"America/Boise|PST PDT MST MWT MPT MDT|80 70 70 60 60 60|0101023425252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-261q0 1nX0 11B0 1nX0 8C10 JCL0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 Dd0 1Kn0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e4",
13455			"America/Cambridge_Bay|-00 MST MWT MPT MDDT MDT CST CDT EST|0 70 60 60 50 60 60 50 50|0123141515151515151515151515151515151515151515678651515151515151515151515151515151515151515151515151515151515151515151515151|-21Jc0 RO90 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11A0 1nX0 2K0 WQ0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e2",
13456			"America/Campo_Grande|LMT -04 -03|3C.s 40 30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwl.w HdLl.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|77e4",
13457			"America/Cancun|LMT CST EST EDT CDT|5L.4 60 50 40 50|0123232341414141414141414141414141414141412|-1UQG
134570 2q2o0 yLB0 1lb0 14p0 1lb0 14p0 Lz0 xB0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 Dd0|63e4",
13458			"America/Caracas|CMT -0430 -04|4r.E 4u 40|01212|-2kV7w.k 28KM2.k 1IwOu kqo0|29e5",
13459			"America/Cayenne|LMT -04 -03|3t.k 40 30|012|-2mrwu.E 2gWou.E|58e3",
13460			"America/Panama|CMT EST|5j.A 50|01|-2uduE.o|15e5",
13461			"America/Chicago|CST CDT EST CWT CPT|60 50 50 50 50|01010101010101010101010101010101010102010101010103401010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 1wp0 TX0 WN0 1qL0 1cN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 11B0 1Hz0 14p0 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5",
13462			"America/Chihuahua|LMT MST CST CDT MDT|74.k 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|81e4",
13463			"America/Costa_Rica|SJMT CST CDT|5A.d 60 50|0121212121|-1Xd6n.L 2lu0n.L Db0 1Kp0 Db0 pRB0 15b0 1kp0 mL0|12e5",
13464			"America/Creston|MST PST|70 80|010|-29DR0 43B0|53e2",
13465			"America/Cuiaba|LMT -04 -03|3I.k 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwf.E HdLf.E 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 4a10 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|54e4",
13466			"America/Danmarkshavn|LMT -03 -02 GMT|1e.E 30 20 0|01212121212121212121212121212121213|-2a5WJ.k 2z5fJ.k 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 DC0|8",
13467			"America/Dawson_Creek|PST PDT PWT PPT MST|80 70 70 70 70|0102301010101010101010101010101010101010101010101010101014|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 ML0|12e3",
13468			"America/Dawson|YST YDT YWT YPT YDDT PST PDT MST|90 80 80 80 70 80 70 70|01010230405656565656565656565656565656565656565656565656565656565656565656565656565656565657|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 jrA0 fNd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0|13e2",
13469			"America/Denver|MST MDT MWT MPT|70 60 60 60|01010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 11B0 1qL0 WN0 mn0 Ord0 8x20 ix0 LCN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5",
13470			"America/Detroit|LMT CST EST EWT EPT EDT|5w.b 60 50 40 40 40|0123425252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2Cgir.N peqr.N 156L0 8x40 iv0 6fd0 11z0 JxX1 SMX 1cN0 1cL0 aW10 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e5",
13471			"America/Edmonton|LMT MST MDT MWT MPT|7x.Q 70 60 60 60|0121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2yd4q.8 shdq.8 1in0 17d0 hz0 2dB0 1fz0 1a10 11z0 1qN0 WL0 1qN0 11z0 IGN0 8x20 ix0 3NB0 11z0 XQp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|10e5",
13472			"America/Eirunepe|LMT -05 -04|4D.s 50 40|0121212121212121212121212121212121|-2glvk.w HdLk.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0 yTd0 d5X0|31e3",
13473			"America/El_Salvador|LMT CST CDT|5U.M 60 50|012121|-1XiG3.c 2Fvc3.c WL0 1qN0 WL0|11e5",
13474			"America/Tijuana|LMT MST PST PDT PWT PPT|7M.4 70 80 70 70 70|012123245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQE0 4PX0 8mM0 8lc0 SN0 1cL0 pHB0 83r0 zI0 5O10 1Rz0 cOO0 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 BUp0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|20e5",
13475			"America/Fort_Nelson|PST PDT PWT PPT MST|80 70 70 70 70|01023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010104|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0|39e2",
13476			"America/Fort_Wayne|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010101023010101010101010101040454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 QI10 Db0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 5Tz0 1o10 qLb0 1cL0 1cN0 1cL0 1qhd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
13477			"America/Fortaleza|LMT -03 -02|2y 30 20|0121212121212121212121212121212121212121|-2glxq HdLq 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 5z0 2mN0 On0|34e5",
13478			"America/Glace_Bay|LMT AST ADT AWT APT|3X.M 40 30 30 30|012134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsI0.c CwO0.c 1in0 UGp0 8x50 iu0 iq10 11z0 Jg10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3",
13479			"America/Godthab|LMT -03 -02|3q.U 30 20|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5Ux.4 2z5dx.4 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e3",
13480			"America/Goose_Bay|NST NDT NST NDT NWT NPT AST ADT ADDT|3u.Q 2u.Q 3u 2u 2u 2u 40 30 20|01023232323232324523232323232323232323232323232323232323232676767676767676767676767676767676767676767676867676
134807676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-25TSt.8 1in0 DXb0 2HbX.8 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 S10 g0u 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|76e2",
13481			"America/Grand_Turk|KMT EST EDT AST|57.a 50 40 40|01212121212121212121212121212121212121212121212121212121212121212121212121232121212121212121212121212121212121212121|-2l1uQ.O 2HHBQ.O 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 5Ip0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e2",
13482			"America/Guatemala|LMT CST CDT|62.4 60 50|0121212121|-24KhV.U 2efXV.U An0 mtd0 Nz0 ifB0 17b0 zDB0 11z0|13e5",
13483			"America/Guayaquil|QMT -05 -04|5e 50 40|0121|-1yVSK 2uILK rz0|27e5",
13484			"America/Guyana|LMT -0345 -03 -04|3Q.E 3J 30 40|0123|-2dvU7.k 2r6LQ.k Bxbf|80e4",
13485			"America/Halifax|LMT AST ADT AWT APT|4e.o 40 30 30 30|0121212121212121212121212121212121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsHJ.A xzzJ.A 1db0 3I30 1in0 3HX0 IL0 1E10 ML0 1yN0 Pb0 1Bd0 Mn0 1Bd0 Rz0 1w10 Xb0 1w10 LX0 1w10 Xb0 1w10 Lz0 1C10 Jz0 1E10 OL0 1yN0 Un0 1qp0 Xb0 1qp0 11X0 1w10 Lz0 1HB0 LX0 1C10 FX0 1w10 Xb0 1qp0 Xb0 1BB0 LX0 1td0 Xb0 1qp0 Xb0 Rf0 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 6i10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4",
13486			"America/Havana|HMT CST CDT|5t.A 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Meuu.o 72zu.o ML0 sld0 An0 1Nd0 Db0 1Nd0 An0 6Ep0 An0 1Nd0 An0 JDd0 Mn0 1Ap0 On0 1fd0 11X0 1qN0 WL0 1wp0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 14n0 1ld0 14L0 1kN0 15b0 1kp0 1cL0 1cN0 1fz0 1a10 1fz0 1fB0 11z0 14p0 1nX0 11B0 1nX0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 1a10 1in0 1a10 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 17c0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 11A0 6i00 Rc0 1wo0 U00 1tA0 Rc0 1wo0 U00 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5",
13487			"America/Hermosillo|LMT MST CST PST MDT|7n.Q 70 60 80 60|0121212131414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0|64e4",
13488			"America/Indiana/Knox|CST CDT CWT CPT EST|60 50 50 50 50|0101023010101010101010101010101010101040101010101010101010101010101010101010101010101010141010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 3Cn0 8wp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 z8o0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
13489			"America/Indiana/Marengo|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010104545454545414545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 dyN0 11z0 6fd0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1e6p0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
13490			"America/Indiana/Petersburg|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010104010101010101010101010141014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 3Fb0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 19co0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
13491			"America/Indiana/Tell_City|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010401054541010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 8wn0 1cN0 1cL0 1cN0 1cK0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
13492			"America/Indiana/Vevay|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010102304545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 kPB0 Awn0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1lnd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
13493			"America/Indiana/Vincennes|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
13494			"America/Indiana/Winamac|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010101010454541054545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1za0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
13495			"America/Inuvik|-00 PST PDDT MST MDT|0 80 60 70 60|0121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-FnA0 tWU0 1fA0 wPe0 2pz0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|35e2",
13496			"America/Iqaluit|-00 EWT EPT EST EDDT EDT CST CDT|0 40 40 50 30 40 60 50|01234353535353535353535353535353535353535353567353535353535353535353535353535353535353535353535353535353535353535353535353|-16K00 7nX0 iv0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|67e2",
13497			"America/Jamaica|KMT EST EDT|57.a 50 40|0121212121212121212121|-2l1uQ.O 2uM1Q.O 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0|94e4",
13498			"America/Juneau|PST PWT PPT PDT YDT YST AKST AKDT|80 70 70 70 80 90 90 80|01203030303030303030303030403030356767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cM0 1cM0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|33e3",
13499			"America/Kentucky/Louisville|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101010102301010101010101010101010101454545454545414545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 3Fd0 Nb0 LPd0 11z0 RB0 8x30 iw0 1nX1 e0X 9vd0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 xz0 gso0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
13500			"America/Kentucky/Monticello|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 SWp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
13501			"America/La_Paz|CMT BST -04|4w.A 3w.A 40|012|-1x37r.o 13b0|19e5",
13502			"America/Lima|LMT -05 -04|58.A 50 40|0121212121212121|-2tyGP.o 1bDzP.o zX0 1aN0 1cL0 1cN0 1cL0 1PrB0 zX0 1O10 zX0 6Gp0 zX0 98p0 zX0|11e6",
13503			"America/Los_Angeles|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 5Wp1 1VaX 3dA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6",
13504			"America/Maceio|LMT -03 -02|2m.Q 30 20|012121212121212121212121212121212121212121|-2glxB.8 HdLB.8 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 8Q10 WL0 1tB0 5z0 2mN0 On0|93e4",
13505			"America/Managua|MMT CST EST CDT|5J.c 60 50 50|0121313121213131|-1quie.M 1yAMe.M 4mn0 9Up0 Dz0 1K10 Dz0 s3F0 1KH0 DB0 9In0 k8p0 19X0 1o30 11y0|22e5",
13506			"America/Manaus|LMT -04 -03|40.4 40 30|01212121212121212121212121212121|-2glvX.U HdKX.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0|19e5",
13507			"America/Martinique|FFMT AST ADT|44.k 40 30|0121|-2mPTT.E 2LPbT.E 19X0|39e4",
13508			"America/Matamoros|LMT CST CDT|6E 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|45e4",
13509			"America/Mazatlan|LMT MST CST PST MDT|75.E 70 60 80 60|0121212131414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|44e4",
13510			"America/Menominee|CST CDT CWT CPT EST|60 50 50 50 50|01010230101041010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 LCN0 1fz0 6410 9Jb0 1cM0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|85e2",
13511			"America/Merida|LMT CST EST CDT|5W.s 60 50 50|0121313131313131313131313131313131313131313131313131313131313131313131313131313131313131|-1UQG0 2q2o0 2hz0 wu30 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|11e5",
13512			"America/Metlakatla|PST PWT PPT PDT AKST AKDT|80 70 70 70 90 80|01203030303030303030303030303030304545450454545454545454545454545454545454545454|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1hU10 Rd0 1zb0 Op0 1zb0 Op0 1zb0 uM0 jB0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2",
13513			"America/Mexico_City|LMT MST CST CDT CWT|6A.A 70 60 50 50|012121232324232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 gEn0 TX0 3xd0 Jb0 6zB0 SL0 e5d0 17b0 1Pff0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|20e6",
13514			"America/Miquelon|LMT AST -03 -02|3I.E 40 30 20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2mKkf.k 2LTAf.k gQ10 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2",
13515			"America/Moncton|EST AST ADT AWT APT|50 40 30 30 30|012121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsH0 CwN0 1in0 zAo0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1K10 Lz0 1zB0 NX0 1u10 Wn0 S20 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14n1 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 ReX 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|64e3",
13516			"America/Monterrey|LMT CST CDT|6F.g 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|41e5",
13517			"America/Montevideo|LMT MMT -04 -03 -0330 -0230 -02 -0130|3I.P 3I.P 40 30 3u 2u 20 1u|012343434343434343434343435353636353636375363636363636363636363636363636363636363636363|-2tRUf.9 sVc0 8jcf.9 1db0 1dcu 1cLu 1dcu 1cLu ircu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu WLu 1fAu 1cLu 1o0u 11zu NAu 3jXu zXu Dq0u 19Xu pcu jz0 cm10 19X0 6tB0 1fbu 3o0u jX0 4vB0 xz0 3Cp0 mmu 1a10 IMu Db0 4c10 uL0 1Nd0 An0 1SN0 uL0 mp0 28L0 iPB0 un0 1SN0 xz0 1zd0 Lz0 1zd0 Rb0 1zd0 On0 1wp0 Rb0 s8p0 1fB0 1ip0 11z0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0|17e5",
13518			"America/Toronto|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101012301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 11Wu 1nzu 1fD0 WJ0 1wr0 Nb0 1Ap0 On0 1zd0 On0 1wp0 TX0 1tB0 TX0 1tB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 4kM0 8x40 iv0 1o10 11z0 1nX0 11z0 1o10 11z0 1o10 1qL0 11D0 1nX0 11B0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e5",
13519			"America/Nassau|LMT EST EDT|59.u 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2kNuO.u 26XdO.u 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|24e4",
13520			"America/New_York|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 11B0 1qL0 1a10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6",
13521			"America/Nipigon|EST EDT EWT EPT|50 40 40 40|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 Rnb0 3je0 8x40 iv0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|16e2",
13522			"America/Nome|NST NWT NPT BST BDT YST AKST AKDT|b0 a0 a0 b0 a0 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cl0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|38e2",
13523			"America/Noronha|LMT -02 -01|29.E 20 10|0121212121212121212121212121212121212121|-2glxO.k HdKO.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|30e2",
13524			"America/North_Dakota/Beulah|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
13525			"America/North_Dakota/Center|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
13526			"America/North_Dakota/New_Salem|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
13527			"America/Ojinaga|LMT MST CST CDT MDT|6V.E 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 de
13527L0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3",
13528			"America/Pangnirtung|-00 AST AWT APT ADDT ADT EDT EST CST CDT|0 40 30 30 20 30 40 50 60 50|012314151515151515151515151515151515167676767689767676767676767676767676767676767676767676767676767676767676767676767676767|-1XiM0 PnG0 8x50 iu0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1o00 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2",
13529			"America/Paramaribo|LMT PMT PMT -0330 -03|3E.E 3E.Q 3E.A 3u 30|01234|-2nDUj.k Wqo0.c qanX.I 1yVXN.o|24e4",
13530			"America/Phoenix|MST MDT MWT|70 60 60|01010202010|-261r0 1nX0 11B0 1nX0 SgN0 4Al1 Ap0 1db0 SWqX 1cL0|42e5",
13531			"America/Port-au-Prince|PPMT EST EDT|4N 50 40|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-28RHb 2FnMb 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14q0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 i6n0 1nX0 11B0 1nX0 d430 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 3iN0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5",
13532			"America/Rio_Branco|LMT -05 -04|4v.c 50 40|01212121212121212121212121212121|-2glvs.M HdLs.M 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0 d5X0|31e4",
13533			"America/Porto_Velho|LMT -04 -03|4f.A 40 30|012121212121212121212121212121|-2glvI.o HdKI.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|37e4",
13534			"America/Puerto_Rico|AST AWT APT|40 30 30|0120|-17lU0 7XT0 iu0|24e5",
13535			"America/Punta_Arenas|SMT -05 -04 -03|4G.K 50 40 30|0102021212121212121232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 blz0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|",
13536			"America/Rainy_River|CST CDT CWT CPT|60 50 50 50|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TQ0 1in0 Rnb0 3je0 8x30 iw0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|842",
13537			"America/Rankin_Inlet|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313131313131313131313131313131313131313131313131313131313131313131|-vDc0 keu0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e2",
13538			"America/Recife|LMT -03 -02|2j.A 30 20|0121212121212121212121212121212121212121|-2glxE.o HdLE.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|33e5",
13539			"America/Regina|LMT MST MDT MWT MPT CST|6W.A 70 60 60 60 60|012121212121212121212121341212121212121212121212121215|-2AD51.o uHe1.o 1in0 s2L0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 66N0 1cL0 1cN0 19X0 1fB0 1cL0 1fB0 1cL0 1cN0 1cL0 M30 8x20 ix0 1ip0 1cL0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 3NB0 1cL0 1cN0|19e4",
13540			"America/Resolute|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313431313131313131313131313131313131313131313131313131313131313131|-SnA0 GWS0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|229",
13541			"America/Santarem|LMT -04 -03|3C.M 40 30|0121212121212121212121212121212|-2glwl.c HdLl.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0|21e4",
13542			"America/Santiago|SMT -05 -04 -03|4G.K 50 40 30|010202121212121212321232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 9Bz0 jb0 1oN0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0|62e5",
13543			"America/Santo_Domingo|SDMT EST EDT -0430 AST|4E 50 40 4u 40|01213131313131414|-1ttjk 1lJMk Mn0 6sp0 Lbu 1Cou yLu 1RAu wLu 1QMu xzu 1Q0u xXu 1PAu 13jB0 e00|29e5",
13544			"America/Sao_Paulo|LMT -03 -02|36.s 30 20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwR.w HdKR.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 pTd0 PX0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|20e6",
13545			"America/Scoresbysund|LMT -02 -01 +00|1r.Q 20 10 0|0121323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2a5Ww.8 2z5ew.8 1a00 1cK0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|452",
13546			"America/Sitka|PST PWT PPT PDT YST AKST AKDT|80 70 70 70 90 90 80|01203030303030303030303030303030345656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|90e2",
13547			"America/St_Johns|NST NDT NST NDT NWT NPT NDDT|3u.Q 2u.Q 3u 2u 2u 2u 1u|01010101010101010101010101010101010102323232323232324523232323232323232323232323232323232323232323232323232323232323232323232323232323232326232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-28oit.8 14L0 1nB0 1in0 1gm0 Dz0 1JB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1fB0 19X0 1fB0 19X0 10O0 eKX.8 19X0 1iq0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4",
13548			"America/Swift_Current|LMT MST MDT MWT MPT CST|7b.k 70 60 60 60 60|012134121212121212121215|-2AD4M.E uHdM.E 1in0 UGp0 8x20 ix0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 isN0 1cL0 3Cp0 1cL0 1cN0 11z0 1qN0 WL0 pMp0|16e3",
13549			"America/Tegucigalpa|LMT CST CDT|5M.Q 60 50|01212121|-1WGGb.8 2ETcb.8 WL0 1qN0 WL0 GRd0 AL0|11e5",
13550			"America/Thule|LMT AST ADT|4z.8 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5To.Q 31NBo.Q 1cL0 1cN0 1cL0 1fB0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|656",
13551			"America/Thunder_Bay|CST EST EWT EPT EDT|60 50 40 40 40|0123141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-2q5S0 1iaN0 8x40 iv0 XNB0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4",
13552			"America/Vancouver|PST PDT PWT PPT|80 70 70 70|0102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TO0 1in0 UGp0 8x10 iy0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5",
13553			"America/Whitehorse|YST YDT YWT YPT YDDT PST PDT MST|90 80 80 80 70 80 70 70|01010230405656565656565656565656565656565656565656565656565656565656565656565656565656565657|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 3NA0 vrd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0|23e3",
13554			"America/Winnipeg|CST CDT CWT CPT|60 50 50 50|010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aIi0 WL0 3ND0 1in0 Jap0 Rb0 aCN0 8x30 iw0 1tB0 11z0 1ip0 11z0 1o10 11z0 1o10 11z0 1rd0 10L0 1op0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 1cL0 1cN0 11z0 6i10 WL0 6i10 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|66e4",
13555			"America/Yakutat|YST YWT YPT YDT AKST AKDT|90 80 80 80 90 80|01203030303030303030303030303030304545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-17T10 8x00 iz0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cn0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|642",
13556			"America/Yellowknife|-00 MST MWT MPT MDDT MDT|0 70 60 60 50 60|012314151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151|-1pdA0 hix0 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3",
13557			"Antarctica/Casey|-00 +08 +11|0 -80 -b0|01212121|-2q00 1DjS0 T90 40P0 KL0 blz0 3m10|10",
13558			"Antarctica/Davis|-00 +07 +05|0 -70 -50|01012121|-vyo0 iXt0 alj0 1D7v0 VB0 3Wn0 KN0|70",
13559			"Antarctica/DumontDUrville|-00 +10|0 -a0|0101|-U0o0 cfq0 bFm0|80",
13560			"Antarctica/Macquarie|AEST AEDT -00 +11|-a0 -b0 0 -b0|0102010101010101010101010101010101010101010101010101010101010101010101010101010101010101013|-29E80 19X0 4SL0 1ayy0 Lvs0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0|1",
13561			"Antarctica/Mawson|-00 +06 +05|0 -60 -50|012|-CEo0 2fyk0|60",
13562			"Pacific/Auckland|NZMT NZST NZST NZDT|-bu -cu -c0 -d0|010202020202
1356202020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1GCVu Lz0 1tB0 11zu 1o0u 11zu 1o0u 11zu 1o0u 14nu 1lcu 14nu 1lcu 1lbu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1qLu WMu 1qLu 11Au 1n1bu IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|14e5",
13563			"Antarctica/Palmer|-00 -03 -04 -02|0 30 40 20|01212121212131212121212121212121212121212121212121212121212121212121212
1356312121212121|-cao0 nD0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 jsN0 14N0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|40",
13564			"Antarctica/Rothera|-00 -03|0 30|01|gOo0|130",
13565			"Antarctica/Syowa|-00 +03|0 -30|01|-vs00|20",
13566			"Antarctica/Troll|-00 +00 +02|0 0 -20|01212121212121212121212121212121212121212121212121212121212121212121|1puo0 hd0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|40",
13567			"Antarctica/Vostok|-00 +06|0 -60|01|-tjA0|25",
13568			"Europe/Oslo|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2awM0 Qm0 W6o0 5pf0 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 wJc0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1qM0 WM0 zpc0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e4",
13569			"Asia/Riyadh|LMT +03|-36.Q -30|01|-TvD6.Q|57e5",
13570			"Asia/Almaty|LMT +05 +06 +07|-57.M -50 -60 -70|012323232323232323232321232323232323232323232323232|-1Pc57.M eUo7.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|15e5",
13571			"Asia/Amman|LMT EET EEST|-2n.I -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1yW2n.I 1HiMn.I KL0 1oN0 11b0 1oN0 11b0 1pd0 1dz0 1cp0 11b0 1op0 11b0 fO10 1db0 1e10 1cL0 1cN0 1cL0 1cN0 1fz0 1pd0 10n0 1ld0 14n0 1hB0 15b0 1ip0 19X0 1cN0 1cL0 1cN0 17b0 1ld0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1So0 y00 1fc0 1dc0 1co0 1dc0 1cM0 1cM0 1cM0 1o00 11A0 1lc0 17c0 1cM0 1cM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|25e5",
13572			"Asia/Anadyr|LMT +12 +13 +14 +11|-bN.U -c0 -d0 -e0 -b0|01232121212121212121214121212121212121212121212121212121212141|-1PcbN.U eUnN.U 23CL0 1db0 2q10 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|13e3",
13573			"Asia/Aqtau|LMT +04 +05 +06|-3l.4 -40 -50 -60|012323232323232323232123232312121212121212121212|-1Pc3l.4 eUnl.4 24PX0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|15e4",
13574			"Asia/Aqtobe|LMT +04 +05 +06|-3M.E -40 -50 -60|0123232323232323232321232323232323232323232323232|-1Pc3M.E eUnM.E 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|27e4",
13575			"Asia/Ashgabat|LMT +04 +05 +06|-3R.w -40 -50 -60|0123232323232323232323212|-1Pc3R.w eUnR.w 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0|41e4",
13576			"Asia/Atyrau|LMT +03 +05 +06 +04|-3r.I -30 -50 -60 -40|01232323232323232323242323232323232324242424242|-1Pc3r.I eUor.I 24PW0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 2sp0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|",
13577			"Asia/Baghdad|BMT +03 +04|-2V.A -30 -40|012121212121212121212121212121212121212121212121212121|-26BeV.A 2ACnV.A 11b0 1cp0 1dz0 1dd0 1db0 1cN0 1cp0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1de0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0|66e5",
13578			"Asia/Qatar|LMT +04 +03|-3q.8 -40 -30|012|-21Jfq.8 27BXq.8|96e4",
13579			"Asia/Baku|LMT +03 +04 +05|-3j.o -30 -40 -50|01232323232323232323232123232323232323232323232323232323232323232|-1Pc3j.o 1jUoj.o WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 9Je0 1o00 11z0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5",
13580			"Asia/Bangkok|BMT +07|-6G.4 -70|01|-218SG.4|15e6",
13581			"Asia/Barnaul|LMT +06 +07 +08|-5z -60 -70 -80|0123232323232323232323212323232321212121212121212121212121212121212|-21S5z pCnz 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 p90 LE0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|",
13582			"Asia/Beirut|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-21aq0 1on0 1410 1db0 19B0 1in0 1ip0 WL0 1lQp0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 q6N0 En0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1op0 11b0 dA10 17b0 1iN0 17b0 1iN0 17b0 1iN0 17b0 1vB0 SL0 1mp0 13z0 1iN0 17b0 1iN0 17b0 1jd0 12n0 1a10 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0|22e5",
13583			"Asia/Bishkek|LMT +05 +06 +07|-4W.o -50 -60 -70|012323232323232323232321212121212121212121212121212|-1Pc4W.o eUnW.o 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2e00 1tX0 17b0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1cPu 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0|87e4",
13584			"Asia/Brunei|LMT +0730 +08|-7D.E -7u -80|012|-1KITD.E gDc9.E|42e4",
13585			"Asia/Kolkata|MMT IST +0630|-5l.a -5u -6u|012121|-2zOtl.a 1r2LP.a 1un0 HB0 7zX0|15e6",
13586			"Asia/Chita|LMT +08 +09 +10|-7x.Q -80 -90 -a0|012323232323232323232321232323232323232323232323232323232323232312|-21Q7x.Q pAnx.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3re0|33e4",
13587			"Asia/Choibalsan|LMT +07 +08 +10 +09|-7C -70 -80 -a0 -90|0123434343434343434343434343434343434343434343424242|-2APHC 2UkoC cKn0 1da0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 3Db0 h1f0 1cJ0 1cP0 1cJ0|38e3",
13588			"Asia/Shanghai|CST CDT|-80 -90|01010101010101010101010101010|-23uw0 18n0 OjB0 Rz0 11d0 1wL0 A10 8HX0 1G10 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 aL0 1tU30 Rb0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0|23e6",
13589			"Asia/Colombo|MMT +0530 +06 +0630|-5j.w -5u -60 -6u|01231321|-2zOtj.w 1rFbN.w 1zzu 7Apu 23dz0 11zu n3cu|22e5",
13590			"Asia/Dhaka|HMT +0630 +0530 +06 +07|-5R.k -6u -5u -60 -70|0121343|-18LFR.k 1unn.k HB0 m6n0 2kxbu 1i00|16e6",
13591			"Asia/Damascus|LMT EET EEST|-2p.c -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-21Jep.c Hep.c 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1xRB0 11X0 1oN0 10L0 1pB0 11b0 1oN0 10L0 1mp0 13X0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 Nb0 1AN0 Nb0 bcp0 19X0 1gp0 19X0 3ld0 1xX0 Vd0 1Bz0 Sp0 1vX0 10p0 1dz0 1cN0 1cL0 1db0 1db0 1g10 1an0 1ap0 1db0 1fd0 1db0 1cN0 1db0 1dd0 1db0 1cp0 1dz0 1c10 1dX0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 19z0 1fB0 1qL0 11B0 1on0 Wp0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0|26e5",
13592			"Asia/Dili|LMT +08 +09|-8m.k -80 -90|01212|-2le8m.k 1dnXm.k 1nfA0 Xld0|19e4",
13593			"Asia/Dubai|LMT +04|-3F.c -40|01|-21JfF.c|39e5",
13594			"Asia/Dushanbe|LMT +05 +06 +07|-4z.c -50 -60 -70|012323232323232323232321|-1Pc4z.c eUnz.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2hB0|76e4",
13595			"Asia/Famagusta|LMT EET EEST +03|-2f.M -20 -30 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212312
13595121212121212121212121212121212121212121|-1Vc2f.M 2a3cf.M 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|",
13596			"Asia/Gaza|EET EEST IST IDT|-20 -30 -20 -30|0101010101010101010101010101010123232323232323232323232323232320101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 bXd0 gM0 8Q00 IM0 1wM0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 11z0 1o10 14o0 1lA1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 WN0 1qL0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1rc0|18e5",
13597			"Asia/Hebron|EET EEST IST IDT|-20 -30 -20 -30|010101010101010101010101010101012323232323232323232323232323232010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 bXd0 gM0 8Q00 IM0 1wM0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 12L0 1mN0 14o0 1lc0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 WN0 1qL0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1rc0|25e4",
13598			"Asia/Ho_Chi_Minh|LMT PLMT +07 +08 +09|-76.E -76.u -70 -80 -90|0123423232|-2yC76.E bK00.a 1h7b6.u 5lz0 18o0 3Oq0 k5b0 aW00 BAM0|90e5",
13599			"Asia/Hong_Kong|LMT HKT HKST HKWT JST|-7A.G -80 -90 -8u -90|0123412121212121212121212121212121212121212121212121212121212121212121|-2CFH0 1taO0 Hc0 xUu 9tBu 11z0 1tDu Rc0 1wo0 11A0 1cM0 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1nX0 U10 1tz0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|73e5",
13600			"Asia/Hovd|LMT +06 +07 +08|-66.A -60 -70 -80|012323232323232323232323232323232323232323232323232|-2APG6.A 2Uko6.A cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|81e3",
13601			"Asia/Irkutsk|IMT +07 +08 +09|-6V.5 -70 -80 -90|01232323232323232323232123232323232323232323232323232323232323232|-21zGV.5 pjXV.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4",
13602			"Europe/Istanbul|IMT EET EEST +03 +04|-1U.U -20 -30 -30 -40|0121212121212121212121212121212121212121212121234312121212121212121212121212121212121212121212121212121212121212123|-2ogNU.U dzzU.U 11b0 8tB0 1on0 1410 1db0 19B0 1in0 3Rd0 Un0 1oN0 11b0 zSN0 CL0 mp0 1Vz0 1gN0 8yn0 1yp0 ML0 1kp0 17b
136020 1ip0 17b0 1fB0 19X0 1ip0 19X0 1ip0 17b0 qdB0 38L0 1jd0 Tz0 l6O0 11A0 WN0 1qL0 TB0 1tX0 U10 1tz0 11B0 1in0 17d0 z90 cne0 pb0 2Cp0 1800 14o0 1dc0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1a00 1fA0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WO0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 15w0|13e6",
13603			"Asia/Jakarta|BMT +0720 +0730 +09 +08 WIB|-77.c -7k -7u -90 -80 -70|01232425|-1Q0Tk luM0 mPzO 8vWu 6kpu 4PXu xhcu|31e6",
13604			"Asia/Jayapura|LMT +09 +0930 WIT|-9m.M -90 -9u -90|0123|-1uu9m.M sMMm.M L4nu|26e4",
13605			"Asia/Jerusalem|JMT IST IDT IDDT|-2k.E -20 -30 -40|012121212121321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-26Bek.E SyMk.E 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 3LB0 Em0 or0 1cn0 1dB0 16n0 10O0 1ja0 1tC0 14o0 1cM0 1a00 11A0 1Na0 An0 1MP0 AJ0 1Kp0 LC0 1oo0 Wl0 EQN0 Db0 1fB0 Rb0 bXd0 gM0 8Q00 IM0 1wM0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 1hB0 1dX0 1ep0 1aL0 1eN0 17X0 1nf0 11z0 1tB0 19W0 1e10 17b0 1ep0 1gL0 18N0 1fz0 1eN0 17b0 1gq0 1gn0 19d0 1dz0 1c10 17X0 1hB0 1gn0 19d0 1dz0 1c10 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0|81e4",
13606			"Asia/Kabul|+04 +0430|-40 -4u|01|-10Qs0|46e5",
13607			"Asia/Kamchatka|LMT +11 +12 +13|-ay.A -b0 -c0 -d0|012323232323232323232321232323232323232323232323232323232323212|-1SLKy.A ivXy.A 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|18e4",
13608			"Asia/Karachi|LMT +0530 +0630 +05 PKT PKST|-4s.c -5u -6u -50 -50 -60|012134545454|-2xoss.c 1qOKW.c 7zX0 eup0 LqMu 1fy00 1cL0 dK10 11b0 1610 1jX0|24e6",
13609			"Asia/Urumqi|LMT +06|-5O.k -60|01|-1GgtO.k|32e5",
13610			"Asia/Kathmandu|LMT +0530 +0545|-5F.g -5u -5J|012|-21JhF.g 2EGMb.g|12e5",
13611			"Asia/Khandyga|LMT +08 +09 +10 +11|-92.d -80 -90 -a0 -b0|0123232323232323232323212323232323232323232323232343434343434343432|-21Q92.d pAp2.d 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 qK0 yN0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|66e2",
13612			"Asia/Krasnoyarsk|LMT +06 +07 +08|-6b.q -60 -70 -80|01232323232323232323232123232323232323232323232323232323232323232|-21Hib.q prAb.q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5",
13613			"Asia/Kuala_Lumpur|SMT +07 +0720 +0730 +09 +08|-6T.p -70 -7k -7u -90 -80|0123435|-2Bg6T.p 17anT.p l5XE 17bO 8Fyu 1so1u|71e5",
13614			"Asia/Kuching|LMT +0730 +08 +0820 +09|-7l.k -7u -80 -8k -90|0123232323232323242|-1KITl.k gDbP.k 6ynu AnE 1O0k AnE 1NAk AnE 1NAk AnE 1NAk AnE 1O0k AnE 1NAk AnE pAk 8Fz0|13e4",
13615			"Asia/Macau|LMT CST +09 +10 CDT|-7y.a -80 -90 -a0 -90|012323214141414141414141414141414141414141414141414141414141414141414141|-2CFHy.a 1uqKy.a PX0 1kn0 15B0 11b0 4Qq0 1oM0 11c0 1ko0 1u00 11A0 1cM0 11c0 1o00 11A0 1o00 11A0 1oo0 1400 1o00 11A0 1o00 U00 1tA0 U00 1wo0 Rc0 1wru U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cK0 1cO0 1cK0 1cO0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|57e4",
13616			"Asia/Magadan|LMT +10 +11 +12|-a3.c -a0 -b0 -c0|012323232323232323232321232323232323232323232323232323232323232312|-1Pca3.c eUo3.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Cq0|95e3",
13617			"Asia/Makassar|LMT MMT +08 +09 WITA|-7V.A -7V.A -80 -90 -80|01234|-21JjV.A vfc0 myLV.A 8ML0|15e5",
13618			"Asia/Manila|PST PDT JST|-80 -90 -90|010201010|-1kJI0 AL0 cK10 65X0 mXB0 vX0 VK10 1db0|24e6",
13619			"Asia/Nicosia|LMT EET EEST|-2d.s -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Vc2d.s 2a3cd.s 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|32e4",
13620			"Asia/Novokuznetsk|LMT +06 +07 +08|-5M.M -60 -70 -80|012323232323232323232321232323232323232323232323232323232323212|-1PctM.M eULM.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|55e4",
13621			"Asia/Novosibirsk|LMT +06 +07 +08|-5v.E -60 -70 -80|0123232323232323232323212323212121212121212121212121212121212121212|-21Qnv.E pAFv.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 ml0 Os0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 4eN0|15e5",
13622			"Asia/Omsk|LMT +05 +06 +07|-4R.u -50 -60 -70|01232323232323232323232123232323232323232323232323232323232323232|-224sR.u pMLR.u 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|12e5",
13623			"Asia/Oral|LMT +03 +05 +06 +04|-3p.o -30 -50 -60 -40|01232323232323232424242424242424242424242424242|-1Pc3p.o eUop.o 23CK0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 1cM0 IM0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|27e4",
13624			"Asia/Pontianak|LMT PMT +0730 +09 +08 WITA WIB|-7h.k -7h.k -7u -90 -80 -80 -70|012324256|-2ua7h.k XE00 munL.k 8Rau 6kpu 4PXu xhcu Wqnu|23e4",
13625			"Asia/Pyongyang|LMT KST JST KST|-8n -8u -90 -90|012313|-2um8n 97XR 1lTzu 2Onc0 6BA0|29e5",
13626			"Asia/Qostanay|LMT +04 +05 +06|-4e.s -40 -50 -60|012323232323232323232123232323232323232323232323|-1Pc4e.s eUoe.s 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|",
13627			"Asia/Qyzylorda|LMT +04 +05 +06|-4l.Q -40 -50 -60|01232323232323232323232323232323232323232323232|-1Pc4l.Q eUol.Q 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 3ao0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 zQl0|73e4",
13628			"Asia/Rangoon|RMT +0630 +09|-6o.L -6u -90|0121|-21Jio.L SmnS.L 7j9u|48e5",
13629			"Asia/Sakhalin|LMT +09 +11 +12 +10|-9u.M -90 -b0 -c0 -a0|01232323232323232323232423232323232424242424242424242424242424242|-2AGVu.M 1BoMu.M 1qFa0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 2pB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|58e4",
13630			"Asia/Samarkand|LMT +04 +05 +06|-4r.R -40 -50 -60|01232323232323232323232|-1Pc4r.R eUor.R 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|36e4",
13631			"Asia/Seoul|LMT KST JST KST KDT KDT|-8r.Q -8u -90 -90 -a0 -9u|012343434343151515151515134343|-2um8r.Q 97XV.Q 1m1zu 6CM0 Fz0 1kN0 14n0 1kN0 14L0 1zd0 On0 69B0 2I0u OL0 1FB0 Rb0 1qN0 TX0 1tB0 TX0 1tB0 TX0 1tB0 TX0 2ap0 12FBu 11A0 1o00 11A0|23e6",
13632			"Asia/Srednekolymsk|LMT +10 +11 +12|-ae.Q -a0 -b0 -c0|01232323232323232323232123232323232323232323232323232323232323232|-1Pcae.Q eUoe.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|35e2",
13633			"Asia/Taipei|CST JST CDT|-80 -90 -90|01020202020202020202020202020202020202020|-1iw80 joM0 1yo0 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 10N0 1BX0 10p0 1pz0 10p0 1pz0 10p0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1BB0 ML0 1Bd0 ML0 uq10 1db0 1cN0 1db0 97B0 AL0|74e5",
13634			"Asia/Tashkent|LMT +05 +06 +07|-4B.b -50 -60 -70|012323232323232323232321|-1Pc4B.b eUnB.b 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0|23e5",
13635			"Asia/Tbilisi|TBMT +03 +04 +05|-2X.b -30 -40 -50|0123232323232323232323212121232323232323232323212|-1Pc2X.b 1jUnX.b WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cK0 1cL0 1cN0 1cL0 1cN0 2pz0 1cL0 1fB0 3Nz0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 An0 Os0 WM0|11e5",
13636			"Asia/Tehran|LMT TMT +0330 +04 +05 +0430|-3p.I -3p.I -3u -40 -50 -4u|01234325252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2btDp.I 1d3c0 1huLT.I TXu 1pz0 sN0 vAu 1cL0 1dB0 1en0 pNB0 UL0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 64p0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0|14e6",
13637			"Asia/Thimphu|LMT +0530 +06|-5W.A -5u -60|012|-Su5W.A 1BGMs.A|79e3",
13638			"Asia/Tokyo|JST JDT|-90 -a0|010101010|-QJJ0 Rc0 1lc0 14o0 1zc0 Oo0 1zc0 Oo0|38e6",
13639			"Asia/Tomsk|LMT +06 +07 +08|-5D.P -60 -70 -80|0123232323232323232323212323232323232323232323212121212121212121212|-21NhD.P pxzD.P 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 co0 1bB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Qp0|10e5",
13640			"Asia/Ulaanbaatar|LMT +07 +08 +09|-77.w -70 -80 -90|012323232323232323232323232323232323232323232323232|-2APH7.w 2Uko7.w cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|12e5",
13641			"Asia/Ust-Nera|LMT +08 +09 +12 +11 +10|-9w.S -80 -90 -c0 -b0 -a0|012343434343434343434345434343434343434343434343434343434343434345|-21Q9w.S pApw.S 23CL0 1d90 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|65e2",
13642			"Asia/Vladivostok|LMT +09 +10 +11|-8L.v -90 -a0 -b0|01232323232323232323232123232323232323232323232323232323232323232|-1SJIL.v itXL.v 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4",
13643			"Asia/Yakutsk|LMT +08 +09 +10|-8C.W -80 -90 -a0|01232323232323232323232123232323232323232323232323232323232323232|-21Q8C.W pAoC.W 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|28e4",
13644			"Asia/Yekaterinburg|LMT PMT +04 +05 +06|-42.x -3J.5 -40 -50 -60|012343434343434343434343234343434343434343434343434343434343434343|-2ag42.x 7mQh.s qBvJ.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|14e5",
13645			"Asia/Yerevan|LMT +03 +04 +05|-2W -30 -40 -50|0123232323232323232323212121212323232323232323232323232323232|-1Pc2W 1jUnW WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 4RX0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|13e5",
13646			"Atlantic/Azores|HMT -02 -01 +00 WET|1S.w 20 10 0 0|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121232323232323232323232323232323234323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2ldW0 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|25e4",
13647			"Atlantic/Bermuda|LMT AST ADT|4j.i 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1BnRE.G 1LTbE.G 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e3",
13648			"Atlantic/Canary|LMT -01 WET WEST|11.A 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UtaW.o XPAW.o 1lAK0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4",
13649			"Atlantic/Cape_Verde|LMT -02 -01|1y.4 20 10|01212|-2ldW0 1eEo0 7zX0 1djf0|50e4",
13650			"Atlantic/Faroe|LMT WET WEST|r.4 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2uSnw.U 2Wgow.U 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|49e3",
13651			"Atlantic/Madeira|FMT -01 +00 +01 WET WEST|17.A 10 0 -10 0 -10|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2ldX0 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e4",
13652			"Atlantic/Reykjavik|LMT -01 +00 GMT|1s 10 0 0|012121212121212121212121212121212121212121212121212121212121212121213|-2uWmw mfaw 1Bd0 ML0 1LB0 Cn0 1LB0 3fX0 C10 HrX0 1cO0 LB0 1EL0 LA0 1C00 Oo0 1wo0 Rc0 1wo0 Rc0 1wo0 Rc0 1zc0 Oo0 1zc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0|12e4",
13653			"Atlantic/South_Georgia|-02|20|0||30",
13654			"Atlantic/Stanley|SMT -04 -03 -02|3P.o 40 30 20|012121212121212323212121212121212121212121212121212121212121212121212|-2kJw8.A 12bA8.A 19X0 1fB0 19X0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 Cn0 1Cc10 WL0 1qL0 U10 1tz0 2mN0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 U10 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qN0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 U10 1tz0 U10 1tz0 U10|21e2",
13655			"Australia/Sydney|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|40e5",
13656			"Australia/Adelaide|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 WM0 1qM0 Rc0 1zc0 U00 1tA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|11e5",
13657			"Australia/Brisbane|AEST AEDT|-a0 -b0|01010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0|20e5",
13658			"Australia/Broken_Hill|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|18e3",
13659			"Australia/Currie|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|746",
13660			"Australia/Darwin|ACST ACDT|-9u -au|010101010|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0|12e4",
13661			"Australia/Eucla|+0845 +0945|-8J -9J|0101010101010101010|-293kI xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|368",
13662			"Australia/Hobart|AEST AEDT|-a0 -b0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 VfB0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|21e4",
13663			"Australia/Lord_Howe|AEST +1030 +1130 +11|-a0 -au -bu -b0|0121212121313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313|raC0 1zdu Rb0 1zd0 On0 1zd0 On0 1zd0 On0 1zd0 TXu 1qMu WLu 1tAu WLu 1tAu TXu 1tAu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 11Au 1nXu 1qMu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu 11zu 1o0u WLu 1qMu 14nu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 
136631cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu|347",
13664			"Australia/Lindeman|AEST AEDT|-a0 -b0|010101010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0|10",
13665			"Australia/Melbourne|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1qM0 11A0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|39e5",
13666			"Australia/Perth|AWST AWDT|-80 -90|0101010101010101010|-293jX xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|18e5",
13667			"CET|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|",
13668			"Pacific/Easter|EMT -07 -06 -05|7h.s 70 60 50|012121212121212121212121212123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1uSgG.w 1s4IG.w WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 2pA0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0|30e2",
13669			"CST6CDT|CST CDT CWT CPT|60 50 50 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
13670			"EET|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|",
13671			"Europe/Dublin|DMT IST GMT BST IST|p.l -y.D 0 -10 -10|01232323232324242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242|-2ax9y.D Rc0 1fzy.D 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 g600 14o0 1wo0 17c0 1io0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5",
13672			"EST|EST|50|0||",
13673			"EST5EDT|EST EDT EWT EPT|50 40 40 40|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 SgN0 8x40 iv0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
13674			"Etc/GMT-0|GMT|0|0||",
13675			"Etc/GMT-1|+01|-10|0||",
13676			"Pacific/Port_Moresby|+10|-a0|0||25e4",
13677			"Etc/GMT-11|+11|-b0|0||",
13678			"Pacific/Tarawa|+12|-c0|0||29e3",
13679			"Etc/GMT-13|+13|-d0|0||",
13680			"Etc/GMT-14|+14|-e0|0||",
13681			"Etc/GMT-2|+02|-20|0||",
13682			"Etc/GMT-3|+03|-30|0||",
13683			"Etc/GMT-4|+04|-40|0||",
13684			"Etc/GMT-5|+05|-50|0||",
13685			"Etc/GMT-6|+06|-60|0||",
13686			"Indian/Christmas|+07|-70|0||21e2",
13687			"Etc/GMT-8|+08|-80|0||",
13688			"Pacific/Palau|+09|-90|0||21e3",
13689			"Etc/GMT+1|-01|10|0||",
13690			"Etc/GMT+10|-10|a0|0||",
13691			"Etc/GMT+11|-11|b0|0||",
13692			"Etc/GMT+12|-12|c0|0||",
13693			"Etc/GMT+3|-03|30|0||",
13694			"Etc/GMT+4|-04|40|0||",
13695			"Etc/GMT+5|-05|50|0||",
13696			"Etc/GMT+6|-06|60|0||",
13697			"Etc/GMT+7|-07|70|0||",
13698			"Etc/GMT+8|-08|80|0||",
13699			"Etc/GMT+9|-09|90|0||",
13700			"Etc/UTC|UTC|0|0||",
13701			"Europe/Amsterdam|AMT NST +0120 +0020 CEST CET|-j.w -1j.w -1k -k -20 -10|010101010101010101010101010101010101010101012323234545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2aFcj.w 11b0 1iP0 11A0 1io0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1co0 1io0 1yo0 Pc0 1a00 1fA0 1Bc0 Mo0 1tc0 Uo0 1tA0 U00 1uo0 W00 1s00 VA0 1so0 Vc0 1sM0 UM0 1wo0 Rc0 1u00 Wo0 1rA0 W00 1s00 VA0 1sM0 UM0 1w00 fV0 BCX.w 1tA0 U00 1u00 Wo0 1sm0 601k WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|16e5",
13702			"Europe/Andorra|WET CET CEST|0 -10 -20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-UBA0 1xIN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|79e3",
13703			"Europe/Astrakhan|LMT +03 +04 +05|-3c.c -30 -40 -50|012323232323232323212121212121212121212121212121212121212121212|-1Pcrc.c eUMc.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|10e5",
13704			"Europe/Athens|AMT EET EEST CEST CET|-1y.Q -20 -30 -20 -10|012123434121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a61x.Q CNbx.Q mn0 kU10 9b0 3Es0 Xa0 1fb0 1dd0 k3X0 Nz0 SCp0 1vc0 SO0 1cM0 1a00 1ao0 1fc0 1a10 1fG0 1cg0 1dX0 1bX0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|35e5",
13705			"Europe/London|GMT BST BDST|0 -10 -20|0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|10e6",
13706			"Europe/Belgrade|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19RC0 3IP0 WM0 1fA0 1cM0 1cM0 1rc0 Qo0 1vmo0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5",
13707			"Europe/Berlin|CET CEST CEMT|-10 -20 -30|01010101010101210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 kL0 Nc0 m10 WM0 1ao0 1cp0 dX0 jz0 Dd0 1io0 17c0 1fA0 1a00 1ehA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e5",
13708			"Europe/Prague|CET CEST GMT|-10 -20 0|01010101010101010201010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 1qM0 11c0 mp0 xA0 mn0 17c0 1io0 17c0 1fc0 1ao0 1bNc0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|13e5",
13709			"Europe/Brussels|WET CET CEST WEST|0 -10 -20 -10|0121212103030303030303030303030303030303030303030303212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ehc0 3zX0 11c0 1iO0 11A0 1o00 11A0 my0 Ic0 1qM0 Rc0 1EM0 UM0 1u00 10o0 1io0 1io0 17c0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a30 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 y00 5Wn0 WM0 1fA0 1cM0 16M0 1iM0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|21e5",
13710			"Europe/Bucharest|BMT EET EEST|-1I.o -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1xApI.o 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Axc0 On0 1fA0 1a10 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|19e5",
13711			"Europe/Budapest|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1ip0 17b0 1op0 1tb0 Q2m0 3Ne0 WM0 1fA0 1cM0 1cM0 1oJ0 1dc0 1030 1fA0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1iM0 1fA0 8Ha0 Rb0 1wN0 Rb0 1BB0 Lz0 1C20 LB0 SNX0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5",
13712			"Europe/Zurich|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19Lc0 11A0 1o00 11A0 1xG10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e4",
13713			"Europe/Chisinau|CMT BMT EET EEST CEST CET MSK MSD|-1T -1I.o -20 -30 -20 -10 -30 -40|012323232323232323234545467676767676767676767323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-26jdT wGMa.A 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 27A0 2en0 39g0 WM0 1fA0 1cM0 V90 1t7z0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 gL0 WO0 1cM0 1cM0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11D0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|67e4",
13714			"Europe/Copenhagen|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 Tz0 VuO0 60q0 WM0 1fA0 1cM0 1cM0 1cM0 S00 1HA0 Nc0 1C00 Dc0 1Nc0 Ao0 1h5A0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5",
13715			"Europe/Gibraltar|GMT BST BDST CET CEST|0 -10 -20 -10 -20|010101010101010101010101010101010101010101010101012121212121010121010101010101010101034343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 10Jz0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|30e3",
13716			"Europe/Helsinki|HMT EET EEST|-1D.N -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1WuND.N OULD.N 1dA0 1xGq0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5",
13717			"Europe/Kaliningrad|CET CEST EET EEST MSK MSD +03|-10 -20 -20 -30 -30 -40 -30|01010101010101232454545454545454543232323232323232323232323232323232323232323262|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 390 7A0 1en0 12N0 1pbb0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|44e4",
13718			"Europe/Kiev|KMT EET MSK CEST CET MSD EEST|-22.4 -20 -30 -20 -10 -40 -30|0123434252525252525252525256161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc22.4 eUo2.4 rnz0 2Hg0 WM0 1fA0 da0 1v4m0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 Db0 3220 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|34e5",
13719			"Europe/Kirov|LMT +03 +04 +05|-3i.M -30 -40 -50|01232323232323232321212121212121212121212121212121212121212121|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 
137191fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|48e4",
13720			"Europe/Lisbon|LMT WET WEST WEMT CET CEST|A.J 0 -10 -20 -10 -20|012121212121212121212121212121212121212121212321232123212321212121212121212121212121212121212121214121212121212121212121212121212124545454212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2le00 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 pvy0 1cM0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e5",
13721			"Europe/Luxembourg|LMT CET CEST WET WEST WEST WET|-o.A -10 -20 0 -10 -20 -10|0121212134343434343434343434343434343434343434343434565651212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2DG0o.A t6mo.A TB0 1nX0 Up0 1o20 11A0 rW0 CM0 1qP0 R90 1EO0 UK0 1u20 10m0 1ip0 1in0 17e0 19W0 1fB0 1db0 1cp0 1in0 17d0 1fz0 1a10 1in0 1a10 1in0 17f0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 vA0 60L0 WM0 1fA0 1cM0 17c0 1io0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4",
13722			"Europe/Madrid|WET WEST WEMT CET CEST|0 -10 -20 -10 -20|010101010101010101210343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-25Td0 19B0 1cL0 1dd0 b1z0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1in0 17d0 iIn0 Hd0 1cL0 bb0 1200 2s20 14n0 5aL0 Mp0 1vz0 17d0 1in0 17d0 1in0 17d0 1in0 17d0 6hX0 11B0 XHX0 1a10 1fz0 1a10 19X0 1cN0 1fz0 1a10 1fC0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e5",
13723			"Europe/Malta|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2arB0 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1co0 17c0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1co0 1cM0 1lA0 Xc0 1qq0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1iN0 19z0 1fB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4",
13724			"Europe/Minsk|MMT EET MSK CEST CET MSD EEST +03|-1O -20 -30 -20 -10 -40 -30 -30|01234343252525252525252525261616161616161616161616161616161616161617|-1Pc1O eUnO qNX0 3gQ0 WM0 1fA0 1cM0 Al0 1tsn0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fc0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0|19e5",
13725			"Europe/Monaco|PMT WET WEST WEMT CET CEST|-9.l 0 -10 -20 -10 -20|01212121212121212121212121212121212121212121212121232323232345454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 2RV0 11z0 11B0 1ze0 WM0 1fA0 1cM0 1fa0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e3",
13726			"Europe/Moscow|MMT MMT MST MDST MSD MSK +05 EET EEST MSK|-2u.h -2v.j -3v.j -4v.j -40 -30 -50 -20 -30 -40|012132345464575454545454545454545458754545454545454545454545454545454545454595|-2ag2u.h 2pyW.W 1bA0 11X0 GN0 1Hb0 c4v.j ik0 3DA0 dz0 15A0 c10 2q10 iM10 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|16e6",
13727			"Europe/Paris|PMT WET WEST CEST CET WEMT|-9.l 0 -10 -20 -10 -20|0121212121212121212121212121212121212121212121212123434352543434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-2nco8.l cNb8.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 Ik0 5M30 WM0 1fA0 1cM0 Vx0 hB0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e6",
13728			"Europe/Riga|RMT LST EET MSK CEST CET MSD EEST|-1A.y -2A.y -2
137280 -30 -20 -10 -40 -30|010102345454536363636363636363727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272|-25TzA.y 11A0 1iM0 ko0 gWm0 yDXA.y 2bX0 3fE0 WM0 1fA0 1cM0 1cM0 4m0 1sLy0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1o00 11A0 1o00 11A0 1qM0 3oo0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|64e4",
13729			"Europe/Rome|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2arB0 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1cM0 16M0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1C00 LA0 1zc0 Oo0 1C00 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1zc0 Oo0 1fC0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|39e5",
13730			"Europe/Samara|LMT +03 +04 +05|-3k.k -30 -40 -50|0123232323232323232121232323232323232323232323232323232323212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2y10 14m0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|12e5",
13731			"Europe/Saratov|LMT +03 +04 +05|-34.i -30 -40 -50|012323232323232321212121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 5810|",
13732			"Europe/Simferopol|SMT EET MSK CEST CET MSD EEST MSK|-2g -20 -30 -20 -10 -40 -30 -40|012343432525252525252525252161616525252616161616161616161616161616161616172|-1Pc2g eUog rEn0 2qs0 WM0 1fA0 1cM0 3V0 1u0L0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 4eL0 1cL0 1cN0 1cL0 1cN0 dX0 WL0 1cN0 1cL0 1fB0 1o30 11B0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0|33e4",
13733			"Europe/Sofia|EET CET CEST EEST|-20 -10 -20 -30|01212103030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030|-168L0 WM0 1fA0 1cM0 1cM0 1cN0 1mKH0 1dd0 1fb0 1ap0 1fb0 1a20 1fy0 1a30 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5",
13734			"Europe/Stockholm|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 TB0 2yDe0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|15e5",
13735			"Europe/Tallinn|TMT CET CEST EET MSK MSD EEST|-1D -10 -20 -20 -30 -40 -30|012103421212454545454545454546363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363|-26oND teD 11A0 1Ta0 4rXl KSLD 2FX0 2Jg0 WM0 1fA0 1cM0 18J0 1sTX0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o10 11A0 1qM0 5QM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e4",
13736			"Europe/Tirane|LMT CET CEST|-1j.k -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glBj.k 14pcj.k 5LC0 WM0 4M0 1fCK0 10n0 1op0 11z0 1pd0 11z0 1qN0 WL0 1qp0 Xb0 1qp0 Xb0 1qp0 11z0 1lB0 11z0 1qN0 11z0 1iN0 16n0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4",
13737			"Europe/Ulyanovsk|LMT +03 +04 +05 +02|-3d.A -30 -40 -50 -20|01232323232323232321214121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|13e5",
13738			"Europe/Uzhgorod|CET CEST MSK MSD EET EEST|-10 -20 -30 -40 -20 -30|010101023232323232323232320454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-1cqL0 6i00 WM0 1fA0 1cM0 1ml0 1Cp0 1r3W0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 1Nf0 2pw0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e4",
13739			"Europe/Vienna|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 3KM0 14o0 LA00 6i00 WM0 1fA0 1cM0 1cM0 1cM0 400 2qM0 1ao0 1co0 1cM0 1io0 17c0 1gHa0 19X0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|18e5",
13740			"Europe/Vilnius|WMT KMT CET EET MSK CEST MSD EEST|-1o -1z.A -10 -20 -30 -20 -40 -30|012324525254646464646464646473737373737373737352537373737373737373737373737373737373737373737373737373737373737373737373|-293do 6ILM.o 1Ooz.A zz0 Mfd0 29W0 3is0 WM0 1fA0 1cM0 LV0 1tgL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11B0 1o00 11A0 1qM0 8io0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4",
13741			"Europe/Volgograd|LMT +03 +04 +05|-2V.E -30 -40 -50|012323232323232321212121212121212121212121212121212121212121212|-21IqV.E psLV.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 9Jd0|10e5",
13742			"Europe/Warsaw|WMT CET CEST EET EEST|-1o -10 -20 -20 -30|012121234312121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ctdo 1LXo 11d0 1iO0 11A0 1o00 11A0 1on0 11A0 6zy0 HWP0 5IM0 WM0 1fA0 1cM0 1dz0 1mL0 1en0 15B0 1aq0 1nA0 11A0 1io0 17c0 1fA0 1a00 iDX0 LA0 1cM0 1cM0 1C00 Oo0 1cM0 1cM0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1C00 LA0 uso0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5",
13743			"Europe/Zaporozhye|+0220 EET MSK CEST CET MSD EEST|-2k -20 -30 -20 -10 -40 -30|01234342525252525252525252526161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc2k eUok rdb0 2RE0 WM0 1fA0 8m0 1v9a0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cK0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|77e4",
13744			"HST|HST|a0|0||",
13745			"Indian/Chagos|LMT +05 +06|-4N.E -50 -60|012|-2xosN.E 3AGLN.E|30e2",
13746			"Indian/Cocos|+0630|-6u|0||596",
13747			"Indian/Kerguelen|-00 +05|0 -50|01|-MG00|130",
13748			"Indian/Mahe|LMT +04|-3F.M -40|01|-2yO3F.M|79e3",
13749			"Indian/Maldives|MMT +05|-4S -50|01|-olgS|35e4",
13750			"Indian/Mauritius|LMT +04 +05|-3O -40 -50|012121|-2xorO 34unO 14L0 12kr0 11z0|15e4",
13751			"Indian/Reunion|LMT +04|-3F.Q -40|01|-2mDDF.Q|84e4",
13752			"Pacific/Kwajalein|+11 +10 +09 -12 +12|-b0 -a0 -90 c0 -c0|012034|-1kln0 akp0 6Up0 12ry0 Wan0|14e3",
13753			"MET|MET MEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|",
13754			"MST|MST|70|0||",
13755			"MST7MDT|MST MDT MWT MPT|70 60 60 60|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
13756			"Pacific/Chatham|+1215 +1245 +1345|-cf -cJ -dJ|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-WqAf 1adef IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|600",
13757			"Pacific/Apia|LMT -1130 -11 -10 +14 +13|bq.U bu b0 a0 -e0 -d0|01232345454545454545454545454545454545454545454545454545454|-2nDMx.4 1yW03.4 2rRbu 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|37e3",
13758			"Pacific/Bougainville|+10 +09 +11|-a0 -90 -b0|0102|-16Wy0 7CN0 2MQp0|18e4",
13759			"Pacific/Chuuk|+10 +09|-a0 -90|01010|-2ewy0 axB0 RVX0 axd0|49e3",
13760			"Pacific/Efate|LMT +11 +12|-bd.g -b0 -c0|0121212121212121212121|-2l9nd.g 2Szcd.g 1cL0 1oN0 10L0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 Lz0 1Nd0 An0|66e3",
13761			"Pacific/Enderbury|-12 -11 +13|c0 b0 -d0|012|nIc0 B7X0|1",
13762			"Pacific/Fakaofo|-11 +13|b0 -d0|01|1Gfn0|483",
13763			"Pacific/Fiji|LMT +12 +13|-bT.I -c0 -d0|0121212121212121212121212121212121212121212121212121212121212121|-2bUzT.I 3m8NT.I LA0 1EM0 IM0 nJc0 LA0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 20o0 pc0 20o0 s00 20o0 pc0 20o0 pc0 20o0 pc0 20o0 pc0 20o0 s00 1VA0 s00 20o0 pc0 20o0 pc0 20o0 pc0 20o0 pc0 20o0 s00 20o0 pc0 20o0 pc0 20o0 pc0 20o0 pc0 20o0 s00 1VA0 s00|88e4",
13764			"Pacific/Galapagos|LMT -05 -06|5W.o 50 60|01212|-1yVS1.A 2dTz1.A gNd0 rz0|25e3",
13765			"Pacific/Gambier|LMT -09|8X.M 90|01|-2jof0.c|125",
13766			"Pacific/Guadalcanal|LMT +11|-aD.M -b0|01|-2joyD.M|11e4",
13767			"Pacific/Guam|GST +09 GDT ChST|-a0 -90 -b0 -a0|01020202020202020203|-18jK0 6pB0 AhB0 3QL0 g2p0 3p91 WOX rX0 1zd0 Rb0 1wp0 Rb0 5xd0 rX0 5sN0 zb1 1C0X On0 ULb0|17e4",
13768			"Pacific/Honolulu|HST HDT HWT HPT HST|au 9u 9u 9u a0|0102304|-1thLu 8x0 lef0 8wWu iAu 46p0|37e4",
13769			"Pacific/Kiritimati|-1040 -10 +14|aE a0 -e0|012|nIaE B7Xk|51e2",
13770			"Pacific/Kosrae|+11 +09 +10 +12|-b0 -90 -a0 -c0|01021030|-2ewz0 axC0 HBy0 akp0 axd0 WOK0 1bdz0|66e2",
13771			"Pacific/Majuro|+11 +09 +10 +12|-b0 -90 -a0 -c0|0102103|-2ewz0 axC0 HBy0 akp0 6RB0 12um0|28e3",
13772			"Pacific/Marquesas|LMT -0930|9i 9u|01|-2joeG|86e2",
13773			"Pacific/Pago_Pago|LMT SST|bm.M b0|01|-2nDMB.c|37e2",
13774			"Pacific/Nauru|LMT +1130 +09 +12|-b7.E -bu -90 -c0|01213|-1Xdn7.E QCnB.E 7mqu 1lnbu|10e3",
13775			"Pacific/Niue|-1120 -1130 -11|bk bu b0|012|-KfME 17y0a|12e2",
13776			"Pacific/Norfolk|+1112 +1130 +1230 +11 +12|-bc -bu -cu -b0 -c0|012134343434343434343434343434343434343434|-Kgbc W01G Oo0 1COo0 9Jcu 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|25e4",
13777			"Pacific/Noumea|LMT +11 +12|-b5.M -b0 -c0|01212121|-2l9n5.M 2EqM5.M xX0 1PB0 yn0 HeP0 Ao0|98e3",
13778			"Pacific/Pitcairn|-0830 -08|8u 80|01|18Vku|56",
13779			"Pacific/Pohnpei|+11 +09 +10|-b0 -90 -a0|010210|-2ewz0 axC0 HBy0 akp0 axd0|34e3",
13780			"Pacific/Rarotonga|-1030 -0930 -10|au 9u a0|012121212121212121212121212|lyWu IL0 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu|13e3",
13781			"Pacific/Tahiti|LMT -10|9W.g a0|01|-2joe1.I|18e4",
13782			"Pacific/Tongatapu|+1220 +13 +14|-ck -d0 -e0|0121212121|-1aB0k 2n5dk 15A0 1wo0 xz0 1Q10 xz0 zWN0 s00|75e3",
13783			"PST8PDT|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
13784			"WET|WET WEST|0 -10|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|"
13785		],
13786		"links": [
13787			"Africa/Abidjan|Africa/Bamako",
13788			"Africa/Abidjan|Africa/Banjul",
13789			"Africa/Abidjan|Africa/Conakry",
13790			"Africa/Abidjan|Africa/Dakar",
13791			"Africa/Abidjan|Africa/Freetown",
13792			"Africa/Abidjan|Africa/Lome",
13793			"Africa/Abidjan|Africa/Nouakchott",
13794			"Africa/Abidjan|Africa/Ouagadougou",
13795			"Africa/Abidjan|Africa/Timbuktu",
13796			"Africa/Abidjan|Atlantic/St_Helena",
13797			"Africa/Cairo|Egypt",
13798			"Africa/Johannesburg|Africa/Maseru",
13799			"Africa/Johannesburg|Africa/Mbabane",
13800			"Africa/Lagos|Africa/Bangui",
13801			"Africa/Lagos|Africa/Brazzaville",
13802			"Africa/Lagos|Africa/Douala",
13803			"Africa/Lagos|Africa/Kinshasa",
13804			"Africa/Lagos|Africa/Libreville",
13805			"Africa/Lagos|Africa/Luanda",
13806			"Africa/Lagos|Africa/Malabo",
13807			"Africa/Lagos|Africa/Niamey",
13808			"Africa/Lagos|Africa/Porto-Novo",
13809			"Africa/Maputo|Africa/Blantyre",
13810			"Africa/Maputo|Africa/Bujumbura",
13811			"Africa/Maputo|Africa/Gaborone",
13812			"Africa/Maputo|Africa/Harare",
13813			"Africa/Maputo|Africa/Kigali",
13814			"Africa/Maputo|Africa/Lubumbashi",
13815			"Africa/Maputo|Africa/Lusaka",
13816			"Africa/Nairobi|Africa/Addis_Ababa",
13817			"Africa/Nairobi|Africa/Asmara",
13818			"Africa/Nairobi|Africa/Asmera",
13819			"Africa/Nairobi|Africa/Dar_es_Salaam",
13820			"Africa/Nairobi|Africa/Djibouti",
13821			"Africa/Nairobi|Africa/Kampala",
13822			"Africa/Nairobi|Africa/Mogadishu",
13823			"Africa/Nairobi|Indian/Antananarivo",
13824			"Africa/Nairobi|Indian/Comoro",
13825			"Africa/Nairobi|Indian/Mayotte",
13826			"Africa/Tripoli|Libya",
13827			"America/Adak|America/Atka",
13828			"America/Adak|US/Aleutian",
13829			"America/Anchorage|US/Alaska",
13830			"America/Argentina/Buenos_Aires|America/Buenos_Aires",
13831			"America/Argentina/Catamarca|America/Argentina/ComodRivadavia",
13832			"America/Argentina/Catamarca|America/Catamarca",
13833			"America/Argentina/Cordoba|America/Cordoba",
13834			"America/Argentina/Cordoba|America/Rosario",
13835			"America/Argentina/Jujuy|America/Jujuy",
13836			"America/Argentina/Mendoza|America/Mendoza",
13837			"America/Atikokan|America/Coral_Harbour",
13838			"America/Chicago|US/Central",
13839			"America/Curacao|America/Aruba",
13840			"America/Curacao|America/Kralendijk",
13841			"America/Curacao|America/Lower_Princes",
13842			"America/Denver|America/Shiprock",
13843			"America/Denver|Navajo",
13844			"America/Denver|US/Mountain",
13845			"America/Detroit|US/Michigan",
13846			"America/Edmonton|Canada/Mountain",
13847			"America/Fort_Wayne|America/Indiana/Indianapolis",
13848			"America/Fort_Wayne|America/Indianapolis",
13849			"America/Fort_Wayne|US/East-Indiana",
13850			"America/Godthab|America/Nuuk",
13851			"America/Halifax|Canada/Atlantic",
13852			"America/Havana|Cuba",
13853			"America/Indiana/Knox|America/Knox_IN",
13854			"America/Indiana/Knox|US/Indiana-Starke",
13855			"America/Jamaica|Jamaica",
13856			"America/Kentucky/Louisville|America/Louisville",
13857			"America/Los_Angeles|US/Pacific",
13858			"America/Los_Angeles|US/Pacific-New",
13859			"America/Manaus|Brazil/West",
13860			"America/Mazatlan|Mexico/BajaSur",
13861			"America/Mexico_City|Mexico/General",
13862			"America/New_York|US/Eastern",
13863			"America/Noronha|Brazil/DeNoronha",
13864			"America/Panama|America/Cayman",
13865			"America/Phoenix|US/Arizona",
13866			"America/Port_of_Spain|America/Anguilla",
13867			"America/Port_of_Spain|America/Antigua",
13868			"America/Port_of_Spain|America/Dominica",
13869			"America/Port_of_Spain|America/Grenada",
13870			"America/Port_of_Spain|America/Guadeloupe",
13871			"America/Port_of_Spain|America/Marigot",
13872			"America/Port_of_Spain|America/Montserrat",
13873			"America/Port_of_Spain|America/St_Barthelemy",
13874			"America/Port_of_Spain|America/St_Kitts",
13875			"America/Port_of_Spain|America/St_Lucia",
13876			"America/Port_of_Spain|America/St_Thomas",
13877			"America/Port_of_Spain|America/St_Vincent",
13878			"America/Port_of_Spain|America/Tortola",
13879			"America/Port_of_Spain|America/Virgin",
13880			"America/Regina|Canada/Saskatchewan",
13881			"America/Rio_Branco|America/Porto_Acre",
13882			"America/Rio_Branco|Brazil/Acre",
13883			"America/Santiago|Chile/Continental",
13884			"America/Sao_Paulo|Brazil/East",
13885			"America/St_Johns|Canada/Newfoundland",
13886			"America/Tijuana|America/Ensenada",
13887			"America/Tijuana|America/Santa_Isabel",
13888			"America/Tijuana|Mexico/BajaNorte",
13889			"America/Toronto|America/Montreal",
13890			"America/Toronto|Canada/Eastern",
13891			"America/Vancouver|Canada/Pacific",
13892			"America/Whitehorse|Canada/Yukon",
13893			"America/Winnipeg|Canada/Central",
13894			"Asia/Ashgabat|Asia/Ashkhabad",
13895			"Asia/Bangkok|Asia/Phnom_Penh",
13896			"Asia/Bangkok|Asia/Vientiane",
13897			"Asia/Dhaka|Asia/Dacca",
13898			"Asia/Dubai|Asia/Muscat",
13899			"Asia/Ho_Chi_Minh|Asia/Saigon",
13900			"Asia/Hong_Kong|Hongkong",
13901			"Asia/Jerusalem|Asia/Tel_Aviv",
13902			"Asia/Jerusalem|Israel",
13903			"Asia/Kathmandu|Asia/Katmandu",
13904			"Asia/Kolkata|Asia/Calcutta",
13905			"Asia/Kuala_Lumpur|Asia/Singapore",
13906			"Asia/Kuala_Lumpur|Singapore",
13907			"Asia/Macau|Asia/Macao",
13908			"Asia/Makassar|Asia/Ujung_Pandang",
13909			"Asia/Nicosia|Europe/Nicosia",
13910			"Asia/Qatar|Asia/Bahrain",
13911			"Asia/Rangoon|Asia/Yangon",
13912			"Asia/Riyadh|Asia/Aden",
13913			"Asia/Riyadh|Asia/Kuwait",
13914			"Asia/Seoul|ROK",
13915			"Asia/Shanghai|Asia/Chongqing",
13916			"Asia/Shanghai|Asia/Chungking",
13917			"Asia/Shanghai|Asia/Harbin",
13918			"Asia/Shanghai|PRC",
13919			"Asia/Taipei|ROC",
13920			"Asia/Tehran|Iran",
13921			"Asia/Thimphu|Asia/Thimbu",
13922			"Asia/Tokyo|Japan",
13923			"Asia/Ulaanbaatar|Asia/Ulan_Bator",
13924			"Asia/Urumqi|Asia/Kashgar",
13925			"Atlantic/Faroe|Atlantic/Faeroe",
13926			"Atlantic/Reykjavik|Iceland",
13927			"Atlantic/South_Georgia|Etc/GMT+2",
13928			"Australia/Adelaide|Australia/South",
13929			"Australia/Brisbane|Australia/Queensland",
13930			"Australia/Broken_Hill|Australia/Yancowinna",
13931			"Australia/Darwin|Australia/North",
13932			"Australia/Hobart|Australia/Tasmania",
13933			"Australia/Lord_Howe|Australia/LHI",
13934			"Australia/Melbourne|Australia/Victoria",
13935			"Australia/Perth|Australia/West",
13936			"Australia/Sydney|Australia/ACT",
13937			"Australia/Sydney|Australia/Canberra",
13938			"Australia/Sydney|Australia/NSW",
13939			"Etc/GMT-0|Etc/GMT",
13940			"Etc/GMT-0|Etc/GMT+0",
13941			"Etc/GMT-0|Etc/GMT0",
13942			"Etc/GMT-0|Etc/Greenwich",
13943			"Etc/GMT-0|GMT",
13944			"Etc/GMT-0|GMT+0",
13945			"Etc/GMT-0|GMT-0",
13946			"Etc/GMT-0|GMT0",
13947			"Etc/GMT-0|Greenwich",
13948			"Etc/UTC|Etc/UCT",
13949			"Etc/UTC|Etc/Universal",
13950			"Etc/UTC|Etc/Zulu",
13951			"Etc/UTC|UCT",
13952			"Etc/UTC|UTC",
13953			"Etc/UTC|Universal",
13954			"Etc/UTC|Zulu",
13955			"Europe/Belgrade|Europe/Ljubljana",
13956			"Europe/Belgrade|Europe/Podgorica",
13957			"Europe/Belgrade|Europe/Sarajevo",
13958			"Europe/Belgrade|Europe/Skopje",
13959			"Europe/Belgrade|Europe/Zagreb",
13960			"Europe/Chisinau|Europe/Tiraspol",
13961			"Europe/Dublin|Eire",
13962			"Europe/Helsinki|Europe/Mariehamn",
13963			"Europe/Istanbul|Asia/Istanbul",
13964			"Europe/Istanbul|Turkey",
13965			"Europe/Lisbon|Portugal",
13966			"Europe/London|Europe/Belfast",
13967			"Europe/London|Europe/Guernsey",
13968			"Europe/London|Europe/Isle_of_Man",
13969			"Europe/London|Europe/Jersey",
13970			"Europe/London|GB",
13971			"Europe/London|GB-Eire",
13972			"Europe/Moscow|W-SU",
13973			"Europe/Oslo|Arctic/Longyearbyen",
13974			"Europe/Oslo|Atlantic/Jan_Mayen",
13975			"Europe/Prague|Europe/Bratislava",
13976			"Europe/Rome|Europe/San_Marino",
13977			"Europe/Rome|Europe/Vatican",
13978			"Europe/Warsaw|Poland",
13979			"Europe/Zurich|Europe/Busingen",
13980			"Europe/Zurich|Europe/Vaduz",
13981			"Indian/Christmas|Etc/GMT-7",
13982			"Pacific/Auckland|Antarctica/McMurdo",
13983			"Pacific/Auckland|Antarctica/South_Pole",
13984			"Pacific/Auckland|NZ",
13985			"Pacific/Chatham|NZ-CHAT",
13986			"Pacific/Chuuk|Pacific/Truk",
13987			"Pacific/Chuuk|Pacific/Yap",
13988			"Pacific/Easter|Chile/EasterIsland",
13989			"Pacific/Guam|Pacific/Saipan",
13990			"Pacific/Honolulu|Pacific/Johnston",
13991			"Pacific/Honolulu|US/Hawaii",
13992			"Pacific/Kwajalein|Kwajalein",
13993			"Pacific/Pago_Pago|Pacific/Midway",
13994			"Pacific/Pago_Pago|Pacific/Samoa",
13995			"Pacific/Pago_Pago|US/Samoa",
13996			"Pacific/Palau|Etc/GMT-9",
13997			"Pacific/Pohnpei|Pacific/Ponape",
13998			"Pacific/Port_Moresby|Etc/GMT-10",
13999			"Pacific/Tarawa|Etc/GMT-12",
14000			"Pacific/Tarawa|Pacific/Funafuti",
14001			"Pacific/Tarawa|Pacific/Wake",
14002			"Pacific/Tarawa|Pacific/Wallis"
14003		],
14004		"countries": [
14005			"AD|Europe/Andorra",
14006			"AE|Asia/Dubai",
14007			"AF|Asia/Kabul",
14008			"AG|America/Port_of_Spain America/Antigua",
14009			"AI|America/Port_of_Spain America/Anguilla",
14010			"AL|Europe/Tirane",
14011			"AM|Asia/Yerevan",
14012			"AO|Africa/Lagos Africa/Luanda",
14013			"AQ|Antarctica/Casey Antarctica/Davis Antarctica/DumontDUrville Antarctica/Mawson Antarctica/Palmer Antarctica/Rothera Antarctica/Syowa Antarctica/Troll Antarctica/Vostok Pacific/Auckland Antarctica/McMurdo",
14014			"AR|America/Argentina/Buenos_Aires America/Argentina/Cordoba America/Argentina/Salta America/Argentina/Jujuy America/Argentina/Tucuman America/Argentina/Catamarca America/Argentina/La_Rioja America/Argentina/San_Juan America/Argentina/Mendoza America/Argentina/San_Luis America/Argentina/Rio_Gallegos America/Argentina/Ushuaia",
14015			"AS|Pacific/Pago_Pago",
14016			"AT|Europe/Vienna",
14017			"AU|Australia/Lord_Howe Antarctica/Macquarie Australia/Hobart Australia/Currie Australia/Melbourne Australia/Sydney Australia/Broken_Hill Australia/Brisbane Australia/Lindeman Australia/Adelaide Australia/Darwin Australia/Perth Australia/Eucla",
14018			"AW|America/Curacao America/Aruba",
14019			"AX|Europe/Helsinki Europe/Mariehamn",
14020			"AZ|Asia/Baku",
14021			"BA|Europe/Belgrade Europe/Sarajevo",
14022			"BB|America/Barbados",
14023			"BD|Asia/Dhaka",
14024			"BE|Europe/Brussels",
14025			"BF|Africa/Abidjan Africa/Ouagadougou",
14026			"BG|Europe/Sofia",
14027			"BH|Asia/Qatar Asia/Bahrain",
14028			"BI|Africa/Maputo Africa/Bujumbura",
14029			"BJ|Africa/Lagos Africa/Porto-Novo",
14030			"BL|America/Port_of_Spain America/St_Barthelemy",
14031			"BM|Atlantic/Bermuda",
14032			"BN|Asia/Brunei",
14033			"BO|America/La_Paz",
14034			"BQ|America/Curacao America/Kralendijk",
14035			"BR|America/Noronha America/Belem America/Fortaleza America/Recife America/Araguaina America/Maceio America/Bahia America/Sao_Paulo America/Campo_Grande America/Cuiaba America/Santarem America/Porto_Velho America/Boa_Vista America/Manaus America/Eirunepe America/Rio_Branco",
14036			"BS|America/Nassau",
14037			"BT|Asia/Thimphu",
14038			"BW|Africa/Maputo Africa/Gaborone",
14039			"BY|Europe/Minsk",
14040			"BZ|America/Belize",
14041			"CA|America/St_Johns America/Halifax America/Glace_Bay America/Moncton America/Goose_Bay America/Blanc-Sablon America/Toronto America/Nipigon America/Thunder_Bay America/Iqaluit America/Pangnirtung America/Atikokan America/Winnipeg America/Rainy_River America/Resolute America/Rankin_Inlet America/Regina America/Swift_Current America/Edmonton America/Cambridge_Bay America/Yellowknife America/Inuvik America/Creston America/Dawson_Creek America/Fort_Nelson America/Vancouver America/Whitehorse America/Dawson",
14042			"CC|Indian/Cocos",
14043			"CD|Africa/Maputo Africa/Lagos Africa/Kinshasa Africa/Lubumbashi",
14044			"CF|Africa/Lagos Africa/Bangui",
14045			"CG|Africa/Lagos Africa/Brazzaville",
14046			"CH|Europe/Zurich",
14047			"CI|Africa/Abidjan",
14048			"CK|Pacific/Rarotonga",
14049			"CL|America/Santiago America/Punta_Arenas Pacific/Easter",
14050			"CM|Africa/Lagos Africa/Douala",
14051			"CN|Asia/Shanghai Asia/Urumqi",
14052			"CO|America/Bogota",
14053			"CR|America/Costa_Rica",
14054			"CU|America/Havana",
14055			"CV|Atlantic/Cape_Verde",
14056			"CW|America/Curacao",
14057			"CX|Indian/Christmas",
14058			"CY|Asia/Nicosia Asia/Famagusta",
14059			"CZ|Europe/Prague",
14060			"DE|Europe/Zurich Europe/Berlin Europe/Busingen",
14061			"DJ|Africa/Nairobi Africa/Djibouti",
14062			"DK|Europe/Copenhagen",
14063			"DM|America/Port_of_Spain America/Dominica",
14064			"DO|America/Santo_Domingo",
14065			"DZ|Africa/Algiers",
14066			"EC|America/Guayaquil Pacific/Galapagos",
14067			"EE|Europe/Tallinn",
14068			"EG|Africa/Cairo",
14069			"EH|Africa/El_Aaiun",
14070			"ER|Africa/Nairobi Africa/Asmara",
14071			"ES|Europe/Madrid Africa/Ceuta Atlantic/Canary",
14072			"ET|Africa/Nairobi Africa/Addis_Ababa",
14073			"FI|Europe/Helsinki",
14074			"FJ|Pacific/Fiji",
14075			"FK|Atlantic/Stanley",
14076			"FM|Pacific/Chuuk Pacific/Pohnpei Pacific/Kosrae",
14077			"FO|Atlantic/Faroe",
14078			"FR|Europe/Paris",
14079			"GA|Africa/Lagos Africa/Libreville",
14080			"GB|Europe/London",
14081			"GD|America/Port_of_Spain America/Grenada",
14082			"GE|Asia/Tbilisi",
14083			"GF|America/Cayenne",
14084			"GG|Europe/London Europe/Guernsey",
14085			"GH|Africa/Accra",
14086			"GI|Europe/Gibraltar",
14087			"GL|America/Godthab America/Danmarkshavn America/Scoresbysund America/Thule",
14088			"GM|Africa/Abidjan Africa/Banjul",
14089			"GN|Africa/Abidjan Africa/Conakry",
14090			"GP|America/Port_of_Spain America/Guadeloupe",
14091			"GQ|Africa/Lagos Africa/Malabo",
14092			"GR|Europe/Athens",
14093			"GS|Atlantic/South_Georgia",
14094			"GT|America/Guatemala",
14095			"GU|Pacific/Guam",
14096			"GW|Africa/Bissau",
14097			"GY|America/Guyana",
14098			"HK|Asia/Hong_Kong",
14099			"HN|America/Tegucigalpa",
14100			"HR|Europe/Belgrade Europe/Zagreb",
14101			"HT|America/Port-au-Prince",
14102			"HU|Europe/Budapest",
14103			"ID|Asia/Jakarta Asia/Pontianak Asia/Makassar Asia/Jayapura",
14104			"IE|Europe/Dublin",
14105			"IL|Asia/Jerusalem",
14106			"IM|Europe/London Europe/Isle_of_Man",
14107			"IN|Asia/Kolkata",
14108			"IO|Indian/Chagos",
14109			"IQ|Asia/Baghdad",
14110			"IR|Asia/Tehran",
14111			"IS|Atlantic/Reykjavik",
14112			"IT|Europe/Rome",
14113			"JE|Europe/London Europe/Jersey",
14114			"JM|America/Jamaica",
14115			"JO|Asia/Amman",
14116			"JP|Asia/Tokyo",
14117			"KE|Africa/Nairobi",
14118			"KG|Asia/Bishkek",
14119			"KH|Asia/Bangkok Asia/Phnom_Penh",
14120			"KI|Pacific/Tarawa Pacific/Enderbury Pacific/Kiritimati",
14121			"KM|Africa/Nairobi Indian/Comoro",
14122			"KN|America/Port_of_Spain America/St_Kitts",
14123			"KP|Asia/Pyongyang",
14124			"KR|Asia/Seoul",
14125			"KW|Asia/Riyadh Asia/Kuwait",
14126			"KY|America/Panama America/Cayman",
14127			"KZ|Asia/Almaty Asia/Qyzylorda Asia/Qostanay Asia/Aqtobe Asia/Aqtau Asia/Atyrau Asia/Oral",
14128			"LA|Asia/Bangkok Asia/Vientiane",
14129			"LB|Asia/Beirut",
14130			"LC|America/Port_of_Spain America/St_Lucia",
14131			"LI|Europe/Zurich Europe/Vaduz",
14132			"LK|Asia/Colombo",
14133			"LR|Africa/Monrovia",
14134			"LS|Africa/Johannesburg Africa/Maseru",
14135			"LT|Europe/Vilnius",
14136			"LU|Europe/Luxembourg",
14137			"LV|Europe/Riga",
14138			"LY|Africa/Tripoli",
14139			"MA|Africa/Casablanca",
14140			"MC|Europe/Monaco",
14141			"MD|Europe/Chisinau",
14142			"ME|Europe/Belgrade Europe/Podgorica",
14143			"MF|America/Port_of_Spain America/Marigot",
14144			"MG|Africa/Nairobi Indian/Antananarivo",
14145			"MH|Pacific/Majuro Pacific/Kwajalein",
14146			"MK|Europe/Belgrade Europe/Skopje",
14147			"ML|Africa/Abidjan Africa/Bamako",
14148			"MM|Asia/Yangon",
14149			"MN|Asia/Ulaanbaatar Asia/Hovd Asia/Choibalsan",
14150			"MO|Asia/Macau",
14151			"MP|Pacific/Guam Pacific/Saipan",
14152			"MQ|America/Martinique",
14153			"MR|Africa/Abidjan Africa/Nouakchott",
14154			"MS|America/Port_of_Spain America/Montserrat",
14155			"MT|Europe/Malta",
14156			"MU|Indian/Mauritius",
14157			"MV|Indian/Maldives",
14158			"MW|Africa/Maputo Africa/Blantyre",
14159			"MX|America/Mexico_City America/Cancun America/Merida America/Monterrey America/Matamoros America/Mazatlan America/Chihuahua America/Ojinaga America/Hermosillo America/Tijuana America/Bahia_Banderas",
14160			"MY|Asia/Kuala_Lumpur Asia/Kuching",
14161			"MZ|Africa/Maputo",
14162			"NA|Africa/Windhoek",
14163			"NC|Pacific/Noumea",
14164			"NE|Africa/Lagos Africa/Niamey",
14165			"NF|Pacific/Norfolk",
14166			"NG|Africa/Lagos",
14167			"NI|America/Managua",
14168			"NL|Europe/Amsterdam",
14169			"NO|Europe/Oslo",
14170			"NP|Asia/Kathmandu",
14171			"NR|Pacific/Nauru",
14172			"NU|Pacific/Niue",
14173			"NZ|Pacific/Auckland Pacific/Chatham",
14174			"OM|Asia/Dubai Asia/Muscat",
14175			"PA|America/Panama",
14176			"PE|America/Lima",
14177			"PF|Pacific/Tahiti Pacific/Marquesas Pacific/Gambier",
14178			"PG|Pacific/Port_Moresby Pacific/Bougainville",
14179			"PH|Asia/Manila",
14180			"PK|Asia/Karachi",
14181			"PL|Europe/Warsaw",
14182			"PM|America/Miquelon",
14183			"PN|Pacific/Pitcairn",
14184			"PR|America/Puerto_Rico",
14185			"PS|Asia/Gaza Asia/Hebron",
14186			"PT|Europe/Lisbon Atlantic/Madeira Atlantic/Azores",
14187			"PW|Pacific/Palau",
14188			"PY|America/Asuncion",
14189			"QA|Asia/Qatar",
14190			"RE|Indian/Reunion",
14191			"RO|Europe/Bucharest",
14192			"RS|Europe/Belgrade",
14193			"RU|Europe/Kaliningrad Europe/Moscow Europe/Simferopol Europe/Kirov Europe/Astrakhan Europe/Volgograd Europe/Saratov Europe/Ulyanovsk Europe/Samara Asia/Yekaterinburg Asia/Omsk Asia/Novosibirsk Asia/Barnaul Asia/Tomsk Asia/Novokuznetsk Asia/Krasnoyarsk Asia/Irkutsk Asia/Chita Asia/Yakutsk Asia/Khandyga Asia/Vladivostok Asia/Ust-Nera Asia/Magadan Asia/Sakhalin Asia/Srednekolymsk Asia/Kamchatka Asia/Anadyr",
vendor: 17,644 bytes, lines 14194-14259
14194			"RW|Africa/Maputo Africa/Kigali",
14195			"SA|Asia/Riyadh",
14196			"SB|Pacific/Guadalcanal",
14197			"SC|Indian/Mahe",
14198			"SD|Africa/Khartoum",
14199			"SE|Europe/Stockholm",
14200			"SG|Asia/Singapore",
14201			"SH|Africa/Abidjan Atlantic/St_Helena",
14202			"SI|Europe/Belgrade Europe/Ljubljana",
14203			"SJ|Europe/Oslo Arctic/Longyearbyen",
14204			"SK|Europe/Prague Europe/Bratislava",
14205			"SL|Africa/Abidjan Africa/Freetown",
14206			"SM|Europe/Rome Europe/San_Marino",
14207			"SN|Africa/Abidjan Africa/Dakar",
14208			"SO|Africa/Nairobi Africa/Mogadishu",
14209			"SR|America/Paramaribo",
14210			"SS|Africa/Juba",
14211			"ST|Africa/Sao_Tome",
14212			"SV|America/El_Salvador",
14213			"SX|America/Curacao America/Lower_Princes",
14214			"SY|Asia/Damascus",
14215			"SZ|Africa/Johannesburg Africa/Mbabane",
14216			"TC|America/Grand_Turk",
14217			"TD|Africa/Ndjamena",
14218			"TF|Indian/Reunion Indian/Kerguelen",
14219			"TG|Africa/Abidjan Africa/Lome",
14220			"TH|Asia/Bangkok",
14221			"TJ|Asia/Dushanbe",
14222			"TK|Pacific/Fakaofo",
14223			"TL|Asia/Dili",
14224			"TM|Asia/Ashgabat",
14225			"TN|Africa/Tunis",
14226			"TO|Pacific/Tongatapu",
14227			"TR|Europe/Istanbul",
14228			"TT|America/Port_of_Spain",
14229			"TV|Pacific/Funafuti",
14230			"TW|Asia/Taipei",
14231			"TZ|Africa/Nairobi Africa/Dar_es_Salaam",
14232			"UA|Europe/Simferopol Europe/Kiev Europe/Uzhgorod Europe/Zaporozhye",
14233			"UG|Africa/Nairobi Africa/Kampala",
14234			"UM|Pacific/Pago_Pago Pacific/Wake Pacific/Honolulu Pacific/Midway",
14235			"US|America/New_York America/Detroit America/Kentucky/Louisville America/Kentucky/Monticello America/Indiana/Indianapolis America/Indiana/Vincennes America/Indiana/Winamac America/Indiana/Marengo America/Indiana/Petersburg America/Indiana/Vevay America/Chicago America/Indiana/Tell_City America/Indiana/Knox America/Menominee America/North_Dakota/Center America/North_Dakota/New_Salem America/North_Dakota/Beulah America/Denver America/Boise America/Phoenix America/Los_Angeles America/Anchorage America/Juneau America/Sitka America/Metlakatla America/Yakutat America/Nome America/Adak Pacific/Honolulu",
14236			"UY|America/Montevideo",
14237			"UZ|Asia/Samarkand Asia/Tashkent",
14238			"VA|Europe/Rome Europe/Vatican",
14239			"VC|America/Port_of_Spain America/St_Vincent",
14240			"VE|America/Caracas",
14241			"VG|America/Port_of_Spain America/Tortola",
14242			"VI|America/Port_of_Spain America/St_Thomas",
14243			"VN|Asia/Bangkok Asia/Ho_Chi_Minh",
14244			"VU|Pacific/Efate",
14245			"WF|Pacific/Wallis",
14246			"WS|Pacific/Apia",
14247			"YE|Asia/Riyadh Asia/Aden",
14248			"YT|Africa/Nairobi Indian/Mayotte",
14249			"ZA|Africa/Johannesburg",
14250			"ZM|Africa/Maputo Africa/Lusaka",
14251			"ZW|Africa/Maputo Africa/Harare"
14252		]
14253	});
14254
14255
14256	return moment;
14257}));
14258;
14259/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=function(b,c){return void 0===c&&(c="undefined"!=typeof window?require("jquery"):require("jquery")(b)),a(c),c}:a(jQuery)}(function(a){var b=function(){if(a&&a.fn&&a.fn.select2&&a.fn.select2.amd)var b=a.fn.select2.amd;var b;return function(){if(!b||!b.requirejs){b?c=b:b={};var a,c,d;!function(b){function e(a,b){return v.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o=b&&b.split("/"),p=t.map,q=p&&p["*"]||{};if(a){for(a=a.split("/"),g=a.length-1,t.nodeIdCompat&&x.test(a[g])&&(a[g]=a[g].replace(x,"")),"."===a[0].charAt(0)&&o&&(n=o.slice(0,o.length-1),a=n.concat(a)),k=0;k<a.length;k++)if("."===(m=a[k]))a.splice(k,1),k-=1;else if(".."===m){if(0===k||1===k&&".."===a[2]||".."===a[k-1])continue;k>0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}if((o||q)&&p){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),o)for(l=o.length;l>0;l-=1)if((e=p[o.slice(0,l).join("/")])&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&q&&q[d]&&(i=q[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(a,c){return function(){var d=w.call(arguments,0);return"string"!=typeof d[0]&&1===d.length&&d.push(null),o.apply(b,d.concat([a,c]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){r[a]=b}}function j(a){if(e(s,a)){var c=s[a];delete s[a],u[a]=!0,n.apply(b,c)}if(!e(r,a)&&!e(u,a))throw new Error("No "+a);return r[a]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return a?k(a):[]}function m(a){return function(){return t&&t.config&&t.config[a]||{}}}var n,o,p,q,r={},s={},t={},u={},v=Object.prototype.hasOwnProperty,w=[].slice,x=/\.js$/;p=function(a,b){var c,d=k(a),e=d[0],g=b[1];return a=d[1],e&&(e=f(e,g),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(g)):f(a,g):(a=f(a,g),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},q={require:function(a){return g(a)},exports:function(a){var b=r[a];return void 0!==b?b:r[a]={}},module:function(a){return{id:a,uri:"",exports:r[a],config:m(a)}}},n=function(a,c,d,f){var h,k,m,n,o,t,v,w=[],x=typeof d;if(f=f||a,t=l(f),"undefined"===x||"function"===x){for(c=!c.length&&d.length?["require","exports","module"]:c,o=0;o<c.length;o+=1)if(n=p(c[o],t),"require"===(k=n.f))w[o]=q.require(a);else if("exports"===k)w[o]=q.exports(a),v=!0;else if("module"===k)h=w[o]=q.module(a);else if(e(r,k)||e(s,k)||e(u,k))w[o]=j(k);else{if(!n.p)throw new Error(a+" missing "+k);n.p.load(n.n,g(f,!0),i(k),{}),w[o]=r[k]}m=d?d.apply(r[a],w):void 0,a&&(h&&h.exports!==b&&h.exports!==r[a]?r[a]=h.exports:m===b&&v||(r[a]=m))}else a&&(r[a]=d)},a=c=o=function(a,c,d,e,f){if("string"==typeof a)return q[a]?q[a](c):j(p(a,l(c)).f);if(!a.splice){if(t=a,t.deps&&o(t.deps,t.callback),!c)return;c.splice?(a=c,c=d,d=null):a=b}return c=c||function(){},"function"==typeof d&&(d=e,e=f),e?n(b,a,c,d):setTimeout(function(){n(b,a,c,d)},4),o},o.config=function(a){return o(a)},a._defined=r,d=function(a,b,c){if("string"!=typeof a)throw new Error("See almond README: incorrect module build, no module name");b.splice||(c=b,b=[]),e(r,a)||e(s,a)||(s[a]=[a,b,c])},d.amd={jQuery:!0}}(),b.requirejs=a,b.require=c,b.define=d}}(),b.define("almond",function(){}),b.define("jquery",[],function(){var b=a||$;return null==b&&console&&console.error&&console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."),b}),b.define("select2/utils",["jquery"],function(a){function b(a){var b=a.prototype,c=[];for(var d in b){"function"==typeof b[d]&&("constructor"!==d&&c.push(d))}return c}var c={};c.Extend=function(a,b){function c(){this.constructor=a}var d={}.hasOwnProperty;for(var e in b)d.call(b,e)&&(a[e]=b[e]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},c.Decorate=function(a,c){function d(){var b=Array.prototype.unshift,d=c.prototype.constructor.length,e=a.prototype.constructor;d>0&&(b.call(arguments,a.prototype.constructor),e=c.prototype.constructor),e.apply(this,arguments)}function e(){this.constructor=d}var f=b(c),g=b(a);c.displayName=a.displayName,d.prototype=new e;for(var h=0;h<g.length;h++){var i=g[h];d.prototype[i]=a.prototype[i]}for(var j=(function(a){var b=function(){};a in d.prototype&&(b=d.prototype[a]);var e=c.prototype[a];return function(){return Array.prototype.unshift.call(arguments,b),e.apply(this,arguments)}}),k=0;k<f.length;k++){var l=f[k];d.prototype[l]=j(l)}return d};var d=function(){this.listeners={}};d.prototype.on=function(a,b){this.listeners=this.listeners||{},a in this.listeners?this.listeners[a].push(b):this.listeners[a]=[b]},d.prototype.trigger=function(a){var b=Array.prototype.slice,c=b.call(arguments,1);this.listeners=this.listeners||{},null==c&&(c=[]),0===c.length&&c.push({}),c[0]._type=a,a in this.listeners&&this.invoke(this.listeners[a],b.call(arguments,1)),"*"in this.listeners&&this.invoke(this.listeners["*"],arguments)},d.prototype.invoke=function(a,b){for(var c=0,d=a.length;c<d;c++)a[c].apply(this,b)},c.Observable=d,c.generateChars=function(a){for(var b="",c=0;c<a;c++){b+=Math.floor(36*Math.random()).toString(36)}return b},c.bind=function(a,b){return function(){a.apply(b,arguments)}},c._convertData=function(a){for(var b in a){var c=b.split("-"),d=a;if(1!==c.length){for(var e=0;e<c.length;e++){var f=c[e];f=f.substring(0,1).toLowerCase()+f.substring(1),f in d||(d[f]={}),e==c.length-1&&(d[f]=a[b]),d=d[f]}delete a[b]}}return a},c.hasScroll=function(b,c){var d=a(c),e=c.style.overflowX,f=c.style.overflowY;return(e!==f||"hidden"!==f&&"visible"!==f)&&("scroll"===e||"scroll"===f||(d.innerHeight()<c.scrollHeight||d.innerWidth()<c.scrollWidth))},c.escapeMarkup=function(a){var b={"\\":"&#92;","&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#47;"};return"string"!=typeof a?a:String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})},c.appendMany=function(b,c){if("1.7"===a.fn.jquery.substr(0,3)){var d=a();a.map(c,function(a){d=d.add(a)}),c=d}b.append(c)},c.__cache={};var e=0;return c.GetUniqueElementId=function(a){var b=a.getAttribute("data-select2-id");return null==b&&(a.id?(b=a.id,a.setAttribute("data-select2-id",b)):(a.setAttribute("data-select2-id",++e),b=e.toString())),b},c.StoreData=function(a,b,d){var e=c.GetUniqueElementId(a);c.__cache[e]||(c.__cache[e]={}),c.__cache[e][b]=d},c.GetData=function(b,d){var e=c.GetUniqueElementId(b);return d?c.__cache[e]&&null!=c.__cache[e][d]?c.__cache[e][d]:a(b).data(d):c.__cache[e]},c.RemoveData=function(a){var b=c.GetUniqueElementId(a);null!=c.__cache[b]&&delete c.__cache[b]},c}),b.define("select2/results",["jquery","./utils"],function(a,b){function c(a,b,d){this.$element=a,this.data=d,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<ul class="select2-results__options" role="tree"></ul>');return this.options.get("multiple")&&b.attr("aria-multiselectable","true"),this.$results=b,b},c.prototype.clear=function(){this.$results.empty()},c.prototype.displayMessage=function(b){var c=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var d=a('<li role="treeitem" aria-live="assertive" class="select2-results__option"></li>'),e=this.options.get("translations").get(b.message);d.append(c(e(b.args))),d[0].className+=" select2-results__message",this.$results.append(d)},c.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},c.prototype.append=function(a){this.hideLoading();var b=[];if(null==a.results||0===a.results.length)return void(0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"}));a.results=this.sort(a.results);for(var c=0;c<a.results.length;c++){var d=a.results[c],e=this.option(d);b.push(e)}this.$results.append(b)},c.prototype.position=function(a,b){b.find(".select2-results").append(a)},c.prototype.sort=function(a){return this.options.get("sorter")(a)},c.prototype.highlightFirstItem=function(){var a=this.$results.find(".select2-results__option[aria-selected]"),b=a.filter("[aria-selected=true]");b.length>0?b.first().trigger("mouseenter"):a.first().trigger("mouseenter"),this.ensureHighlightVisible()},c.prototype.setClasses=function(){var c=this;this.data.current(function(d){var e=a.map(d,function(a){return a.id.toString()});c.$results.find(".select2-results__option[aria-selected]").each(function(){var c=a(this),d=b.GetData(this,"data"),f=""+d.id;null!=d.element&&d.element.selected||null==d.element&&a.inArray(f,e)>-1?c.attr("aria-selected","true"):c.attr("aria-selected","false")})})},c.prototype.showLoading=function(a){this.hideLoading();var b=this.options.get("translations").get("searching"),c={disabled:!0,loading:!0,text:b(a)},d=this.option(c);d.className+=" loading-results",this.$results.prepend(d)},c.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},c.prototype.option=function(c){var d=document.createElement("li");d.className="select2-results__option";var e={role:"treeitem","aria-selected":"false"};c.disabled&&(delete e["aria-selected"],e["aria-disabled"]="true"),null==c.id&&delete e["aria-selected"],null!=c._resultId&&(d.id=c._resultId),c.title&&(d.title=c.title),c.children&&(e.role="group",e["aria-label"]=c.text,delete e["aria-selected"]);for(var f in e){var g=e[f];d.setAttribute(f,g)}if(c.children){var h=a(d),i=document.createElement("strong");i.className="select2-results__group";a(i);this.template(c,i);for(var j=[],k=0;k<c.children.length;k++){var l=c.children[k],m=this.option(l);j.push(m)}var n=a("<ul></ul>",{class:"select2-results__options select2-results__options--nested"});n.append(j),h.append(i),h.append(n)}else this.template(c,d);return b.StoreData(d,"data",c),d},c.prototype.bind=function(c,d){var e=this,f=c.id+"-results";this.$results.attr("id",f),c.on("results:all",function(a){e.clear(),e.append(a.data),c.isOpen()&&(e.setClasses(),e.highlightFirstItem())}),c.on("results:append",function(a){e.append(a.data),c.isOpen()&&e.setClasses()}),c.on("query",function(a){e.hideMessages(),e.showLoading(a)}),c.on("select",function(){c.isOpen()&&(e.setClasses(),e.highlightFirstItem())}),c.on("unselect",function(){c.isOpen()&&(e.setClasses(),e.highlightFirstItem())}),c.on("open",function(){e.$results.attr("aria-expanded","true"),e.$results.attr("aria-hidden","false"),e.setClasses(),e.ensureHighlightVisible()}),c.on("close",function(){e.$results.attr("aria-expanded","false"),e.$results.attr("aria-hidden","true"),e.$results.removeAttr("aria-activedescendant")}),c.on("results:toggle",function(){var a=e.getHighlightedResults();0!==a.length&&a.trigger("mouseup")}),c.on("results:select",function(){var a=e.getHighlightedResults();if(0!==a.length){var c=b.GetData(a[0],"data");"true"==a.attr("aria-selected")?e.trigger("close",{}):e.trigger("select",{data:c})}}),c.on("results:previous",function(){var a=e.getHighlightedResults(),b=e.$results.find("[aria-selected]"),c=b.index(a);if(!(c<=0)){var d=c-1;0===a.length&&(d=0);var f=b.eq(d);f.trigger("mouseenter");var g=e.$results.offset().top,h=f.offset().top,i=e.$results.scrollTop()+(h-g);0===d?e.$results.scrollTop(0):h-g<0&&e.$results.scrollTop(i)}}),c.on("results:next",function(){var a=e.getHighlightedResults(),b=e.$results.find("[aria-selected]"),c=b.index(a),d=c+1;if(!(d>=b.length)){var f=b.eq(d);f.trigger("mouseenter");var g=e.$results.offset().top+e.$results.outerHeight(!1),h=f.offset().top+f.outerHeight(!1),i=e.$results.scrollTop()+h-g;0===d?e.$results.scrollTop(0):h>g&&e.$results.scrollTop(i)}}),c.on("results:focus",function(a){a.element.addClass("select2-results__option--highlighted")}),c.on("results:message",function(a){e.displayMessage(a)}),a.fn.mousewheel&&this.$results.on("mousewheel",function(a){var b=e.$results.scrollTop(),c=e.$results.get(0).scrollHeight-b+a.deltaY,d=a.deltaY>0&&b-a.deltaY<=0,f=a.deltaY<0&&c<=e.$results.height();d?(e.$results.scrollTop(0),a.preventDefault(),a.stopPropagation()):f&&(e.$results.scrollTop(e.$results.get(0).scrollHeight-e.$results.height()),a.preventDefault(),a.stopPropagation())}),this.$results.on("mouseup",".select2-results__option[aria-selected]",function(c){var d=a(this),f=b.GetData(this,"data");if("true"===d.attr("aria-selected"))return void(e.options.get("multiple")?e.trigger("unselect",{originalEvent:c,data:f}):e.trigger("close",{}));e.trigger("select",{originalEvent:c,data:f})}),this.$results.on("mouseenter",".select2-results__option[aria-selected]",function(c){var d=b.GetData(this,"data");e.getHighlightedResults().removeClass("select2-results__option--highlighted"),e.trigger("results:focus",{data:d,element:a(this)})})},c.prototype.getHighlightedResults=function(){return this.$results.find(".select2-results__option--highlighted")},c.prototype.destroy=function(){this.$results.remove()},c.prototype.ensureHighlightVisible=function(){var a=this.getHighlightedResults();if(0!==a.length){var b=this.$results.find("[aria-selected]"),c=b.index(a),d=this.$results.offset().top,e=a.offset().top,f=this.$results.scrollTop()+(e-d),g=e-d;f-=2*a.outerHeight(!1),c<=2?this.$results.scrollTop(0):(g>this.$results.outerHeight()||g<0)&&this.$results.scrollTop(f)}},c.prototype.template=function(b,c){var d=this.options.get("templateResult"),e=this.options.get("escapeMarkup"),f=d(b,c);null==f?c.style.display="none":"string"==typeof f?c.innerHTML=e(f):a(c).append(f)},c}),b.define("select2/keys",[],function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}}),b.define("select2/selection/base",["jquery","../utils","../keys"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,b.Observable),d.prototype.render=function(){var c=a('<span class="select2-selection" role="combobox"  aria-haspopup="true" aria-expanded="false"></span>');return this._tabindex=0,null!=b.GetData(this.$element[0],"old-tabindex")?this._tabindex=b.GetData(this.$element[0],"old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),c.attr("title",this.$element.attr("title")),c.attr("tabindex",this._tabindex),this.$selection=c,c},d.prototype.bind=function(a,b){var d=this,e=(a.id,a.id+"-results");this.container=a,this.$selection.on("focus",function(a){d.trigger("focus",a)}),this.$selection.on("blur",function(a){d._handleBlur(a)}),this.$selection.on("keydown",function(a){d.trigger("keypress",a),a.which===c.SPACE&&a.preventDefault()}),a.on("results:focus",function(a){d.$selection.attr("aria-activedescendant",a.data._resultId)}),a.on("selection:update",function(a){d.update(a.data)}),a.on("open",function(){d.$selection.attr("aria-expanded","true"),d.$selection.attr("aria-owns",e),d._attachCloseHandler(a)}),a.on("close",function(){d.$selection.attr("aria-expanded","fal
14259se"),d.$selection.removeAttr("aria-activedescendant"),d.$selection.removeAttr("aria-owns"),d.$selection.focus(),window.setTimeout(function(){d.$selection.focus()},0),d._detachCloseHandler(a)}),a.on("enable",function(){d.$selection.attr("tabindex",d._tabindex)}),a.on("disable",function(){d.$selection.attr("tabindex","-1")})},d.prototype._handleBlur=function(b){var c=this;window.setTimeout(function(){document.activeElement==c.$selection[0]||a.contains(c.$selection[0],document.activeElement)||c.trigger("blur",b)},1)},d.prototype._attachCloseHandler=function(c){a(document.body).on("mousedown.select2."+c.id,function(c){var d=a(c.target),e=d.closest(".select2");a(".select2.select2-container--open").each(function(){a(this),this!=e[0]&&b.GetData(this,"element").select2("close")})})},d.prototype._detachCloseHandler=function(b){a(document.body).off("mousedown.select2."+b.id)},d.prototype.position=function(a,b){b.find(".selection").append(a)},d.prototype.destroy=function(){this._detachCloseHandler(this.container)},d.prototype.update=function(a){throw new Error("The `update` method must be defined in child classes.")},d}),b.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(a,b,c,d){function e(){e.__super__.constructor.apply(this,arguments)}return c.Extend(e,b),e.prototype.render=function(){var a=e.__super__.render.call(this);return a.addClass("select2-selection--single"),a.html('<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>'),a},e.prototype.bind=function(a,b){var c=this;e.__super__.bind.apply(this,arguments);var d=a.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",d).attr("role","textbox").attr("aria-readonly","true"),this.$selection.attr("aria-labelledby",d),this.$selection.on("mousedown",function(a){1===a.which&&c.trigger("toggle",{originalEvent:a})}),this.$selection.on("focus",function(a){}),this.$selection.on("blur",function(a){}),a.on("focus",function(b){a.isOpen()||c.$selection.focus()})},e.prototype.clear=function(){var a=this.$selection.find(".select2-selection__rendered");a.empty(),a.removeAttr("title")},e.prototype.display=function(a,b){var c=this.options.get("templateSelection");return this.options.get("escapeMarkup")(c(a,b))},e.prototype.selectionContainer=function(){return a("<span></span>")},e.prototype.update=function(a){if(0===a.length)return void this.clear();var b=a[0],c=this.$selection.find(".select2-selection__rendered"),d=this.display(b,c);c.empty().append(d),c.attr("title",b.title||b.text)},e}),b.define("select2/selection/multiple",["jquery","./base","../utils"],function(a,b,c){function d(a,b){d.__super__.constructor.apply(this,arguments)}return c.Extend(d,b),d.prototype.render=function(){var a=d.__super__.render.call(this);return a.addClass("select2-selection--multiple"),a.html('<ul class="select2-selection__rendered"></ul>'),a},d.prototype.bind=function(b,e){var f=this;d.__super__.bind.apply(this,arguments),this.$selection.on("click",function(a){f.trigger("toggle",{originalEvent:a})}),this.$selection.on("click",".select2-selection__choice__remove",function(b){if(!f.options.get("disabled")){var d=a(this),e=d.parent(),g=c.GetData(e[0],"data");f.trigger("unselect",{originalEvent:b,data:g})}})},d.prototype.clear=function(){var a=this.$selection.find(".select2-selection__rendered");a.empty(),a.removeAttr("title")},d.prototype.display=function(a,b){var c=this.options.get("templateSelection");return this.options.get("escapeMarkup")(c(a,b))},d.prototype.selectionContainer=function(){return a('<li class="select2-selection__choice"><span class="select2-selection__choice__remove" role="presentation">&times;</span></li>')},d.prototype.update=function(a){if(this.clear(),0!==a.length){for(var b=[],d=0;d<a.length;d++){var e=a[d],f=this.selectionContainer(),g=this.display(e,f);f.append(g),f.attr("title",e.title||e.text),c.StoreData(f[0],"data",e),b.push(f)}var h=this.$selection.find(".select2-selection__rendered");c.appendMany(h,b)}},d}),b.define("select2/selection/placeholder",["../utils"],function(a){function b(a,b,c){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c)}return b.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},b.prototype.createPlaceholder=function(a,b){var c=this.selectionContainer();return c.html(this.display(b)),c.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"),c},b.prototype.update=function(a,b){var c=1==b.length&&b[0].id!=this.placeholder.id;if(b.length>1||c)return a.call(this,b);this.clear();var d=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(d)},b}
vendor: 5,324 bytes, line 14259
14259),b.define("select2/selection/allowClear",["jquery","../keys","../utils"],function(a,b,c){function d(){}return d.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error&&console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."),this.$selection.on("mousedown",".select2-selection__clear",function(a){d._handleClear(a)}),b.on("keypress",function(a){d._handleKeyboardClear(a,b)})},d.prototype._handleClear=function(a,b){if(!this.options.get("disabled")){var d=this.$selection.find(".select2-selection__clear");if(0!==d.length){b.stopPropagation();var e=c.GetData(d[0],"data"),f=this.$element.val();this.$element.val(this.placeholder.id);var g={data:e};if(this.trigger("clear",g),g.prevented)return void this.$element.val(f);for(var h=0;h<e.length;h++)if(g={data:e[h]},this.trigger("unselect",g),g.prevented)return void this.$element.val(f);this.$element.trigger("change"),this.trigger("toggle",{})}}},d.prototype._handleKeyboardClear=function(a,c,d){d.isOpen()||c.which!=b.DELETE&&c.which!=b.BACKSPACE||this._handleClear(c)},d.prototype.update=function(b,d){if(b.call(this,d),!(this.$selection.find(".select2-selection__placeholder").length>0||0===d.length)){var e=a('<span class="select2-selection__clear">&times;</span>');c.StoreData(e[0],"data",d),this.$selection.find(".select2-selection__rendered").prepend(e)}},d}),b.define("select2/selection/search",["jquery","../utils","../keys"],function(a,b,c){function d(a,b,c){a.call(this,b,c)}return d.prototype.render=function(b){var c=a('<li class="select2-search select2-search--inline"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" role="textbox" aria-autocomplete="list" /></li>');this.$searchContainer=c,this.$search=c.find("input");var d=b.call(this);return this._transferTabIndex(),d},d.prototype.bind=function(a,d,e){var f=this;a.call(this,d,e),d.on("open",function(){f.$search.trigger("focus")}),d.on("close",function(){f.$search.val(""),f.$search.removeAttr("aria-activedescendant"),f.$search.trigger("focus")}),d.on("enable",function(){f.$search.prop("disabled",!1),f._transferTabIndex()}),d.on("disable",function(){f.$search.prop("disabled",!0)}),d.on("focus",function(a){f.$search.trigger("focus")}),d.on("results:focus",function(a){f.$search.attr("aria-activedescendant",a.id)}),this.$selection.on("focusin",".select2-search--inline",function(a){f.trigger("focus",a)}),this.$selection.on("focusout",".select2-search--inline",function(a){f._handleBlur(a)}),this.$selection.on("keydown",".select2-search--inline",function(a){if(a.stopPropagation(),f.trigger("keypress",a),f._keyUpPrevented=a.isDefaultPrevented(),a.which===c.BACKSPACE&&""===f.$search.val()){var d=f.$searchContainer.prev(".select2-selection__choice");if(d.length>0){var e=b.GetData(d[0],"data");f.searchRemoveChoice(e),a.preventDefault()}}});var g=document.documentMode,h=g&&g<=11;this.$selection.on("input.searchcheck",".select2-search--inline",function(a){if(h)return void f.$selection.off("input.search input.searchcheck");f.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(a){if(h&&"input"===a.type)return void f.$selection.off("input.search input.searchcheck");var b=a.which;b!=c.SHIFT&&b!=c.CTRL&&b!=c.ALT&&b!=c.TAB&&f.handleSearch(a)})},d.prototype._transferTabIndex=function(a){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},d.prototype.createPlaceholder=function(a,b){this.$search.attr("placeholder",b.text)},d.prototype.update=function(a,b){var c=this.$search[0]==document.activeElement;if(this.$search.attr("placeholder",""),a.call(this,b),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),c){this.$element.find("[data-select2-tag]").length?this.$element.focus():this.$search.focus()}},d.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},d.prototype.searchRemoveChoice=function(a,b){this.trigger("unselect",{data:b}),this.$search.val(b.text),this.handleSearch()},d.prototype.resizeSearch=function(){this.$search.css("width","25px");var a="";if(""!==this.$search.attr("placeholder"))a=this.$selection.find(".select2-selection__rendered").innerWidth();else{a=.75*(this.$search.val().length+1)+"em"}this.$search.css("width",a)},d}),b.define("select2/selection/eventRelay",["jquery"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this,f=["open","opening","close","closing","select","selecting","unselect","unselecting","clear","clearing"],g=["opening","closing","selecting","unselecting","clearing"];b.call(this,c,d),c.on("*",function(b,c){if(-1!==a.inArray(b,f)){c=c||{};var d=a.Event("select2:"+b,{params:c});e.$element.trigger(d),-1!==a.inArray(b,g)&&(c.prevented=d.isDefaultPrevented())}})},b}),b.define("select2/translation",["jquery","require"],function(a,b){function c(a){this.dict=a||{}}return c.prototype.all=function(){return this.dict},c.prototype.get=function(a){return this.dict[a]},c.prototype.extend=function(b){this.dict=a.extend({}
14259,b.all(),this.dict)},c._cache={},c.loadPath=function(a){if(!(a in c._cache)){var d=b(a);c._cache[a]=d}return new c(c._cache[a])},c}),b.define("select2/diacritics",[],function(){return{"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"
14259c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ω":"ω","ς":"σ"}}),b.define("select2/data/base",["../utils"],function(a){function b(a,c){b.__super__.constructor.call(this)}return a.Extend(b,a.Observable),b.prototype.current=function(a){throw new Error("The `current` method must be defined in child classes.")},b.prototype.query=function(a,b){throw new Error("The `query` method must be defined in child classes.")},b.prototype.bind=function(a,b){},b.prototype.destroy=function(){},b.prototype.generateResultId=function(b,c){var d=b.id+"-result-";return d+=a.generateChars(4),null!=c.id?d+="-"+c.id.toString():d+="-"+a.generateChars(4),d},b}),b.define("select2/data/select",["./base","../utils","jquery"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,a),d.prototype.current=function(a){var b=[],d=this;this.$element.find(":selected").each(function(){var a=c(this),e=d.item(a);b.push(e)}),a(b)},d.prototype.select=function(a){var b=this;if(a.selected=!0,c(a.element).is("option"))return a.element.selected=!0,void this.$element.trigger("change");if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f<a.length;f++){var g=a[f].id;-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")});else{var d=a.id;this.$element.val(d),this.$element.trigger("change")}},d.prototype.unselect=function(a){var b=this;if(this.$element.prop("multiple")){if(a.selected=!1,c(a.element).is("option"))return a.element.selected=!1,void this.$element.trigger("change");this.current(function(d){for(var e=[],f=0;f<d.length;f++){var g=d[f].id;g!==a.id&&-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")})}},d.prototype.bind=function(a,b){var c=this;this.container=a,a.on("select",function(a){c.select(a.data)}),a.on("unselect",function(a){c.unselect(a.data)})},d.prototype.destroy=function(){this.$element.find("*").each(function(){b.RemoveData(this)})},d.prototype.query=function(a,b){var d=[],e=this;this.$element.children().each(function(){var b=c(this);if(b.is("option")||b.is("optgroup")){var f=e.item(b),g=e.matches(a,f);null!==g&&d.push(g)}}),b({results:d})},d.prototype.addOptions=function(a){b.appendMany(this.$element,a)},d.prototype.option=function(a){var d;a.children?(d=document.createElement("optgroup"),d.label=a.text):(d=document.createElement("option"),void 0!==d.textContent?d.textContent=a.text:d.innerText=a.text),void 0!==a.id&&(d.value=a.id),a.disabled&&(d.disabled=!0),a.selected&&(
vendor: 14,697 bytes, line 14259
14259d.selected=!0),a.title&&(d.title=a.title);var e=c(d),f=this._normalizeItem(a);return f.element=d,b.StoreData(d,"data",f),e},d.prototype.item=function(a){var d={};if(null!=(d=b.GetData(a[0],"data")))return d;if(a.is("option"))d={id:a.val(),text:a.text(),disabled:a.prop("disabled"),selected:a.prop("selected"),title:a.prop("title")};else if(a.is("optgroup")){d={text:a.prop("label"),children:[],title:a.prop("title")};for(var e=a.children("option"),f=[],g=0;g<e.length;g++){var h=c(e[g]),i=this.item(h);f.push(i)}d.children=f}return d=this._normalizeItem(d),d.element=a[0],b.StoreData(a[0],"data",d),d},d.prototype._normalizeItem=function(a){a!==Object(a)&&(a={id:a,text:a}),a=c.extend({},{text:""},a);var b={selected:!1,disabled:!1};return null!=a.id&&(a.id=a.id.toString()),null!=a.text&&(a.text=a.text.toString()),null==a._resultId&&a.id&&null!=this.container&&(a._resultId=this.generateResultId(this.container,a)),c.extend({},b,a)},d.prototype.matches=function(a,b){return this.options.get("matcher")(a,b)},d}),b.define("select2/data/array",["./select","../utils","jquery"],function(a,b,c){function d(a,b){var c=b.get("data")||[];d.__super__.constructor.call(this,a,b),this.addOptions(this.convertToOptions(c))}return b.Extend(d,a),d.prototype.select=function(a){var b=this.$element.find("option").filter(function(b,c){return c.value==a.id.toString()});0===b.length&&(b=this.option(a),this.addOptions(b)),d.__super__.select.call(this,a)},d.prototype.convertToOptions=function(a){function d(a){return function(){return c(this).val()==a.id}}for(var e=this,f=this.$element.find("option"),g=f.map(function(){return e.item(c(this)).id}).get(),h=[],i=0;i<a.length;i++){var j=this._normalizeItem(a[i]);if(c.inArray(j.id,g)>=0){var k=f.filter(d(j)),l=this.item(k),m=c.extend(!0,{},j,l),n=this.option(m);k.replaceWith(n)}else{var o=this.option(j);if(j.children){var p=this.convertToOptions(j.children);b.appendMany(o,p)}h.push(o)}}return h},d}),b.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(a,b){this.ajaxOptions=this._applyDefaults(b.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),d.__super__.constructor.call(this,a,b)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return c.extend({},a,{q:a.term})},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f)},function(){"status"in d&&(0===d.status||"0"===d.status)||e.trigger("results:message",{message:"errorLoading"})});e._request=d}var e=this;null!=this._request&&(c.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url.call(this.$element,a)),"function"==typeof f.data&&(f.data=f.data.call(this.$element,a)),this.ajaxOptions.delay&&null!=a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");void 0!==f&&(this.createTag=f);var g=d.get("insertTag");if(void 0!==g&&(this.insertTag=g),b.call(this,c,d),a.isArray(e))for(var h=0;h<e.length;h++){var i=e[h],j=this._normalizeItem(i),k=this.option(j);this.$element.append(k)}}return b.prototype.query=function(a,b,c){function d(a,f){for(var g=a.results,h=0;h<g.length;h++){var i=g[h],j=null!=i.children&&!d({results:i.children},!0);if((i.text||"").toUpperCase()===(b.term||"").toUpperCase()||j)return!f&&(a.data=g,void c(a))}if(f)return!0;var k=e.createTag(b);if(null!=k){var l=e.option(k);l.attr("data-select2-tag",!0),e.addOptions([l]),e.insertTag(g,k)}a.results=g,c(a)}var e=this;if(this._removeOldTags(),null==b.term||null!=b.page)return void a.call(this,b,c);a.call(this,b,d)},b.prototype.createTag=function(b,c){var d=a.trim(c.term);return""===d?null:{id:d,text:d}},b.prototype.insertTag=function(a,b,c){b.unshift(c)},b.prototype._removeOldTags=function(b){this._lastTag;this.$element.find("option[data-select2-tag]").each(function(){this.selected||a(this).remove()})},b}),b.define("select2/data/tokenizer",["jquery"],function(a){function b(a,b,c){var d=c.get("tokenizer");void 0!==d&&(this.tokenizer=d),a.call(this,b,c)}return b.prototype.bind=function(a,b,c){a.call(this,b,c),this.$search=b.dropdown.$search||b.selection.$search||c.find(".select2-search__field")},b.prototype.query=function(b,c,d){function e(b){var c=g._normalizeItem(b);if(!g.$element.find("option").filter(function(){return a(this).val()===c.id}).length){var d=g.option(c);d.attr("data-select2-tag",!0),g._removeOldTags(),g.addOptions([d])}f(c)}function f(a){g.trigger("select",{data:a})}var g=this;c.term=c.term||"";var h=this.tokenizer(c,this.options,e);h.term!==c.term&&(this.$search.length&&(this.$search.val(h.term),this.$search.focus()),c.term=h.term),b.call(this,c,d)},b.prototype.tokenizer=function(b,c,d,e){for(var f=d.get("tokenSeparators")||[],g=c.term,h=0,i=this.createTag||function(a){return{id:a.term,text:a.term}};h<g.length;){var j=g[h];if(-1!==a.inArray(j,f)){var k=g.substr(0,h),l=a.extend({},c,{term:k}),m=i(l);null!=m?(e(m),g=g.substr(h+1)||"",h=0):h++}else h++}return{term:g}},b}),b.define("select2/data/minimumInputLength",[],function(){function a(a,b,c){this.minimumInputLength=c.get("minimumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){if(b.term=b.term||"",b.term.length<this.minimumInputLength)return void this.trigger("results:message",{message:"inputTooShort",args:{minimum:this.minimumInputLength,input:b.term,params:b}});a.call(this,b,c)},a}),b.define("select2/data/maximumInputLength",[],function(){function a(a,b,c){this.maximumInputLength=c.get("maximumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){if(b.term=b.term||"",this.maximumInputLength>0&&b.term.length>this.maximumInputLength)return void this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:b.term,params:b}});a.call(this,b,c)},a}),b.define("select2/data/maximumSelectionLength",[],function(){function a(a,b,c){this.maximumSelectionLength=c.get("maximumSelectionLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){var d=this;this.current(function(e){var f=null!=e?e.length:0;if(d.maximumSelectionLength>0&&f>=d.maximumSelectionLength)return void d.trigger("results:message",{message:"maximumSelected",args:{maximum:d.maximumSelectionLength}});a.call(d,b,c)})},a}),b.define("select2/dropdown",["jquery","./utils"],function(a,b){function c(a,b){this.$element=a,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<span class="select2-dropdown"><span class="select2-results"></span></span>');return b.attr("dir",this.options.get("dir")),this.$dropdown=b,b},c.prototype.bind=function(){},c.prototype.position=function(a,b){},c.prototype.destroy=function(){this.$dropdown.remove()},c}),b.define("select2/dropdown/search",["jquery","../utils"],function(a,b){function c(){}return c.prototype.render=function(b){var c=b.call(this),d=a('<span class="select2-search select2-search--dropdown"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" role="textbox" /></span>');return this.$searchContainer=d,this.$search=d.find("input"),c.prepend(d),c},c.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),this.$search.on("keydown",function(a){e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented()}),this.$search.on("input",function(b){a(this).off("keyup")}),this.$search.on("keyup input",function(a){e.handleSearch(a)}),c.on("open",function(){e.$search.attr("tabindex",0),e.$search.focus(),window.setTimeout(function(){e.$search.focus()},0)}),c.on("close",function(){e.$search.attr("tabindex",-1),e.$search.val(""),e.$search.blur()}),c.on("focus",function(){c.isOpen()||e.$search.focus()}),c.on("results:all",function(a){if(null==a.query.term||""===a.query.term){e.showSearch(a)?e.$searchContainer.removeClass("select2-search--hide"):e.$searchContainer.addClass("select2-search--hide")}})},c.prototype.handleSearch=function(a){if(!this._keyUpPrevented){var b=this.$search.val();this.trigger("query",{term:b})}this._keyUpPrevented=!1},c.prototype.showSearch=function(a,b){return!0},c}),b.define("select2/dropdown/hidePlaceholder",[],function(){function a(a,b,c,d){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c,d)}return a.prototype.append=function(a,b){b.results=this.removePlaceholder(b.results),a.call(this,b)},a.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},a.prototype.removePlaceholder=function(a,b){for(var c=b.slice(0),d=b.length-1;d>=0;d--){var e=b[d];this.placeholder.id===e.id&&c.splice(d,1)}return c},a}),b.define("select2/dropdown/infiniteScroll",["jquery"],function(a){function b(a,b,c,d){this.lastParams={},a.call(this,b,c,d),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return b.prototype.append=function(a,b){this.$loadingMore.remove(),this.loading=!1,a.call(this,b),this.showLoadingMore(b)&&this.$results.append(this.$loadingMore)},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),c.on("query",function(a){e.lastParams=a,e.loading=!0}),c.on("query:append",function(a){e.lastParams=a,e.loading=!0}),this.$results.on("scroll",function(){var b=a.contains(document.documentElement,e.$loadingMore[0]);if(!e.loading&&b){e.$results.offset().top+e.$results.outerHeight(!1)+50>=e.$loadingMore.offset().top+e.$loadingMore.outerHeight(!1)&&e.loadMore()}})},b.prototype.loadMore=function(){this.loading=!0;var b=a.extend({},{page:1},this.lastParams);b.page++,this.trigger("query:append",b)},b.prototype.showLoadingMore=function(a,b){return b.pagination&&b.pagination.more},b.prototype.createLoadingMore=function(){var b=a('<li class="select2-results__option select2-results__option--load-more"role="treeitem" aria-disabled="true"></li>'),c=this.options.get("translations").get("loadingMore");return b.html(c(this.lastParams)),b},b}),b.define("select2/dropdown/attachBody",["jquery","../utils"],function(a,b){function c(b,c,d){this.$dropdownParent=d.get("dropdownParent")||a(document.body),b.call(this,c,d)}return c.prototype.bind=function(a,b,c){var d=this,e=!1;a.call(this,b,c),b.on("open",function(){d._showDropdown(),d._attachPositioningHandler(b),e||(e=!0,b.on("results:all",function(){d._positionDropdown(),d._resizeDropdown()}),b.on("results:append",function(){d._positionDropdown(),d._resizeDropdown()}))}),b.on("close",function(){d._hideDropdown(),d._detachPositioningHandler(b)}),this.$dropdownContainer.on("mousedown",function(a){a.stopPropagation()})},c.prototype.destroy=function(a){a.call(this),this.$dropdownContainer.remove()},c.prototype.position=function(a,b,c){b.attr("class",c.attr("class")),b.removeClass("select2"),b.addClass("select2-container--open"),b.css({position:"absolute",top:-999999}),this.$container=c},c.prototype.render=function(b){var c=a("<span></span>"),d=b.call(this);return c.append(d),this.$dropdownContainer=c,c},c.prototype._hideDropdown=function(a){this.$dropdownContainer.detach()},c.prototype._attachPositioningHandler=function(c,d){var e=this,f="scroll.select2."+d.id,g="resize.select2."+d.id,h="orientationchange.select2."+d.id,i=this.$container.parents().filter(b.hasScroll);i.each(function(){b.StoreData(this,"select2-scroll-position",{x:a(this).scrollLeft(),y:a(this).scrollTop()})}),i.on(f,function(c){var d=b.GetData(this,"select2-scroll-position");a(this).scrollTop(d.y)}),a(window).on(f+" "+g+" "+h,function(a){e._positionDropdown(),e._resizeDropdown()})},c.prototype._detachPositioningHandler=function(c,d){var e="scroll.select2."+d.id,f="resize.select2."+d.id,g="orientationchange.select2."+d.id;this.$container.parents().filter(b.hasScroll).off(e),a(window).off(e+" "+f+" "+g)},c.prototype._positionDropdown=function(){var b=a(window),c=this.$dropdown.hasClass("select2-dropdown--above"),d=this.$dropdown.hasClass("select2-dropdown--below"),e=null,f=this.$container.offset();f.bottom=f.top+this.$container.outerHeight(!1);var g={height:this.$container.outerHeight(!1)};g.top=f.top,g.bottom=f.top+g.height;var h={height:this.$dropdown.outerHeight(!1)},i={top:b.scrollTop(),bottom:b.scrollTop()+b.height()},j=i.top<f.top-h.height,k=i.bottom>f.bottom+h.height,l={left:f.left,top:g.bottom},m=this.$dropdownParent;"static"===m.css("position")&&(m=m.offsetParent());var n=m.offset();l.top-=n.top,l.left-=n.left,c||d||(e="below"),k||!j||c?!j&&k&&c&&(e="below"):e="above",("above"==e||c&&"below"!==e)&&(l.top=g.top-n.top-h.height),null!=e&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+e),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+e)),this.$dropdownContainer.css(l)},c.prototype._resizeDropdown=function(){var a={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(a.minWidth=a.width,a.position="relative",a.width="auto"),this.$dropdown.css(a)},c.prototype._showDropdown=function(a){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},c}),b.define("select2/dropdown/minimumResultsForSearch",[],function(){function a(b){for(var c=0,d=0;d<b.length;d++){var e=b[d];e.children?c+=a(e.children):c++}return c}function b(a,b,c,d){this.minimumResultsForSearch=c.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),a.call(this,b,c,d)}return b.prototype.showSearch=function(b,c){return!(a(c.data.results)<this.minimumResultsForSearch)&&b.call(this,c)},b}),b.define("select2/dropdown/selectOnClose",["../utils"],function(a){function b(){}return b.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("close",function(a){d._handleSelectOnClose(a)})},b.prototype._handleSelectOnClose=function(b,c){if(c&&null!=c.originalSelect2Event){var d=c.originalSelect2Event;if("select"===d._type||"unselect"===d._type)return}var e=this.getHighlightedResults();if(!(e.length<1)){var f=a.GetData(e[0],"data");null!=f.element&&f.element.selected||null==f.element&&f.selected||this.trigger("select",{data:f})}},b
vendor: 5,277 bytes, line 14259
14259}),b.define("select2/dropdown/closeOnSelect",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("select",function(a){d._selectTriggered(a)}),b.on("unselect",function(a){d._selectTriggered(a)})},a.prototype._selectTriggered=function(a,b){var c=b.originalEvent;c&&c.ctrlKey||this.trigger("close",{originalEvent:c,originalSelect2Event:b})},a}),b.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(a){var b=a.input.length-a.maximum,c="Please delete "+b+" character";return 1!=b&&(c+="s"),c},inputTooShort:function(a){return"Please enter "+(a.minimum-a.input.length)+" or more characters"},loadingMore:function(){return"Loading more results…"},maximumSelected:function(a){var b="You can only select "+a.maximum+" item";return 1!=a.maximum&&(b+="s"),b},noResults:function(){return"No results found"},searching:function(){return"Searching…"}}}),b.define("select2/defaults",["jquery","require","./results","./selection/single","./selection/multiple","./selection/placeholder","./selection/allowClear","./selection/search","./selection/eventRelay","./utils","./translation","./diacritics","./data/select","./data/array","./data/ajax","./data/tags","./data/tokenizer","./data/minimumInputLength","./data/maximumInputLength","./data/maximumSelectionLength","./dropdown","./dropdown/search","./dropdown/hidePlaceholder","./dropdown/infiniteScroll","./dropdown/attachBody","./dropdown/minimumResultsForSearch","./dropdown/selectOnClose","./dropdown/closeOnSelect","./i18n/en"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C){function D(){this.reset()}return D.prototype.apply=function(l){if(l=a.extend(!0,{},this.defaults,l),null==l.dataAdapter){if(null!=l.ajax?l.dataAdapter=o:null!=l.data?l.dataAdapter=n:l.dataAdapter=m,l.minimumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,r)),l.maximumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,s)),l.maximumSelectionLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,t)),l.tags&&(l.dataAdapter=j.Decorate(l.dataAdapter,p)),null==l.tokenSeparators&&null==l.tokenizer||(l.dataAdapter=j.Decorate(l.dataAdapter,q)),null!=l.query){var C=b(l.amdBase+"compat/query");l.dataAdapter=j.Decorate(l.dataAdapter,C)}if(null!=l.initSelection){var D=b(l.amdBase+"compat/initSelection");l.dataAdapter=j.Decorate(l.dataAdapter,D)}}if(null==l.resultsAdapter&&(l.resultsAdapter=c,null!=l.ajax&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,x)),null!=l.placeholder&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,w)),l.selectOnClose&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,A))),null==l.dropdownAdapter){if(l.multiple)l.dropdownAdapter=u;else{var E=j.Decorate(u,v);l.dropdownAdapter=E}if(0!==l.minimumResultsForSearch&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,z)),l.closeOnSelect&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,B)),null!=l.dropdownCssClass||null!=l.dropdownCss||null!=l.adaptDropdownCssClass){var F=b(l.amdBase+"compat/dropdownCss");l.dropdownAdapter=j.Decorate(l.dropdownAdapter,F)}l.dropdownAdapter=j.Decorate(l.dropdownAdapter,y)}if(null==l.selectionAdapter){if(l.multiple?l.selectionAdapter=e:l.selectionAdapter=d,null!=l.placeholder&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,f)),l.allowClear&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,g)),l.multiple&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,h)),null!=l.containerCssClass||null!=l.containerCss||null!=l.adaptContainerCssClass){var G=b(l.amdBase+"compat/containerCss");l.selectionAdapter=j.Decorate(l.selectionAdapter,G)}l.selectionAdapter=j.Decorate(l.selectionAdapter,i)}if("string"==typeof l.language)if(l.language.indexOf("-")>0){var H=l.language.split("-"),I=H[0];l.language=[l.language,I]}else l.language=[l.language];if(a.isArray(l.language)){var J=new k;l.language.push("en");for(var K=l.language,L=0;L<K.length;L++){var M=K[L],N={};try{N=k.loadPath(M)}catch(a){try{M=this.defaults.amdLanguageBase+M,N=k.loadPath(M)}catch(a){l.debug&&window.console&&console.warn&&console.warn('Select2: The language file for "'+M+'" could not be automatically loaded. A fallback will be used instead.');continue}}J.extend(N)}l.translations=J}else{var O=k.loadPath(this.defaults.amdLanguageBase+"en"),P=new k(l.language);P.extend(O),l.translations=P}return l},D.prototype.reset=function(){function b(a){function b(a){return l[a]||a}return a.replace(/[^\u0000-\u007E]/g,b)}function c(d,e){if(""===a.trim(d.term))return e;if(e.children&&e.children.length>0){for(var f=a.extend(!0,{},e),g=e.children.length-1;g>=0;g--){null==c(d,e.children[g])&&f.children.splice(g,1)}return f.children.length>0?f:c(d,f)}var h=b(e.text).toUpperCase(),i=b(d.term).toUpperCase();return h.indexOf(i)>-1?e:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:j.escapeMarkup,language:C,matcher:c,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,sorter:function(a){return a},templateResult:function(a){return a.text},templateSelection:function(a){return a.text},theme:"default",width:"resolve"}},D.prototype.set=function(b,c){var d=a.camelCase(b),e={};e[d]=c;var f=j._convertData(e);a.extend(
vendor: 8,696 bytes, line 14259
14259!0,this.defaults,f)},new D}),b.define("select2/options",["require","jquery","./defaults","./utils"],function(a,b,c,d){function e(b,e){if(this.options=b,null!=e&&this.fromElement(e),this.options=c.apply(this.options),e&&e.is("input")){var f=a(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=d.Decorate(this.options.dataAdapter,f)}}return e.prototype.fromElement=function(a){var c=["select2"];null==this.options.multiple&&(this.options.multiple=a.prop("multiple")),null==this.options.disabled&&(this.options.disabled=a.prop("disabled")),null==this.options.language&&(a.prop("lang")?this.options.language=a.prop("lang").toLowerCase():a.closest("[lang]").prop("lang")&&(this.options.language=a.closest("[lang]").prop("lang"))),null==this.options.dir&&(a.prop("dir")?this.options.dir=a.prop("dir"):a.closest("[dir]").prop("dir")?this.options.dir=a.closest("[dir]").prop("dir"):this.options.dir="ltr"),a.prop("disabled",this.options.disabled),a.prop("multiple",this.options.multiple),d.GetData(a[0],"select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),d.StoreData(a[0],"data",d.GetData(a[0],"select2Tags")),d.StoreData(a[0],"tags",!0)),d.GetData(a[0],"ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),a.attr("ajax--url",d.GetData(a[0],"ajaxUrl")),d.StoreData(a[0],"ajax-Url",d.GetData(a[0],"ajaxUrl")));var e={};e=b.fn.jquery&&"1."==b.fn.jquery.substr(0,2)&&a[0].dataset?b.extend(!0,{},a[0].dataset,d.GetData(a[0])):d.GetData(a[0]);var f=b.extend(!0,{},e);f=d._convertData(f);for(var g in f)b.inArray(g,c)>-1||(b.isPlainObject(this.options[g])?b.extend(this.options[g],f[g]):this.options[g]=f[g]);return this},e.prototype.get=function(a){return this.options[a]},e.prototype.set=function(a,b){this.options[a]=b},e}),b.define("select2/core",["jquery","./options","./utils","./keys"],function(a,b,c,d){var e=function(a,d){null!=c.GetData(a[0],"select2")&&c.GetData(a[0],"select2").destroy(),this.$element=a,this.id=this._generateId(a),d=d||{},this.options=new b(d,a),e.__super__.constructor.call(this);var f=a.attr("tabindex")||0;c.StoreData(a[0],"old-tabindex",f),a.attr("tabindex","-1");var g=this.options.get("dataAdapter");this.dataAdapter=new g(a,this.options);var h=this.render();this._placeContainer(h);var i=this.options.get("selectionAdapter");this.selection=new i(a,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,h);var j=this.options.get("dropdownAdapter");this.dropdown=new j(a,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,h);var k=this.options.get("resultsAdapter");this.results=new k(a,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var l=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(a){l.trigger("selection:update",{data:a})}),a.addClass("select2-hidden-accessible"),a.attr("aria-hidden","true"),this._syncAttributes(),c.StoreData(a[0],"select2",this),a.data("select2",this)};return c.Extend(e,c.Observable),e.prototype._generateId=function(a){var b="";return b=null!=a.attr("id")?a.attr("id"):null!=a.attr("name")?a.attr("name")+"-"+c.generateChars(2):c.generateChars(4),b=b.replace(/(:|\.|\[|\]|,)/g,""),b="select2-"+b},e.prototype._placeContainer=function(a){a.insertAfter(this.$element);var b=this._resolveWidth(this.$element,this.options.get("width"));null!=b&&a.css("width",b)},e.prototype._resolveWidth=function(a,b){var c=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==b){var d=this._resolveWidth(a,"style");return null!=d?d:this._resolveWidth(a,"element")}if("element"==b){var e=a.outerWidth(!1);return e<=0?"auto":e+"px"}if("style"==b){var f=a.attr("style");if("string"!=typeof f)return null;for(var g=f.split(";"),h=0,i=g.length;h<i;h+=1){var j=g[h].replace(/\s/g,""),k=j.match(c);if(null!==k&&k.length>=1)return k[1]}return null}return b},e.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},e.prototype._registerDomEvents=function(){var b=this;this.$element.on("change.select2",function(){b.dataAdapter.current(function(a){b.trigger("selection:update",{data:a})})}),this.$element.on("focus.select2",function(a){b.trigger("focus",a)}),this._syncA=c.bind(this._syncAttributes,this),this._syncS=c.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);var d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=d?(this._observer=new d(function(c){a.each(c,b._syncA),a.each(c,b._syncS)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",b._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",b._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",b._syncS,!1))},e.prototype._registerDataEvents=function(){var a=this;this.dataAdapter.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerSelectionEvents=function(){var b=this,c=["toggle","focus"];this.selection.on("toggle",function(){b.toggleDropdown()}),this.selection.on("focus",function(a){b.focus(a)}),this.selection.on("*",function(d,e){-1===a.inArray(d,c)&&b.trigger(d,e)})},e.prototype._registerDropdownEvents=function(){var a=this;this.dropdown.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerResultsEvents=function(){var a=this;this.results.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerEvents=function(){var a=this;this.on("open",function(){a.$container.addClass("select2-container--open")}),this.on("close",function(){a.$container.removeClass("select2-container--open")}),this.on("enable",function(){a.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){a.$container.addClass("select2-container--disabled")}),this.on("blur",function(){a.$container.removeClass("select2-container--focus")}),this.on("query",function(b){a.isOpen()||a.trigger("open",{}),this.dataAdapter.query(b,function(c){a.trigger("results:all",{data:c,query:b})})}),this.on("query:append",function(b){this.dataAdapter.query(b,function(c){a.trigger("results:append",{data:c,query:b})})}),this.on("keypress",function(b){var c=b.which;a.isOpen()?c===d.ESC||c===d.TAB||c===d.UP&&b.altKey?(a.close(),b.preventDefault()):c===d.ENTER?(a.trigger("results:select",{}),b.preventDefault()):c===d.SPACE&&b.ctrlKey?(a.trigger("results:toggle",{}),b.preventDefault()):c===d.UP?(a.trigger("results:previous",{}),b.preventDefault()):c===d.DOWN&&(a.trigger("results:next",{}),b.preventDefault()):(c===d.ENTER||c===d.SPACE||c===d.DOWN&&b.altKey)&&(a.open(),b.preventDefault())})},e.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},e.prototype._syncSubtree=function(a,b){var c=!1,d=this;if(!a||!a.target||"OPTION"===a.target.nodeName||"OPTGROUP"===a.target.nodeName){if(b)if(b.addedNodes&&b.addedNodes.length>0)for(var e=0;e<b.addedNodes.length;e++){var f=b.addedNodes[e];f.selected&&(c=!0)}else b.removedNodes&&b.removedNodes.length>0&&(c=!0);else c=!0;c&&this.dataAdapter.current(function(a){d.trigger("selection:update",{data:a})})}},e.prototype.trigger=function(a,b){var c=e.__super__.trigger,d={open:"opening",close:"closing",select:"selecting",unselect:"unselecting",clear:"clearing"};if(void 0===b&&(b={}),a in d){var f=d[a],g={prevented:!1,name:a,args:b};if(c.call(this,f,g),g.prevented)return void(b.prevented=!0)}c.call(this,a,b)},e.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},e.prototype.open=function(){this.isOpen()||this.trigger("query",{})},e.prototype.close=function(){this.isOpen()&&this.trigger("close",{})},e.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},e.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")}
vendor: 4,212 bytes, line 14259
14259,e.prototype.focus=function(a){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},e.prototype.enable=function(a){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),null!=a&&0!==a.length||(a=[!0]);var b=!a[0];this.$element.prop("disabled",b)},e.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var a=[];return this.dataAdapter.current(function(b){a=b}),a},e.prototype.val=function(b){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==b||0===b.length)return this.$element.val();var c=b[0];a.isArray(c)&&(c=a.map(c,function(a){return a.toString()})),this.$element.val(c).trigger("change")},e.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener("DOMAttrModified",this._syncA,!1),this.$element[0].removeEventListener("DOMNodeInserted",this._syncS,!1),this.$element[0].removeEventListener("DOMNodeRemoved",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(".select2"),this.$element.attr("tabindex",c.GetData(this.$element[0],"old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),c.RemoveData(this.$element[0]),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null},e.prototype.render=function(){var b=a('<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');return b.attr("dir",this.options.get("dir")),this.$container=b,this.$container.addClass("select2-container--"+this.options.get("theme")),c.StoreData(b[0],"element",this.$element),b},e}),b.define("select2/compat/utils",["jquery"],function(a){function b(b,c,d){var e,f,g=[];e=a.trim(b.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each(function(){0===this.indexOf("select2-")&&g.push(this)})),e=a.trim(c.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each(function(){0!==this.indexOf("select2-")&&null!=(f=d(this))&&g.push(f)})),b.attr("class",g.join(" "))}return{syncCssClasses:b}}),b.define("select2/compat/containerCss",["jquery","./utils"],function(a,b){function c(a){return null}function d(){}return d.prototype.render=function(d){var e=d.call(this),f=this.options.get("containerCssClass")||"";a.isFunction(f)&&(f=f(this.$element));var g=this.options.get("adaptContainerCssClass");if(g=g||c,-1!==f.indexOf(":all:")){f=f.replace(":all:","");var h=g;g=function(a){var b=h(a);return null!=b?b+" "+a:a}}var i=this.options.get("containerCss")||{};return a.isFunction(i)&&(i=i(this.$element)),b.syncCssClasses(e,this.$element,g),e.css(i),e.addClass(f),e},d}),b.define("select2/compat/dropdownCss",["jquery","./utils"],function(a,b){function c(a){return null}function d(){}return d.prototype.render=function(d){var e=d.call(this),f=this.options.get("dropdownCssClass")||"";a.isFunction(f)&&(f=f(this.$element));var g=this.options.get("adaptDropdownCssClass");if(g=g||c,-1!==f.indexOf(":all:")){f=f.replace(":all:","");var h=g;g=function(a){var b=h(a);return null!=b?b+" "+a:a}}var i=this.options.get("dropdownCss")||{};return a.isFunction(i)&&(i=i(this.$element)),b.syncCssClasses(e,this.$element,g),e.css(i),e.addClass(f),e},d}),b.define("select2/compat/initSelection",["jquery"],function(a){function b(a,b,c){c.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `initSelection` option has been deprecated 
14259in favor of a custom data adapter that overrides the `current` method. This method is now called multiple times instead of a single time when the instance is initialized. Support will be removed for the `initSelection` option in future versions of Select2"),this.initSelection=c.get("initSelection"),this._isInitialized=!1,a.call(this,b,c)}return b.prototype.current=function(b,c){var d=this;if(this._isInitialized)return void b.call(this,c);this.initSelection.call(null,this.$element,function(b){d._isInitialized=!0,a.isArray(b)||(b=[b]),c(b)})},b}),b.define("select2/compat/inputData",["jquery","../utils"],function(a,b){function c(a,b,c){this._currentData=[],this._valueSeparator=c.get("valueSeparator")||",","hidden"===b.prop("type")&&c.get("debug")&&console&&console.warn&&console.warn("Select2: Using a hidden input with Select2 is no longer supported and may stop working in the future. It is recommended to use a `<select>` element instead."),a.call(this,b,c)}return c.prototype.current=function(b,c){function d(b,c){var e=[];return b.selected||-1!==a.inArray(b.id,c)?(b.selected=!0,e.push(b)):b.selected=!1,b.children&&e.push.apply(e,d(b.children,c)),e}for(var e=[],f=0;f<this._currentData.length;f++){var g=this._currentData[f];e.push.apply(e,d(g,this.$element.val().split(this._valueSeparator)))}c(e)},c.prototype.select=function(b,c){if(this.options.get("multiple")){var d=this.$element.val();d+=this._valueSeparator+c.id,this.$element.val(d),this.$element.trigger("change")}else this.current(function(b){a.map(b,function(a){a.selected=!1})}),this.$element.val(c.id),this.$element.trigger("change")},c.prototype.unselect=function(a,b){var c=this;b.selected=!1,this.current(function(a){for(var d=[],e=0;e<a.length;e++){var f=a[e];b.id!=f.id&&d.push(f.id)}c.$element.val(d.join(c._valueSeparator)),c.$element.trigger("change")})},c.prototype.query=function(a,b,c){for(var d=[],e=0;e<this._currentData.length;e++){var f=this._currentData[e],g=this.matches(b,f);null!==g&&d.push(g)}c({results:d})},c.prototype.addOptions=function(c,d){var e=a.map(d,function(a){return b.GetData(a[0],"data")});this._currentData.push.apply(this._currentData,e)},c}),b.define("select2/compat/matcher",["jquery"],function(a){function b(b){function c(c,d){var e=a.extend(!0,{},d);if(null==c.term||""===a.trim(c.term))return e;if(d.children){for(var f=d.children.length-1;f>=0;f--){var g=d.children[f];b(c.term,g.text,g)||e.children.splice(f,1)}if(e.children.length>0)return e}return b(c.term,d.text,d)?e:null}return c}return b}),b.define("select2/compat/query",[],function(){function a(a,b,c){c.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `query` option has been deprecated in favor of a custom data adapter that overrides the `query` method. Support will be removed for the `query` option in future versions of Select2."),a.call(this,b,c)}return a.prototype.query=function(a,b,c){b.callback=c,this.options.get("query").call(null,b)},a}),b.define("select2/dropdown/attachContainer",[],function(){function a(a,b,c){a.call(this,b,c)}return a.prototype.position=function(a,b,c){c.find(".dropdown-wrapper").append(b),b.addClass("select2-dropdown--below"),c.addClass("select2-container--below")},a}),b.define("select2/dropdown/stopPropagation",[],function(){function a(){}return a.prototype.bind=function(a,b,c){a.call(this,b,c);var d=["blur","change","click","dblclick","focus","focusin","focusout","input","keydown","keyup","keypress","mousedown","mouseenter","mouseleave","mousemove","mouseover","mouseup","search","touchend","touchstart"];this.$dropdown.on(d.join(" "),function(a){a.stopPropagation()})},a}),b.define("select2/selection/stopPropagation",[],function(){function a(){}return a.prototype.bind=function(a,b,c){a.call(this,b,c);var d=["blur","change","click","dblclick","focus","focusin","focusout","input","keydown","keyup","keypress","mousedown","mouseenter","mouseleave","mousemove","mouseover","mouseup","search","touchend","touchstart"];this.$selection.on(d.join(" "),function(a){a.stopPropagation()})},a}),function(c){"function"==typeof b.define&&b.define.amd?b.define("jquery-mousewheel",["jquery"],c):"object"==typeof exports?module.exports=c:c(a)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1
vendor: 4,326 bytes, lines 14259-14272
14259),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||n<f)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120==0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})}),b.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults","./select2/utils"],function(a,b,c,d,e){if(null==a.fn.select2){var f=["open","close","destroy"];a.fn.select2=function(b){if("object"==typeof(b=b||{}))return this.each(function(){var d=a.extend(!0,{},b);new c(a(this),d)}),this;if("string"==typeof b){var d,g=Array.prototype.slice.call(arguments,1);return this.each(function(){var a=e.GetData(this,"select2");null==a&&window.console&&console.error&&console.error("The select2('"+b+"') method was called on an element that is not using Select2."),d=a[b].apply(a,g)}),a.inArray(b,f)>-1?this:d}throw new Error("Invalid arguments for Select2: "+b)}}return null==a.fn.select2.defaults&&(a.fn.select2.defaults=d),c}),{define:b.define,require:b.require}}(),c=b.require("jquery.select2");return a.fn.select2.amd=b,c});;
14260/*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */
14261
14262(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/vi",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vui lòng nhập ít hơn "+t+" ký tự";return t!=1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vui lòng nhập nhiều hơn "+t+" ký tự";return n},loadingMore:function(){return"Đang lấy thêm kết quả…"},maximumSelected:function(e){var t="Chỉ có thể chọn được "+e.maximum+" lựa chọn";return t},noResults:function(){return"Không tìm thấy kết quả"},searching:function(){return"Đang tìm…"}}}),{define:e.define,require:e.require}})();;
14263/**
14264 * app.ResourceLoader can be used to load scripts when needed.
14265 * It ensures that every script is only loaded once.
14266 */
14267var app = app || {};
14268(function ($) {
14269
14270    /* UrlStates enum */
14271    var UrlStates = {
14272        LOADING: 'LOADING',
14273        LOADED: 'LOADED',
14274        FAILED: 'FAILED'
14275    };
14276
14277    /* UrlInfo class */
14278    function UrlInfo() {
14279        this.state = UrlStates.LOADING;
14280        this.loadCallbacks = [];
14281        this.failCallbacks = [];
14282    }
14283
14284    UrlInfo.prototype.succeed = function () {
14285        this.state = UrlStates.LOADED;
14286        for (var i = 0; i < this.loadCallbacks.length; i++) {
14287            this.loadCallbacks[i]();
14288        }
14289    };
14290
14291    UrlInfo.prototype.failed = function () {
14292        this.state = UrlStates.FAILED;
14293        for (var i = 0; i < this.failCallbacks.length; i++) {
14294            this.failCallbacks[i]();
14295        }
14296    };
14297
14298    UrlInfo.prototype.handleCallbacks = function (loadCallback, failCallback) {
14299        switch (this.state) {
14300            case UrlStates.LOADED:
14301                loadCallback && loadCallback();
14302                break;
14303            case UrlStates.FAILED:
14304                failCallback && failCallback();
14305                break;
14306            case UrlStates.LOADING:
14307                this.addCallbacks(loadCallback, failCallback);
14308                break;
14309        }
14310    };
14311
14312    UrlInfo.prototype.addCallbacks = function (loadCallback, failCallback) {
14313        loadCallback && this.loadCallbacks.push(loadCallback);
14314        failCallback && this.failCallbacks.push(failCallback);
14315    };
14316
14317    /* ResourceLoader API */
14318
14319    app.ResourceLoader = (function () {
14320
14321        var _urlInfos = {};
14322
14323        var _loadScript = function (url, loadCallback, failCallback) {
14324
14325            var urlInfo = _urlInfos[url];
14326
14327            if (urlInfo) {
14328                urlInfo.handleCallbacks(loadCallback, failCallback);
14329                return;
14330            }
14331
14332            _urlInfos[url] = urlInfo = new UrlInfo();
14333            urlInfo.addCallbacks(loadCallback, failCallback);
14334
14335            $.getScript(url)
14336                .done(function (script, textStatus) {
14337                    urlInfo.succeed();
14338                })
14339                .fail(function (jqxhr, settings, exception) {
14340                    urlInfo.failed();
14341                });
14342        };
14343
14344        return {
14345            loadScript: _loadScript
14346        }
14347    })();
14348
14349})(jQuery);;
14350var app = app || {};
14351
14352(function ($) {
14353
14354    app.modals = app.modals || {};
14355
14356    app.ModalManager = (function () {
14357
14358        var _normalizeOptions = function (options) {
14359            if (!options.modalId) {
14360                options.modalId = 'Modal_' + (Math.floor((Math.random() * 1000000))) + new Date().getTime();
14361            }
14362        }
14363
14364        function _removeContainer(modalId) {
14365            var _containerId = modalId + 'Container';
14366            var _containerSelector = '#' + _containerId;
14367
14368            var $container = $(_containerSelector);
14369            if ($container.length) {
14370                $container.remove();
14371            }
14372        }
14373
14374        function _createContainer(modalId, options) {
14375            _removeContainer(modalId);
14376
14377            var _modalSize = "modal-lg";
14378            if (options.modalSize != null) _modalSize = options.modalSize;
14379            var _containerId = modalId + 'Container';
14380            return $('<div id="' + _containerId + '"></div>')
14381                .append(
14382                    '<div id="' + modalId + '" class="modal fade modal-js" tabindex="-1" role="modal" aria-hidden="true">' +
14383                    '  <div class="modal-dialog ' + _modalSize + '">' +
14384                    '    <div class="modal-content"></div>' +
14385                    '  </div>' +
14386                    '</div>'
14387                ).appendTo($('#fix').length > 0 ? '#fix' : 'body');
14388        }
14389
14390        return function (options) {
14391
14392            _normalizeOptions(options);
14393
14394            var _options = options;
14395            var _$modal = null;
14396            var _modalId = options.modalId;
14397            var _modalSelector = '#' + _modalId;
14398            var _modalObject = null;
14399
14400            var _publicApi = null;
14401            var _args = null;
14402            var _getResultCallback = null;
14403
14404            var _onCloseCallbacks = [];
14405            var _onOpenCallBacks = [];
14406
14407            function _saveModal() {
14408                if (_modalObject && _modalObject.save) {
14409                    _modalObject.save();
14410                }
14411            }
14412
14413            function _initAndShowModal() {
14414                _$modal = $(_modalSelector);
14415
14416                if (options.modalBackdrop) {
14417                    _$modal.modal();
14418                }
14419                else {
14420                    _$modal.modal({
14421                        backdrop: 'static'
14422                    });
14423                }
14424
14425                //pp custom
14426                _$modal.css({
14427                    display: 'flex',
14428                    alignItems: 'center'
14429                });
14430
14431                if (typeof options.modalStyle === 'object') {
14432                    _$modal.css(options.modalStyle);
14433                }
14434
14435                _$modal.on('hidden.bs.modal', function () {
14436                    _removeContainer(_modalId);
14437
14438                    for (var i = 0; i < _onCloseCallbacks.length; i++) {
14439                        _onCloseCallbacks[i]();
14440                    }
14441                });
14442
14443                _$modal.on('shown.bs.modal', function () {
14444                    if (_onOpenCallBacks.length) {
14445                        for (var i = 0; i < _onOpenCallBacks.length; i++) {
14446                            _onOpenCallBacks[i]();
14447                        }
14448                    }
14449                    else if (_$modal.find('input.first-focus:visible, textarea.first-focus:visible').length) {
14450                        _$modal.find('input.first-focus:visible, textarea.first-focus:visible').first().focus();
14451                    }
14452                    else _$modal.find('input:not([type=hidden]):first').focus();
14453                });
14454
14455
14456                var modalClass = app.modals[options.modalClass];
14457                if (modalClass) {
14458                    _modalObject = new modalClass();
14459                    if (_modalObject.init) {
14460                        _modalObject.init(_publicApi, _args);
14461                    }
14462                }
14463
14464                _$modal.find('.save-button').click(function () {
14465                    _saveModal();
14466                });
14467
14468                _$modal.find('.modal-body').keydown(function (e) {
14469                    if (e.which === 13) {
14470                        if (e.target.tagName.toLocaleLowerCase() === "textarea") {
14471                            e.stopPropagation();
14472                        } else {
14473                            e.preventDefault();
14474                            _saveModal();
14475                        }
14476
14477                    }
14478                });
14479
14480                _$modal.modal('show');
14481            }
14482
14483            var _open = function (args, getResultCallback) {
14484
14485                _args = args || {};
14486                _getResultCallback = getResultCallback;
14487                
14488                loaddingByEinvoice(true);
14489
14490                _createContainer(_modalId, _options)
14491                    .find('.modal-content')
14492                    .load(options.viewUrl, _args, function (response, status, xhr) {
14493                        loaddingByEinvoice(false);
14494
14495                        if (status == "error") {
14496                            $.notify({ message: xhr.statusText }, { type: "warning" });
14497                            return;
14498                        };
14499
14500                        try {
14501                            var mess = JSON.parse(response);
14502                            app.notifyMessage(mess);
14503                            return;
14504                        } catch { }
14505
14506                        if (options.scriptUrl) {
14507                            app.ResourceLoader.loadScript(options.scriptUrl, function () {
14508                                _initAndShowModal();
14509                            });
14510                        } else {
14511                            _initAndShowModal();
14512                        }
14513                    });
14514            };
14515
14516            var _close = function () {
14517                if (!_$modal) {
14518                    return;
14519                }
14520
14521                _$modal.modal('hide');
14522            };
14523
14524            var _onClose = function (onCloseCallback) {
14525                _onCloseCallbacks.push(onCloseCallback);
14526            };
14527
14528            var _onOpen = function (onOpenCallback) {
14529                _onOpenCallBacks.push(onOpenCallback);
14530            }
14531
14532            function _setBusy(isBusy) {
14533                if (!_$modal) {
14534                    return;
14535                }
14536
14537                _$modal.find('.modal-footer button').buttonBusy(isBusy);
14538            }
14539
14540            _publicApi = {
14541                open: _open,
14542
14543                reopen: function () {
14544                    _open(_args);
14545                },
14546
14547                close: _close,
14548
14549                getModalId: function () {
14550                    return _modalId;
14551                },
14552
14553                getModal: function () {
14554                    return _$modal;
14555                },
14556
14557                getArgs: function () {
14558                    return _args;
14559                },
14560
14561                getOptions: function () {
14562                    return _options;
14563                },
14564
14565                setBusy: _setBusy,
14566
14567                setResult: function () {
14568                    _getResultCallback && _getResultCallback.apply(_publicApi, arguments);
14569                },
14570
14571                onClose: _onClose,
14572
14573                onOpen: _onOpen
14574            };
14575
14576            return _publicApi;
14577        };
14578    })();
14579
14580})(jQuery);;
14581$(document).ready(function () {
14582    //Khởi tạo validate cho form
14583    $('#formgr').bootstrapValidator({
14584        excluded: ':disabled'
14585
14586        //feedbackIcons: {
14587        //    valid: 'glyphicon glyphicon-ok',
14588        //    invalid: 'glyphicon glyphicon-remove',
14589        //    validating: 'glyphicon glyphicon-refresh'
14590        //}
14591    });
vendor: 20,656 bytes, lines 14592-14642
14592    $('#loginForm').bootstrapValidator({
14593        excluded: ':disabled'
14594
14595    });
14596    //closeAlert();
14597    //hiển thi tooltip
14598    $('#sidebar-toggle').tooltip();
14599    $('#ctKhoiTao').tooltip();
14600    $('#ctQuanLy').tooltip();
14601    $('#ctPhatHanh').tooltip();
14602    $('#ctXacThuc').tooltip();
14603    $('#ctLapHoaDon').tooltip();
14604    $('#createRow').tooltip();
14605    $('#hidenSearch').tooltip();
14606    //ANHVT UPDATE 
14607    $("#showModal").tooltip();
14608
14609    $('.delete').tooltip();
14610
14611    $(".alert").hover(function () {
14612        $(".alert").clearQueue();
14613
14614        $(".alert").stop();
14615    });
14616    $(".alert").mouseout(function () {
14617        $(".alert").delay(5000).fadeTo(100, 100).slideUp(function () {
14618            $(".alert").remove();
14619        });
14620    });
14621
14622});
14623
14624function closeAlert() {
14625    var content = $(".alert a").prev().text();
14626    if (!content.includes('"Đóng"')) {
14627        $(".alert").delay(5000).fadeTo(1000, 500).slideUp(function () {
14628            $(".alert").remove();
14629        });
14630    }
14631}
14632
14633$.curCSS = function (element, attrib, val) {
14634    $(element).css(attrib, val);
14635}
14636
14637$(document).off('keyup', '.oUni').on('keyup', '.oUni', function (e) {
14638    var value = $(this).val();
14639    value = value.replace(/[^ -~|\n|€]/mg, "");
14640    $(this).val(value);
14641});
14642!function(t,e){"use strict";if("undefined"!=typeof module&&module.exports){var n="undefined"!=typeof process,o=n&&"electron"in process.versions;o?t.BootstrapDialog=e(t.jQuery):module.exports=e(require("jquery"),require("bootstrap"))}else"function"==typeof define&&define.amd?define("bootstrap-dialog",["jquery","bootstrap"],function(t){return e(t)}):t.BootstrapDialog=e(t.jQuery)}(this,function(t){"use strict";var e=t.fn.modal.Constructor,n=function(t,n){e.call(this,t,n)};n.getModalVersion=function(){var e=null;return e="undefined"==typeof t.fn.modal.Constructor.VERSION?"v3.1":/3\.2\.\d+/.test(t.fn.modal.Constructor.VERSION)?"v3.2":/3\.3\.[1,2]/.test(t.fn.modal.Constructor.VERSION)?"v3.3":"v3.3.4"},n.ORIGINAL_BODY_PADDING=parseInt(t("body").css("padding-right")||0,10),n.METHODS_TO_OVERRIDE={},n.METHODS_TO_OVERRIDE["v3.1"]={},n.METHODS_TO_OVERRIDE["v3.2"]={hide:function(e){if(e&&e.preventDefault(),e=t.Event("hide.bs.modal"),this.$element.trigger(e),this.isShown&&!e.isDefaultPrevented()){this.isShown=!1;var n=this.getGlobalOpenedDialogs();0===n.length&&this.$body.removeClass("modal-open"),this.resetScrollbar(),this.escape(),t(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal"),t.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",t.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal()}}},n.METHODS_TO_OVERRIDE["v3.3"]={setScrollbar:function(){var t=n.ORIGINAL_BODY_PADDING;this.bodyIsOverflowing&&this.$body.css("padding-right",t+this.scrollbarWidth)},resetScrollbar:function(){var t=this.getGlobalOpenedDialogs();0===t.length&&this.$body.css("padding-right",n.ORIGINAL_BODY_PADDING)},hideModal:function(){this.$element.hide(),this.backdrop(t.proxy(function(){var t=this.getGlobalOpenedDialogs();0===t.length&&this.$body.removeClass("modal-open"),this.resetAdjustments(),this.resetScrollbar(),this.$element.trigger("hidden.bs.modal")},this))}},n.METHODS_TO_OVERRIDE["v3.3.4"]=t.extend({},n.METHODS_TO_OVERRIDE["v3.3"]),n.prototype={constructor:n,getGlobalOpenedDialogs:function(){var e=[];return t.each(o.dialogs,function(t,n){n.isRealized()&&n.isOpened()&&e.push(n)}),e}},n.prototype=t.extend(n.prototype,e.prototype,n.METHODS_TO_OVERRIDE[n.getModalVersion()]);var o=function(e){this.defaultOptions=t.extend(!0,{id:o.newGuid(),buttons:[],data:{},onshow:null,onshown:null,onhide:null,onhidden:null},o.defaultOptions),this.indexedButtons={},this.registeredButtonHotkeys={},this.draggableData={isMouseDown:!1,mouseOffset:{}},this.realized=!1,this.opened=!1,this.initOptions(e),this.holdThisInstance()};return o.BootstrapDialogModal=n,o.NAMESPACE="bootstrap-dialog",o.TYPE_DEFAULT="type-default",o.TYPE_INFO="type-info",o.TYPE_PRIMARY="type-primary",o.TYPE_SUCCESS="type-success",o.TYPE_WARNING="type-warning",o.TYPE_DANGER="type-danger",o.DEFAULT_TEXTS={},o.DEFAULT_TEXTS[o.TYPE_DEFAULT]="Information",o.DEFAULT_TEXTS[o.TYPE_INFO]="Information",o.DEFAULT_TEXTS[o.TYPE_PRIMARY]="Information",o.DEFAULT_TEXTS[o.TYPE_SUCCESS]="Success",o.DEFAULT_TEXTS[o.TYPE_WARNING]="Warning",o.DEFAULT_TEXTS[o.TYPE_DANGER]="Danger",o.DEFAULT_TEXTS.OK="OK",o.DEFAULT_TEXTS.CANCEL="Cancel",o.DEFAULT_TEXTS.CONFIRM="Confirmation",o.SIZE_NORMAL="size-normal",o.SIZE_SMALL="size-small",o.SIZE_WIDE="size-wide",o.SIZE_LARGE="size-large",o.BUTTON_SIZES={},o.BUTTON_SIZES[o.SIZE_NORMAL]="",o.BUTTON_SIZES[o.SIZE_SMALL]="",o.BUTTON_SIZES[o.SIZE_WIDE]="",o.BUTTON_SIZES[o.SIZE_LARGE]="btn-lg",o.ICON_SPINNER="glyphicon glyphicon-asterisk",o.defaultOptions={type:o.TYPE_PRIMARY,size:o.SIZE_NORMAL,cssClass:"",title:null,message:null,nl2br:!0,closable:!0,closeByBackdrop:!0,closeByKeyboard:!0,spinicon:o.ICON_SPINNER,autodestroy:!0,draggable:!1,animate:!0,description:"",tabindex:-1},o.configDefaultOptions=function(e){o.defaultOptions=t.extend(!0,o.defaultOptions,e)},o.dialogs={},o.openAll=function(){t.each(o.dialogs,function(t,e){e.open()})},o.closeAll=function(){t.each(o.dialogs,function(t,e){e.close()})},o.getDialog=function(t){var e=null;return"undefined"!=typeof o.dialogs[t]&&(e=o.dialogs[t]),e},o.setDialog=function(t){return o.dialogs[t.getId()]=t,t},o.addDialog=function(t){return o.setDialog(t)},o.moveFocus=function(){var e=null;t.each(o.dialogs,function(t,n){e=n}),null!==e&&e.isRealized()&&e.getModal().focus()},o.METHODS_TO_OVERRIDE={},o.METHODS_TO_OVERRIDE["v3.1"]={handleModalBackdropEvent:function(){return this.getModal().on("click",{dialog:this},function(t){t.target===this&&t.data.dialog.isClosable()&&t.data.dialog.canCloseByBackdrop()&&t.data.dialog.close()}),this},updateZIndex:function(){var e=1040,n=1050,i=0;t.each(o.dialogs,function(t,e){i++});var s=this.getModal(),a=s.data("bs.modal").$backdrop;return s.css("z-index",n+20*(i-1)),a.css("z-index",e+20*(i-1)),this},open:function(){return!this.isRealized()&&this.realize(),this.getModal().modal("show"),this.updateZIndex(),this}},o.METHODS_TO_OVERRIDE["v3.2"]={handleModalBackdropEvent:o.METHODS_TO_OVERRIDE["v3.1"].handleModalBackdropEvent,updateZIndex:o.METHODS_TO_OVERRIDE["v3.1"].updateZIndex,open:o.METHODS_TO_OVERRIDE["v3.1"].open},o.METHODS_TO_OVERRIDE["v3.3"]={},o.METHODS_TO_OVERRIDE["v3.3.4"]=t.extend({},o.METHODS_TO_OVERRIDE["v3.1"]),o.prototype={constructor:o,initOptions:function(e){return this.options=t.extend(!0,this.defaultOptions,e),this},holdThisInstance:function(){return o.addDialog(this),this},initModalStuff:function(){return this.setModal(this.createModal()).setModalDialog(this.createModalDialog()).setModalContent(this.createModalContent()).setModalHeader(this.createModalHeader()).setModalBody(this.createModalBody()).setModalFooter(this.createModalFooter()),this.getModal().append(this.getModalDialog()),this.getModalDialog().append(this.getModalContent()),this.getModalContent().append(this.getModalHeader()).append(this.getModalBody()).append(this.getModalFooter()),this},createModal:function(){var e=t('<div class="modal" role="dialog" aria-hidden="true"></div>');return e.prop("id",this.getId()),e.attr("aria-labelledby",this.getId()+"_title"),e},getModal:function(){return this.$modal},setModal:function(t){return this.$modal=t,this},createModalDialog:function(){return t('<div class="modal-dialog"></div>')},getModalDialog:function(){return this.$modalDialog},setModalDialog:function(t){return this.$modalDialog=t,this},createModalContent:function(){return t('<div class="modal-content"></div>')},getModalContent:function(){return this.$modalContent},setModalContent:function(t){return this.$modalContent=t,this},createModalHeader:function(){return t('<div class="modal-header"></div>')},getModalHeader:function(){return this.$modalHeader},setModalHeader:function(t){return this.$modalHeader=t,this},createModalBody:function(){return t('<div class="modal-body"></div>')},getModalBody:function(){return this.$modalBody},setModalBody:function(t){return this.$modalBody=t,this},createModalFooter:function(){return t('<div class="modal-footer"></div>')},getModalFooter:function(){return this.$modalFooter},setModalFooter:function(t){return this.$modalFooter=t,this},createDynamicContent:function(t){var e=null;return e="function"==typeof t?t.call(t,this):t,"string"==typeof e&&(e=this.formatStringContent(e)),e},formatStringContent:function(t){return this.options.nl2br?t.replace(/\r\n/g,"<br />").replace(/[\r\n]/g,"<br />"):t},setData:function(t,e){return this.options.data[t]=e,this},getData:function(t){return this.options.data[t]},setId:function(t){return this.options.id=t,this},getId:function(){return this.options.id},getType:function(){return this.options.type},setType:function(t){return this.options.type=t,this.updateType(),this},updateType:function(){if(this.isRealized()){var t=[o.TYPE_DEFAULT,o.TYPE_INFO,o.TYPE_PRIMARY,o.TYPE_SUCCESS,o.TYPE_WARNING,o.TYPE_DANGER];this.getModal().removeClass(t.join(" ")).addClass(this.getType())}return this},getSize:function(){return this.options.size},setSize:function(t){return this.options.size=t,this.updateSize(),this},updateSize:function(){if(this.isRealized()){var e=this;this.getModal().removeClass(o.SIZE_NORMAL).removeClass(o.SIZE_SMALL).removeClass(o.SIZE_WIDE).removeClass(o.SIZE_LARGE),this.getModal().addClass(this.getSize()),this.getModalDialog().removeClass("modal-sm"),this.getSize()===o.SIZE_SMALL&&this.getModalDialog().addClass("modal-sm"),this.getModalDialog().removeClass("modal-lg"),this.getSize()===o.SIZE_WIDE&&this.getModalDialog().addClass("modal-lg"),t.each(this.options.buttons,function(n,o){var i=e.getButton(o.id),s=["btn-lg","btn-sm","btn-xs"],a=!1;if("string"==typeof o.cssClass){var d=o.cssClass.split(" ");t.each(d,function(e,n){-1!==t.inArray(n,s)&&(a=!0)})}a||(i.removeClass(s.join(" ")),i.addClass(e.getButtonSize()))})}return this},getCssClass:function(){return this.options.cssClass},setCssClass:function(t){return this.options.cssClass=t,this},getTitle:function(){return this.options.title},setTitle:function(t){return this.options.title=t,this.updateTitle(),this},updateTitle:function(){if(this.isRealized()){var t=null!==this.getTitle()?this.createDynamicContent(this.getTitle()):this.getDefaultText();this.getModalHeader().find("."+this.getNamespace("title")).html("").append(t).prop("id",this.getId()+"_title")}return this},getMessage:function(){return this.options.message},setMessage:function(t){return this.options.message=t,this.updateMessage(),this},updateMessage:function(){if(this.isRealized()){var t=this.createDynamicContent(this.getMessage());this.getModalBody().find("."+this.getNamespace("message")).html("").append(t)}return this},isClosable:function(){return this.options.closable},setClosable:function(t){return this.options.closable=t,this.updateClosable(),this},setCloseByBackdrop:function(t){return this.options.closeByBackdrop=t,this},canCloseByBackdrop:function(){return this.options.closeByBackdrop},setCloseByKeyboard:function(t){return this.options.closeByKeyboard=t,this},canCloseByKeyboard:function(){return this.options.closeByKeyboard},isAnimate:function(){return this.options.animate},setAnimate:function(t){return this.options.animate=t,this},updateAnimate:function(){return this.isRealized()&&this.getModal().toggleClass("fade",this.isAnimate()),this},getSpinicon:function(){return this.options.spinicon},setSpinicon:function(t){return this.options.spinicon=t,this},addButton:function(t){return this.options.buttons.push(t),this},addButtons:function(e){var n=this;return t.each(e,function(t,e){n.addButton(e)}),this},getButtons:function(){return this.options.buttons},setButtons:function(t){return this.options.buttons=t,this.updateButtons(),this},getButton:function(t){return"undefined"!=typeof this.indexedButtons[t]?this.indexedButtons[t]:null},getButtonSize:function(){return"undefined"!=typeof o.BUTTON_SIZES[this.getSize()]?o.BUTTON_SIZES[this.getSize()]:""},updateButtons:function(){return this.isRealized()&&(0===this.getButtons().length?this.getModalFooter().hide():this.getModalFooter().show().find("."+this.getNamespace("footer")).html("").append(this.createFooterButtons())),this},isAutodestroy:function(){return this.options.autodestroy},setAutodestroy:function(t){this.options.autodestroy=t},getDescription:function(){return this.options.description},setDescription:function(t){return this.options.description=t,this},setTabindex:function(t){return this.options.tabindex=t,this},getTabindex:function(){return this.options.tabindex},updateTabindex:function(){return this.isRealized()&&this.getModal().attr("tabindex",this.getTabindex()),this},getDefaultText:function(){return o.DEFAULT_TEXTS[this.getType()]},getNamespace:function(t){return o.NAMESPACE+"-"+t},createHeaderContent:function(){var e=t("<div></div>");return e.addClass(this.getNamespace("header")),e.append(this.createTitleContent()),e.prepend(this.createCloseButton()),e},createTitleContent:function(){var e=t("<div></div>");return e.addClass(this.getNamespace("title")),e},createCloseButton:function(){var e=t("<div></div>");e.addClass(this.getNamespace("close-button"));var n=t('<button class="close">&times;</button>');return e.append(n),e.on("click",{dialog:this},function(t){t.data.dialog.close()}),e},createBodyContent:function(){var e=t("<div></div>");return e.addClass(this.getNamespace("body")),e.append(this.createMessageContent()),e},createMessageContent:function(){var e=t("<div></div>");return e.addClass(this.getNamespace("message")),e},createFooterContent:function(){var e=t("<div></div>");return e.addClass(this.getNamespace("footer")),e},createFooterButtons:function(){var e=this,n=t("<div></div>");return n.addClass(this.getNamespace("footer-buttons")),this.indexedButtons={},t.each(this.options.buttons,function(t,i){i.id||(i.id=o.newGuid());var s=e.createButton(i);e.indexedButtons[i.id]=s,n.append(s)}),n},createButton:function(e){var n=t('<button class="btn"></button>');return n.prop("id",e.id),n.data("button",e),"undefined"!=typeof e.icon&&""!==t.trim(e.icon)&&n.append(this.createButtonIcon(e.icon)),"undefined"!=typeof e.label&&n.append(e.label),n.addClass("undefined"!=typeof e.cssClass&&""!==t.trim(e.cssClass)?e.cssClass:"btn-default"),"undefined"!=typeof e.hotkey&&(this.registeredButtonHotkeys[e.hotkey]=n),n.on("click",{dialog:this,$button:n,button:e},function(t){var e=t.data.dialog,n=t.data.$button,o=n.data("button");"function"==typeof o.action&&o.action.call(n,e,t),o.autospin&&n.toggleSpin(!0)}),this.enhanceButton(n),"undefined"!=typeof e.enabled&&n.toggleEnable(e.enabled),n},enhanceButton:function(t){return t.dialog=this,t.toggleEnable=function(t){var e=this;return"undefined"!=typeof t?e.prop("disabled",!t).toggleClass("disabled",!t):e.prop("disabled",!e.prop("disabled")),e},t.enable=function(){var t=this;return t.toggleEnable(!0),t},t.disable=function(){var t=this;return t.toggleEnable(!1),t},t.toggleSpin=function(e){var n=this,o=n.dialog,i=n.find("."+o.getNamespace("button-icon"));return"undefined"==typeof e&&(e=!(t.find(".icon-spin").length>0)),e?(i.hide(),t.prepend(o.createButtonIcon(o.getSpinicon()).addClass("icon-spin"))):(i.show(),t.find(".icon-spin").remove()),n},t.spin=function(){var t=this;return t.toggleSpin(!0),t},t.stopSpin=function(){var t=this;return t.toggleSpin(!1),t},this},createButtonIcon:function(e){var n=t("<span></span>");return n.addClass(this.getNamespace("button-icon")).addClass(e),n},enableButtons:function(e){return t.each(this.indexedButtons,function(t,n){n.toggleEnable(e)}),this},updateClosable:function(){return this.isRealized()&&this.getModalHeader().find("."+this.getNamespace("close-button")).toggle(this.isClosable()),this},onShow:function(t){return this.options.onshow=t,this},onShown:function(t){return this.options.onshown=t,this},onHide:function(t){return this.options.onhide=t,this},onHidden:function(t){return this.options.onhidden=t,this},isRealized:function(){return this.realized},setRealized:function(t){return this.realized=t,this},isOpened:function(){return this.opened},setOpened:function(t){return this.opened=t,this},handleModalEvents:function(){return this.getModal().on("show.bs.modal",{dialog:this},function(t){var e=t.data.dialog;if(e.setOpened(!0),e.isModalEvent(t)&&"function"==typeof e.options.onshow){var n=e.options.onshow(e);return n===!1&&e.setOpened(!1),n}}),this.getModal().on("shown.bs.modal",{dialog:this},function(t){var e=t.data.dialog;e.isModalEvent(t)&&"function"==typeof e.options.onshown&&e.options.onshown(e)}),this.getModal().on("hide.bs.modal",{dialog:this},function(t){var e=t.data.dialog;if(e.setOpened(!1),e.isModalEvent(t)&&"function"==typeof e.options.onhide){var n=e.options.onhide(e);return n===!1&&e.setOpened(!0),n}}),this.getModal().on("hidden.bs.modal",{dialog:this},function(e){var n=e.data.dialog;n.isModalEvent(e)&&"function"==typeof n.options.onhidden&&n.options.onhidden(n),n.isAutodestroy()&&(delete o.dialogs[n.getId()],t(this).remove()),o.moveFocus()}),this.handleModalBackdropEvent(),this.getModal().on("keyup",{dialog:this},function(t){27===t.which&&t.data.dialog.isClosable()&&t.data.dialog.canCloseByKeyboard()&&t.data.dialog.close()}),this.getModal().on("keyup",{dialog:this},function(e){var n=e.data.dialog;if("undefined"!=typeof n.registeredButtonHotkeys[e.which]){var o=t(n.registeredButtonHotkeys[e.which]);!o.prop("disabled")&&o.focus().trigger("click")}}),this},handleModalBackdropEvent:function(){return this.getModal().on("click",{dialog:this},function(e){t(e.target).hasClass("modal-backdrop")&&e.data.dialog.isClosable()&&e.data.dialog.canCloseByBackdrop()&&e.data.dialog.close()}),this},isModalEvent:function(t){return"undefined"!=typeof t.namespace&&"bs.modal"===t.namespace},makeModalDraggable:function(){return this.options.draggable&&(this.getModalHeader().addClass(this.getNamespace("draggable")).on("mousedown",{dialog:this},function(t){var e=t.data.dialog;e.draggableData.isMouseDown=!0;var n=e.getModalDialog().offset();e.draggableData.mouseOffset={top:t.clientY-n.top,left:t.clientX-n.left}}),this.getModal().on("mouseup mouseleave",{dialog:this},function(t){t.data.dialog.draggableData.isMouseDown=!1}),t("body").on("mousemove",{dialog:this},function(t){var e=t.data.dialog;e.draggableData.isMouseDown&&e.getModalDialog().offset({top:t.clientY-e.draggableData.mouseOffset.top,left:t.clientX-e.draggableData.mouseOffset.left})})),this},realize:function(){return this.initModalStuff(),this.getModal().addClass(o.NAMESPACE).addClass(this.getCssClass()),this.updateSize(),this.getDescription()&&this.getModal().attr("aria-describedby",this.getDescription()),this.getModalFooter().append(this.createFooterContent()),this.getModalHeader().append(this.createHeaderContent()),this.getModalBody().append(this.createBodyContent()),this.getModal().data("bs.modal",new n(this.getModal(),{backdrop:"static",keyboard:!1,show:!1})),this.makeModalDraggable(),this.handleModalEvents(),this.setRealized(!0),this.updateButtons(),this.updateType(),this.updateTitle(),this.updateMessage(),this.updateClosable(),this.updateAnimate(),this.updateSize(),this.updateTabindex(),this},open:function(){return!this.isRealized()&&this.realize(),this.getModal().modal("show"),this},close:function(){return!this.isRealized()&&this.realize(),this.getModal().modal("hide"),this}},o.prototype=t.extend(o.prototype,o.METHODS_TO_OVERRIDE[n.getModalVersion()]),o.newGuid=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(t){var e=16*Math.random()|0,n="x"===t?e:3&e|8;return n.toString(16)})},o.show=function(t){return new o(t).open()},o.alert=function(){var e={},n={type:o.TYPE_PRIMARY,title:null,message:null,closable:!1,draggable:!1,buttonLabel:o.DEFAULT_TEXTS.OK,callback:null};return e="object"==typeof arguments[0]&&arguments[0].constructor==={}.constructor?t.extend(!0,n,arguments[0]):t.extend(!0,n,{message:arguments[0],callback:"undefined"!=typeof arguments[1]?arguments[1]:null}),new o({type:e.type,title:e.title,message:e.message,closable:e.closable,draggable:e.draggable,data:{callback:e.callback},onhide:function(t){!t.getData("btnClicked")&&t.isClosable()&&"function"==typeof t.getData("callback")&&t.getData("callback")(!1)},buttons:[{label:e.buttonLabel,action:function(t){t.setData("btnClicked",!0),"function"==typeof t.getData("callback")&&t.getData("callback")(!0),t.close()}}]}).open()},o.confirm=function(){var e={},n={type:o.TYPE_PRIMARY,title:null,message:null,closable:!1,draggable:!1,btnCancelLabel:o.DEFAULT_TEXTS.CANCEL,btnOKLabel:o.DEFAULT_TEXTS.OK,bt
14642nOKClass:null,callback:null};return e="object"==typeof arguments[0]&&arguments[0].constructor==={}.constructor?t.extend(!0,n,arguments[0]):t.extend(!0,n,{message:arguments[0],closable:!1,buttonLabel:o.DEFAULT_TEXTS.OK,callback:"undefined"!=typeof arguments[1]?arguments[1]:null}),null===e.btnOKClass&&(e.btnOKClass=["btn",e.type.split("-")[1]].join("-")),new o({type:e.type,title:e.title,message:e.message,closable:e.closable,draggable:e.draggable,data:{callback:e.callback},buttons:[{label:e.btnCancelLabel,action:function(t){"function"==typeof t.getData("callback")&&t.getData("callback")(!1),t.close()}},{label:e.btnOKLabel,cssClass:e.btnOKClass,action:function(t){"function"==typeof t.getData("callback")&&t.getData("callback")(!0),t.close()}}]}).open()},o.warning=function(t,e){return new o({type:o.TYPE_WARNING,message:t}).open()},o.danger=function(t,e){return new o({type:o.TYPE_DANGER,message:t}).open()},o.success=function(t,e){return new o({type:o.TYPE_SUCCESS,message:t}).open()},o});;
14643/*
14644
14645     Creative Tim Modifications
14646
14647     Lines: 239, 240 was changed from top: 5px to top: 50% and we added margin-top: -13px. In this way the close button will be aligned vertically
14648     Line:242 - modified when the icon is set, we add the class "alert-with-icon", so there will be enough space for the icon.
14649
14650*/
14651
14652/*
14653* Project: Bootstrap Notify = v3.1.5
14654* Description: Turns standard Bootstrap alerts into "Growl-like" notifications.
14655* Author: Mouse0270 aka Robert McIntosh
14656* License: MIT License
14657* Website: https://github.com/mouse0270/bootstrap-growl
14658*/
14659
14660/* global define:false, require: false, jQuery:false */
14661
14662(function (factory) {
14663    if (typeof define === 'function' && define.amd) {
14664        // AMD. Register as an anonymous module.
14665        define(['jquery'], factory);
14666    } else if (typeof exports === 'object') {
14667        // Node/CommonJS
14668        factory(require('jquery'));
14669    } else {
14670        // Browser globals
14671        factory(jQuery);
14672    }
14673}(function ($) {
14674    // Create the defaults once
14675    function getOptionConfig(isNotify) {
14676        let templateNotify = isNotify == true ?
14677            '<div data-notify="container" style="background-color: #f2f7fd; border-color: #f2f7fd;color: #333333; font-family: roboto;min-width: 380px;min-height: 91px; padding: 10px 30px 10px 0px;" class="col-xs-11 col-sm-3 alert alert-{0}" role="alert" style="font-family: roboto;padding-left: 0;"> <button type="button" aria-hidden="true" class="close" data-notify="dismiss">&times;</button> <div class="itemNotify ahref " style=" "><table style="white-space: normal;" ><tbody><tr><td class="width-55" rowspan="3"><div style=" "><span data-notify="icon"></span></div></td><td class="contentNotify"><p class="titleNotify" style=" font-weight: bold; font-family: roboto; "><span data-notify="title">{1}</span></p><div style="display: -webkit-box !important; overflow: hidden; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important;  "><span data-notify="message">{2}</span></div></td></tr></tbody></table></div> <div class="progress" data-notify="progressbar"> <div class="progress-bar progress-bar-{0}" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%;"></div></div> <a href="{3}" target="{4}" data-notify="url"></a></div>'
14678            : '<div data-notify="container" class="col-xs-11 col-sm-3 alert alert-{0}" role="alert"><button type="button" aria-hidden="true" class="close" data-notify="dismiss">&times;</button><span data-notify="icon"></span> <span data-notify="title">{1}</span> <span data-notify="message">{2}</span><div class="progress" data-notify="progressbar"><div class="progress-bar progress-bar-{0}" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%;"></div></div><a href="{3}" target="{4}" data-notify="url"></a></div>';
14679        let align = isNotify == true ? 'bottom' : 'top';
14680        let url_target = isNotify == true ? "_self" : "_blank";
14681        return {
14682            element: 'body',
14683            position: null,
14684            type: "info",
14685            allow_dismiss: true,
14686            allow_duplicates: true,
14687            newest_on_top: false,
14688            showProgressbar: false,
14689            placement: {
14690                from: align,
14691                align: "right"
14692            },
14693            offset: 50,
14694            spacing: 10,
14695            z_index: 1050,
14696            delay: 7000,
14697            timer: 1000,
14698            url_target: url_target,
14699            mouse_over: null,
14700            animate: {
14701                enter: 'animated fadeInDown',
14702                exit: 'animated fadeOutUp'
14703            },
14704            onShow: null,
14705            onShown: null,
14706            onClose: null,
14707            onClosed: null,
14708            icon_type: 'class',
14709            template: templateNotify
14710        };
14711    }
14712    var defaults = getOptionConfig();
14713
14714    String.format = function () {
14715        var str = arguments[0];
14716        for (var i = 1; i < arguments.length; i++) {
14717            str = str.replace(RegExp("\\{" + (i - 1) + "\\}", "gm"), arguments[i]);
14718        }
14719        return str;
14720    };
14721
14722    function isDuplicateNotification(notification) {
14723        var isDupe = false;
14724
14725        $('[data-notify="container"]').each(function (i, el) {
14726            var $el = $(el);
14727            var title = $el.find('[data-notify="title"]').text().trim();
14728            var message = $el.find('[data-notify="message"]').html().trim();
14729
14730            // The input string might be different than the actual parsed HTML string!
14731            // (<br> vs <br /> for example)
14732            // So we have to force-parse this as HTML here!
14733            var isSameTitle = title === $("<div>" + notification.settings.content.title + "</div>").html().trim();
14734            var isSameMsg = message === $("<div>" + notification.settings.content.message + "</div>").html().trim();
14735            var isSameType = $el.hasClass('alert-' + notification.settings.type);
14736
14737            if (isSameTitle && isSameMsg && isSameType) {
14738                //we found the dupe. Set the var and stop checking.
14739                isDupe = true;
14740            }
14741            return !isDupe;
14742        });
14743
14744        return isDupe;
14745    }
14746
14747    function Notify(element, content, options) {
14748        // Setup Content of Notify
14749        var contentObj = {
14750            content: {
14751                message: typeof content === 'object' ? content.message : content,
14752                title: content.title ? content.title : '',
14753                icon: content.icon ? content.icon : '',
14754                url: content.url ? content.url : '#',
14755                target: content.target ? content.target : '-'
14756            }
14757        };
14758
14759        options = $.extend(true, {}, contentObj, options);
14760        this.settings = $.extend(true, {}, defaults, options);
14761        this._defaults = defaults;
14762        if (this.settings.content.target === "-") {
14763            this.settings.content.target = this.settings.url_target;
14764        }
14765        this.animations = {
14766            start: 'webkitAnimationStart oanimationstart MSAnimationStart animationstart',
14767            end: 'webkitAnimationEnd oanimationend MSAnimationEnd animationend'
14768        };
14769
14770        if (typeof this.settings.offset === 'number') {
14771            this.settings.offset = {
14772                x: this.settings.offset,
14773                y: this.settings.offset
14774            };
14775        }
14776
14777        //if duplicate messages are not allowed, then only continue if this new message is not a duplicate of one that it already showing
14778        if (this.settings.allow_duplicates || (!this.settings.allow_duplicates && !isDuplicateNotification(this))) {
14779            this.init();
14780        }
14781    }
14782
14783    $.extend(Notify.prototype, {
14784        init: function () {
14785            var self = this;
14786
14787            this.buildNotify();
14788            if (this.settings.content.icon) {
14789                this.setIcon();
14790            }
14791            if (this.settings.content.url != "#") {
14792                this.styleURL();
14793            }
14794            this.styleDismiss();
14795            this.placement();
14796            this.bind();
14797
14798            this.notify = {
14799                $ele: this.$ele,
14800                update: function (command, update) {
14801                    var commands = {};
14802                    if (typeof command === "string") {
14803                        commands[command] = update;
14804                    } else {
14805                        commands = command;
14806                    }
14807                    for (var cmd in commands) {
14808                        switch (cmd) {
14809                            case "type":
14810                                this.$ele.removeClass('alert-' + self.settings.type);
14811                                this.$ele.find('[data-notify="progressbar"] > .progress-bar').removeClass('progress-bar-' + self.settings.type);
14812                                self.settings.type = commands[cmd
vendor: 5,494 bytes, lines 14812-14914
14812];
14813                                this.$ele.addClass('alert-' + commands[cmd]).find('[data-notify="progressbar"] > .progress-bar').addClass('progress-bar-' + commands[cmd]);
14814                                break;
14815                            case "icon":
14816                                var $icon = this.$ele.find('[data-notify="icon"]');
14817                                if (self.settings.icon_type.toLowerCase() === 'class') {
14818                                    $icon.removeClass(self.settings.content.icon).addClass(commands[cmd]);
14819                                } else {
14820                                    if (!$icon.is('img')) {
14821                                        $icon.find('img');
14822                                    }
14823                                    $icon.attr('src', commands[cmd]);
14824                                }
14825                                break;
14826                            case "progress":
14827                                var newDelay = self.settings.delay - (self.settings.delay * (commands[cmd] / 100));
14828                                this.$ele.data('notify-delay', newDelay);
14829                                this.$ele.find('[data-notify="progressbar"] > div').attr('aria-valuenow', commands[cmd]).css('width', commands[cmd] + '%');
14830                                break;
14831                            case "url":
14832                                this.$ele.find('[data-notify="url"]').attr('href', commands[cmd]);
14833                                break;
14834                            case "target":
14835                                this.$ele.find('[data-notify="url"]').attr('target', commands[cmd]);
14836                                break;
14837                            default:
14838                                this.$ele.find('[data-notify="' + cmd + '"]').html(commands[cmd]);
14839                        }
14840                    }
14841                    var posX = this.$ele.outerHeight() + parseInt(self.settings.spacing) + parseInt(self.settings.offset.y);
14842                    self.reposition(posX);
14843                },
14844                close: function () {
14845                    self.close();
14846                }
14847            };
14848        },
14849        buildNotify: function () {
14850            var content = this.settings.content;
14851            this.$ele = $(String.format(this.settings.template, this.settings.type, content.title, content.message, content.url, content.target));
14852            this.$ele.attr('data-notify-position', this.settings.placement.from + '-' + this.settings.placement.align);
14853            if (!this.settings.allow_dismiss) {
14854                this.$ele.find('[data-notify="dismiss"]').css('display', 'none');
14855            }
14856            if ((this.settings.delay <= 0 && !this.settings.showProgressbar) || !this.settings.showProgressbar) {
14857                this.$ele.find('[data-notify="progressbar"]').remove();
14858            }
14859        },
14860        setIcon: function () {
14861            this.$ele.addClass('alert-with-icon');
14862
14863            if (this.settings.icon_type.toLowerCase() === 'class') {
14864                this.$ele.find('[data-notify="icon"]').addClass(this.settings.content.icon);
14865            } else {
14866                if (this.$ele.find('[data-notify="icon"]').is('img')) {
14867                    this.$ele.find('[data-notify="icon"]').attr('src', this.settings.content.icon);
14868                } else {
14869                    this.$ele.find('[data-notify="icon"]').append('<img src="' + this.settings.content.icon + '" alt="Notify Icon" />');
14870                }
14871            }
14872        },
14873        styleDismiss: function () {
14874            this.$ele.find('[data-notify="dismiss"]').css({
14875                position: 'absolute',
14876                right: '10px',
14877                top: '50%',
14878                marginTop: '-13px',
14879                zIndex: this.settings.z_index + 2
14880            });
14881        },
14882        styleURL: function () {
14883            this.$ele.find('[data-notify="url"]').css({
14884                backgroundImage: 'url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)',
14885                height: '100%',
14886                left: 0,
14887                position: 'absolute',
14888                top: 0,
14889                width: '100%',
14890                zIndex: this.settings.z_index + 1
14891            });
14892        },
14893        placement: function () {
14894            var self = this,
14895                offsetAmt = this.settings.offset.y,
14896                css = {
14897                    display: 'inline-block',
14898                    margin: '0px auto',
14899                    position: this.settings.position ? this.settings.position : (this.settings.element === 'body' ? 'fixed' : 'absolute'),
14900                    transition: 'all .5s ease-in-out',
14901                    zIndex: this.settings.z_index
14902                },
14903                hasAnimation = false,
14904                settings = this.settings;
14905
14906            $('[data-notify-position="' + this.settings.placement.from + '-' + this.settings.placement.align + '"]:not([data-closing="true"])').each(function () {
14907                offsetAmt = Math.max(offsetAmt, parseInt($(this).css(settings.placement.from)) + parseInt($(this).outerHeight()) + parseInt(settings.spacing));
14908            });
14909            if (this.settings.newest_on_top === true) {
14910                offsetAmt = this.settings.offset.y;
14911            }
14912            css[this.settings.placement.from] = offsetAmt + 'px';
14913
14914            switch (this.settings.placement.align) {
vendor: 4,760 bytes, lines 14915-15028
14915                case "left":
14916                case "right":
14917                    css[this.settings.placement.align] = this.settings.offset.x + 'px';
14918                    break;
14919                case "center":
14920                    css.left = 0;
14921                    css.right = 0;
14922                    break;
14923            }
14924            this.$ele.css(css).addClass(this.settings.animate.enter);
14925            $.each(Array('webkit-', 'moz-', 'o-', 'ms-', ''), function (index, prefix) {
14926                self.$ele[0].style[prefix + 'AnimationIterationCount'] = 1;
14927            });
14928
14929            $(this.settings.element).append(this.$ele);
14930
14931            if (this.settings.newest_on_top === true) {
14932                offsetAmt = (parseInt(offsetAmt) + parseInt(this.settings.spacing)) + this.$ele.outerHeight();
14933                this.reposition(offsetAmt);
14934            }
14935
14936            if ($.isFunction(self.settings.onShow)) {
14937                self.settings.onShow.call(this.$ele);
14938            }
14939
14940            this.$ele.one(this.animations.start, function () {
14941                hasAnimation = true;
14942            }).one(this.animations.end, function () {
14943                if ($.isFunction(self.settings.onShown)) {
14944                    self.settings.onShown.call(this);
14945                }
14946            });
14947
14948            setTimeout(function () {
14949                if (!hasAnimation) {
14950                    if ($.isFunction(self.settings.onShown)) {
14951                        self.settings.onShown.call(this);
14952                    }
14953                }
14954            }, 600);
14955        },
14956        bind: function () {
14957            var self = this;
14958
14959            this.$ele.find('[data-notify="dismiss"]').on('click', function () {
14960                self.close();
14961            });
14962
14963            this.$ele.mouseover(function () {
14964                $(this).data('data-hover', "true");
14965            }).mouseout(function () {
14966                $(this).data('data-hover', "false");
14967            });
14968            this.$ele.data('data-hover', "false");
14969
14970            if (this.settings.delay > 0) {
14971                self.$ele.data('notify-delay', self.settings.delay);
14972                var timer = setInterval(function () {
14973                    var delay = parseInt(self.$ele.data('notify-delay')) - self.settings.timer;
14974                    if ((self.$ele.data('data-hover') === 'false' && self.settings.mouse_over === "pause") || self.settings.mouse_over != "pause") {
14975                        var percent = ((self.settings.delay - delay) / self.settings.delay) * 100;
14976                        self.$ele.data('notify-delay', delay);
14977                        self.$ele.find('[data-notify="progressbar"] > div').attr('aria-valuenow', percent).css('width', percent + '%');
14978                    }
14979                    if (delay <= -(self.settings.timer)) {
14980                        clearInterval(timer);
14981                        self.close();
14982                    }
14983                }, self.settings.timer);
14984            }
14985        },
14986        close: function () {
14987            var self = this,
14988                posX = parseInt(this.$ele.css(this.settings.placement.from)),
14989                hasAnimation = false;
14990
14991            this.$ele.data('closing', 'true').addClass(this.settings.animate.exit);
14992            self.reposition(posX);
14993
14994            if ($.isFunction(self.settings.onClose)) {
14995                self.settings.onClose.call(this.$ele);
14996            }
14997
14998            this.$ele.one(this.animations.start, function () {
14999                hasAnimation = true;
15000            }).one(this.animations.end, function () {
15001                $(this).remove();
15002                if ($.isFunction(self.settings.onClosed)) {
15003                    self.settings.onClosed.call(this);
15004                }
15005            });
15006
15007            setTimeout(function () {
15008                if (!hasAnimation) {
15009                    self.$ele.remove();
15010                    if (self.settings.onClosed) {
15011                        self.settings.onClosed(self.$ele);
15012                    }
15013                }
15014            }, 600);
15015        },
15016        reposition: function (posX) {
15017            var self = this,
15018                notifies = '[data-notify-position="' + this.settings.placement.from + '-' + this.settings.placement.align + '"]:not([data-closing="true"])',
15019                $elements = this.$ele.nextAll(notifies);
15020            if (this.settings.newest_on_top === true) {
15021                $elements = this.$ele.prevAll(notifies);
15022            }
15023            $elements.each(function () {
15024                $(this).css(self.settings.placement.from, posX);
15025                posX = (parseInt(posX) + parseInt(self.settings.spacing)) + $(this).outerHeight();
15026            });
15027        }
15028    });
15029
15030    $.notify = function (content, options) {
15031        var plugin = new Notify(this, content, options);
15032        return plugin.notify;
15033    };
15034    $.notifyDefaults = function (options) {
15035        defaults = $.extend(true, {}, defaults, options);
15036        return defaults;
15037    };
15038    $.notifyClose = function (command) {
15039        if (typeof command === "undefined" || command === "all") {
15040            $('[data-notify]').find('[data-notify="dismiss"]').trigger('click');
15041        } else {
15042            $('[data-notify-position="' + command + '"]').find('[data-notify="dismiss"]').trigger('click');
15043        }
15044    };
15045    $.notifyMenu = function (content) {
15046        return new Notify(this, content, getOptionConfig(true)).notify;
15047    };
15048}));;
15049!function(e){e(["jquery"],function(e){return function(){function t(e,t,n){return f({type:O.error,iconClass:g().iconClasses.error,message:e,optionsOverride:n,title:t})}function n(t,n){return t||(t=g()),v=e("#"+t.containerId),v.length?v:(n&&(v=c(t)),v)}function i(e,t,n){return f({type:O.info,iconClass:g().iconClasses.info,message:e,optionsOverride:n,title:t})}function o(e){w=e}function s(e,t,n){return f({type:O.success,iconClass:g().iconClasses.success,message:e,optionsOverride:n,title:t})}function a(e,t,n){return f({type:O.warning,iconClass:g().iconClasses.warning,message:e,optionsOverride:n,title:t})}function r(e){var t=g();v||n(t),l(e,t)||u(t)}function d(t){var i=g();return v||n(i),t&&0===e(":focus",t).length?void h(t):void(v.children().length&&v.remove())}function u(t){for(var n=v.children(),i=n.length-1;i>=0;i--)l(e(n[i]),t)}function l(t,n){return t&&0===e(":focus",t).length?(t[n.hideMethod]({duration:n.hideDuration,easing:n.hideEasing,complete:function(){h(t)}}),!0):!1}function c(t){return v=e("<div/>").attr("id",t.containerId).addClass(t.positionClass).attr("aria-live","polite").attr("role","alert"),v.appendTo(e(t.target)),v}function p(){return{tapToDismiss:!0,toastClass:"toast",containerId:"toast-container",debug:!1,showMethod:"fadeIn",showDuration:300,showEasing:"swing",onShown:void 0,hideMethod:"fadeOut",hideDuration:1e3,hideEasing:"swing",onHidden:void 0,extendedTimeOut:1e3,iconClasses:{error:"toast-error",info:"toast-info",success:"toast-success",warning:"toast-warning"},iconClass:"toast-info",positionClass:"toast-top-right",timeOut:5e3,titleClass:"toast-title",messageClass:"toast-message",target:"body",closeHtml:'<button type="button">&times;</button>',newestOnTop:!0,preventDuplicates:!1,progressBar:!1}}function m(e){w&&w(e)}function f(t){function i(t){return!e(":focus",l).length||t?(clearTimeout(O.intervalId),l[r.hideMethod]({duration:r.hideDuration,easing:r.hideEasing,complete:function(){h(l),r.onHidden&&"hidden"!==b.state&&r.onHidden(),b.state="hidden",b.endTime=new Date,m(b)}})):void 0}function o(){(r.timeOut>0||r.extendedTimeOut>0)&&(u=setTimeout(i,r.extendedTimeOut),O.maxHideTime=parseFloat(r.extendedTimeOut),O.hideEta=(new Date).getTime()+O.maxHideTime)}function s(){clearTimeout(u),O.hideEta=0,l.stop(!0,!0)[r.showMethod]({duration:r.showDuration,easing:r.showEasing})}function a(){var e=(O.hideEta-(new Date).getTime())/O.maxHideTime*100;f.width(e+"%")}var r=g(),d=t.iconClass||r.iconClass;if("undefined"!=typeof t.optionsOverride&&(r=e.extend(r,t.optionsOverride),d=t.optionsOverride.iconClass||d),r.preventDuplicates){if(t.message===C)return;C=t.message}T++,v=n(r,!0);var u=null,l=e("<div/>"),c=e("<div/>"),p=e("<div/>"),f=e("<div/>"),w=e(r.closeHtml),O={intervalId:null,hideEta:null,maxHideTime:null},b={toastId:T,state:"visible",startTime:new Date,options:r,map:t};return t.iconClass&&l.addClass(r.toastClass).addClass(d),t.title&&(c.append(t.title).addClass(r.titleClass),l.append(c)),t.message&&(p.append(t.message).addClass(r.messageClass),l.append(p)),r.closeButton&&(w.addClass("toast-close-button").attr("role","button"),l.prepend(w)),r.progressBar&&(f.addClass("toast-progress"),l.prepend(f)),l.hide(),r.newestOnTop?v.prepend(l):v.append(l),l[r.showMethod]({duration:r.showDuration,easing:r.showEasing,complete:r.onShown}),r.timeOut>0&&(u=setTimeout(i,r.timeOut),O.maxHideTime=parseFloat(r.timeOut),O.hideEta=(new Date).getTime()+O.maxHideTime,r.progressBar&&(O.intervalId=setInterval(a,10))),l.hover(s,o),!r.onclick&&r.tapToDismiss&&l.click(i),r.closeButton&&w&&w.click(function(e){e.stopPropagation?e.stopPropagation():void 0!==e.cancelBubble&&e.cancelBubble!==!0&&(e.cancelBubble=!0),i(!0)}),r.onclick&&l.click(function(){r.onclick(),i()}),m(b),r.debug&&console&&console.log(b),l}function g(){return e.extend({},p(),b.options)}function h(e){v||(v=n()),e.is(":visible")||(e.remove(),e=null,0===v.children().length&&(v.remove(),C=void 0))}var v,w,C,T=0,O={error:"error",info:"info",success:"success",warning:"warning"},b={clear:r,remove:d,error:t,getContainer:n,info:i,options:{},subscribe:o,success:s,version:"2.1.0",warning:a};return b}()})}("function"==typeof define&&define.amd?define:function(e,t){"undefined"!=typeof module&&module.exports?module.exports=t(require("jquery")):window.toastr=t(window.jQuery)});
15050//# sourceMappingURL=/toastr.js.map;
15051!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.Sweetalert2=e()}(this,function(){"use strict";function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function a(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),t}function s(){return(s=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o])}return t}).apply(this,arguments)}function u(t){return(u=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}
15051function c(t,e){return(c=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function l(t,e,n){return(l=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(t){return!1}}()?Reflect.construct:function(t,e,n){var o=[null];o.push.apply(o,e);var i=new(Function.bind.apply(t,o));return n&&c(i,n.prototype),i}).apply(null,arguments)}function d(t,e){return!e||"object"!=typeof e&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}function p(t,e,n){return(p="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){var o=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=u(t)););return t}(t,e);if(o){var i=Object.getOwnPropertyDescriptor(o,e);return i.get?i.get.call(n):i.value}})(t,e,n||t)}function f(e){return Object.keys(e).map(function(t){return e[t]})}function m(t){return Array.prototype.slice.call(t)}function g(t){console.error("".concat(e," ").concat(t))}function h(t,e){!function(t){-1===n.indexOf(t)&&(n.push(t),w(t))}('"'.concat(t,'" is deprecated and will be removed in the next major release. Please use "').concat(e,'" instead.'))}function v(t){return t&&Promise.resolve(t)===t}function t(t){var e={};for(var n in t)e[t[n]]="swal2-"+t[n];return e}function b(t,e){return t.classList.contains(e)}function y(t,e,n){if(function(e){m(e.classList).forEach(function(t){-1===f(x).indexOf(t)&&-1===f(S).indexOf(t)&&e.classList.remove(t)})}(t),e&&e[n]){if("string"!=typeof e[n]&&!e[n].forEach)return w("Invalid type of customClass.".concat(n,'! Expected string or iterable object, got "').concat(r(e[n]),'"'));rt(t,e[n])}}var e="SweetAlert2:",w=function(t){console.warn("".concat(e," ").concat(t))},n=[],C=function(t){return"function"==typeof t?t():t},k=Object.freeze({cancel:"cancel",backdrop:"backdrop",close:"close",esc:"esc",timer:"timer"}),x=t(["container","shown","height-auto","iosfix","popup","modal","no-backdrop","toast","toast-shown","toast-column","fade","show","hide","noanimation","close","title","header","content","actions","confirm","cancel","footer","icon","image","input","file","range","select","radio","checkbox","label","textarea","inputerror","validation-message","progress-steps","active-progress-step","progress-step","progress-step-line","loading","styled","top","top-start","top-end","top-left","top-right","center","center-start","center-end","center-left","center-right","bottom","bottom-start","bottom-end","bottom-left","bottom-right","grow-row","grow-column","grow-fullscreen","rtl"]),S=t(["success","warning","info","question","error"]),P={previousBodyPadding:null};function B(t,e){if(!e)return null;switch(e){case"select":case"textarea":case"file":return st(t,x[e]);case"checkbox":return t.querySelector(".".concat(x.checkbox," input"));case"radio":return t.querySelector(".".concat(x.radio," input:checked"))||t.querySelector(".".concat(x.radio," input:first-child"));case"range":return t.querySelector(".".concat(x.range," input"));default:return st(t,x.input)}}function A(t){if(t.focus(),"file"!==t.type){var e=t.value;t.value="",t.value=e}}function E(t,e,n){t&&e&&("string"==typeof e&&(e=e.split(/\s+/).filter(Boolean)),e.forEach(function(e){t.forEach?t.forEach(function(t){n?t.classList.add(e):t.classList.remove(e)}):n?t.classList.add(e):t.classList.remove(e)}))}function T(t,e,n){n||0===parseInt(n)?t.style[e]="number"==typeof n?n+"px":n:t.style.removeProperty(e)}function L(t,e){var n=1<arguments.length&&void 0!==e?e:"flex";t.style.opacity="",t.style.display=n}function O(t){t.style.opacity="",t.style.display="none"}function M(t,e,n){e?L(t,n):O(t)}function V(t){return!(!t||!(t.offsetWidth||t.offsetHeight||t.getClientRects().length))}function j(t){var e=window.getComputedStyle(t),n=parseFloat(e.getPropertyValue("animation-duration")||"0"),o=parseFloat(e.getPropertyValue("transition-duration")||"0");return 0<n||0<o}function H(){return document.body.querySelector("."+x.container)}function I(t){var e=H();return e?e.querySelector(t):null}function q(t){return I("."+t)}function R(){return q(x.popup)}function D(){var t=R();return m(t.querySelectorAll("."+x.icon))}function N(){var t=D().filter(function(t){return V(t)});return t.length?t[0]:null}function U(){return q(x.title)}function F(){return q(x.content)}function _(){return q(x.image)}function z(){return q(x["progress-steps"])}function W(){return q(x["validation-message"])}function K(){return I("."+x.actions+" ."+x.confirm)}function Y(){return I("."+x.actions+" ."+x.cancel)}function Z(){return q(x.actions)}function Q(){return q(x.header)}function $(){return q(x.footer)}function J(){return q(x.close)}
15051function X(){var t=m(R().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')).sort(function(t,e){return t=parseInt(t.getAttribute("tabindex")),(e=parseInt(e.getAttribute("tabindex")))<t?1:t<e?-1:0}),e=m(R().querySelectorAll('\n  a[href],\n  area[href],\n  input:not([disabled]),\n  select:not([disabled]),\n  textarea:not([disabled]),\n  button:not([disabled]),\n  iframe,\n  object,\n  embed,\n  [tabindex="0"],\n  [contenteditable],\n  audio[controls],\n  video[controls],\n  summary\n')).filter(function(t){return"-1"!==t.getAttribute("tabindex")});return function(t){for(var e=[],n=0;n<t.length;n++)-1===e.indexOf(t[n])&&e.push(t[n]);return e}(t.concat(e)).filter(function(t){return V(t)})}function G(){return!ut()&&!document.body.classList.contains(x["no-backdrop"])}function tt(){return"undefined"==typeof window||"undefined"==typeof document}function et(t){Fe.isVisible()&&it!==t.target.value&&Fe.resetValidationMessage(),it=t.target.value}function nt(t,e){t instanceof HTMLElement?e.appendChild(t):"object"===r(t)?dt(e,t):t&&(e.innerHTML=t)}function ot(t,e){var n=Z(),o=K(),i=Y();e.showConfirmButton||e.showCancelButton||O(n),y(n,e.customClass,"actions"),ft(o,"confirm",e),ft(i,"cancel",e),e.buttonsStyling?function(t,e,n){rt([t,e],x.styled),n.confirmButtonColor&&(t.style.backgroundColor=n.confirmButtonColor);n.cancelButtonColor&&(e.style.backgroundColor=n.cancelButtonColor);var o=window.getComputedStyle(t).getPropertyValue("background-color");t.style.borderLeftColor=o,t.style.borderRightColor=o}(o,i,e):(at([o,i],x.styled),o.style.backgroundColor=o.style.borderLeftColor=o.style.borderRightColor="",i.style.backgroundColor=i.style.borderLeftColor=i.style.borderRightColor=""),e.reverseButtons&&o.parentNode.insertBefore(i,o)}var it,rt=function(t,e){E(t,e,!0)},at=function(t,e){E(t,e,!1)},st=function(t,e){for(var n=0;n<t.childNodes.length;n++)if(b(t.childNodes[n],e))return t.childNodes[n]},ut=function(){return document.body.classList.contains(x["toast-shown"])},ct='\n <div aria-labelledby="'.concat(x.title,'" aria-describedby="').concat(x.content,'" class="').concat(x.popup,'">\n   <div class="').concat(x.header,'">\n     <ul class="').concat(x["progress-steps"],'"></ul>\n     <div class="').concat(x.icon," ").concat(S.error,'">\n       <span class="swal2-x-mark"><span class="swal2-x-mark-line-left"></span><span class="swal2-x-mark-line-right"></span></span>\n     </div>\n     <div class="').concat(x.icon," ").concat(S.question,'"></div>\n     <div class="').concat(x.icon," ").concat(S.warning,'"></div>\n     <div class="').concat(x.icon," ").concat(S.info,'"></div>\n     <div class="').concat(x.icon," ").concat(S.success,'">\n       <div class="swal2-success-circular-line-left"></div>\n       <span class="swal2-success-line-tip"></span> <span class="swal2-success-line-long"></span>\n       <div class="swal2-success-ring"></div> <div class="swal2-success-fix"></div>\n       <div class="swal2-success-circular-line-right"></div>\n     </div>\n     <img class="').concat(x.image,'" />\n     <h2 class="').concat(x.title,'" id="').concat(x.title,'"></h2>\n     <button type="button" class="').concat(x.close,'"></button>\n   </div>\n   <div class="').concat(x.content,'">\n     <div id="').concat(x.content,'"></div>\n     <input class="').concat(x.input,'" />\n     <input type="file" class="').concat(x.file,'" />\n     <div class="').concat(x.range,'">\n       <input type="range" />\n       <output></output>\n     </div>\n     <select class="').concat(x.select,'"></select>\n     <div class="').concat(x.radio,'"></div>\n     <label for="').concat(x.checkbox,'" class="').concat(x.checkbox,'">\n       <input type="checkbox" />\n       <span class="').concat(x.label,'"></span>\n     </label>\n     <textarea class="').concat(x.textarea,'"></textarea>\n     <div class="').concat(x["validation-message"],'" id="').concat(x["validation-message"],'"></div>\n   </div>\n   <div class="').concat(x.actions,'">\n     <button type="button" class="').concat(x.confirm,'">OK</button>\n     <button type="button" class="').concat(x.cancel,'">Cancel</button>\n   </div>\n   <div class="').concat(x.footer,'">\n   </div>\n </div>\n').replace(/(^|\n)\s*/g,""),lt=function(t){if(function(){var t=H();t&&(t.parentNode.removeChild(t),at([document.documentElement,document.body],[x["no-backdrop"],x["toast-shown"],x["has-column"]]))}(),tt())g("SweetAlert2 requires document to initialize");else{var e=document.createElement("div");e.className=x.container,e.innerHTML=ct;var n=function(t){return"string"==typeof t?document.querySelector(t):t}(t.target);n.appendChild(e),function(t){var e=R();e.setAttribute("role",t.toast?"alert":"dialog"),e.setAttribute("aria-live",t.toast?"polite":"assertive"),t.toast||e.setAttribute("aria-modal","true")}(t),function(t){"rtl"===window.getComputedStyle(t).direction&&rt(H(),x.rtl)}(n),function(){var t=F(),e=st(t,x.input),n=st(t,x.file),o=t.querySelector(".".concat(x.range," input")),i=t.querySelector(".".concat(x.range," output")),r=st(t,x.select),a=t.querySelector(".".concat(x.checkbox," input")),s=st(t,x.textarea);e.oninput=et,n.onchange=et,r.onchange=et,a.onchange=et,s.oninput=et,o.oninput=function(t){et(t),i.value=o.value},o.onchange=function(t){et(t),o.nextSibling.value=o.value}}()}},dt=function(t,e){if(t.innerHTML="",0 in e)for(var n=0;n in e;n++)t.appendChild(e[n].cloneNode(!0));else t.appendChild(e.cloneNode(!0))},pt=function(){if(tt())return!1;var t=document.createElement("div"),e={WebkitAnimation:"webkitAnimationEnd",OAnimation:"oAnimationEnd oanimationend",animation:"animationend"};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&void 0!==t.style[n])return e[n];return!1}();function ft(t,e,n){M(t,n["showC"+e.substring(1)+"Button"],"inline-block"),t.innerHTML=n[e+"ButtonText"],t.setAttribute("aria-label",n[e+"ButtonAriaLabel"]),t.className=x[e],y(t,
15051n.customClass,e+"Button"),rt(t,n[e+"ButtonClass"])}function mt(t,e){var n=H();n&&(function(t,e){"string"==typeof e?t.style.background=e:e||rt([document.documentElement,document.body],x["no-backdrop"])}(n,e.backdrop),!e.backdrop&&e.allowOutsideClick&&w('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`'),function(t,e){e in x?rt(t,x[e]):(w('The "position" parameter is not valid, defaulting to "center"'),rt(t,x.center))}(n,e.position),function(t,e){if(e&&"string"==typeof e){var n="grow-"+e;n in x&&rt(t,x[n])}}(n,e.grow),y(n,e.customClass,"container"),e.customContainerClass&&rt(n,e.customContainerClass))}function gt(t,e){t.placeholder&&!e.inputPlaceholder||(t.placeholder=e.inputPlaceholder)}var ht={promise:new WeakMap,innerParams:new WeakMap,domCache:new WeakMap},vt=["input","file","range","select","radio","checkbox","textarea"],bt=function(t){if(!kt[t.input])return g('Unexpected type of input! Expected "text", "email", "password", "number", "tel", "select", "radio", "checkbox", "textarea", "file" or "url", got "'.concat(t.input,'"'));var e=Ct(t.input),n=kt[t.input](e,t);L(n),setTimeout(function(){A(n)})},yt=function(t,e){var n=B(F(),t);if(n)for(var o in function(t){for(var e=0;e<t.attributes.length;e++){var n=t.attributes[e].name;-1===["type","value","style"].indexOf(n)&&t.removeAttribute(n)}}(n),e)"range"===t&&"placeholder"===o||n.setAttribute(o,e[o])},wt=function(t){var e=Ct(t.input);t.inputClass&&rt(e,t.inputClass),t.customClass&&rt(e,t.customClass.input)},Ct=function(t){var e=x[t]?x[t]:x.input;return st(F(),e)},kt={};kt.text=kt.email=kt.password=kt.number=kt.tel=kt.url=function(t,e){return"string"==typeof e.inputValue||"number"==typeof e.inputValue?t.value=e.inputValue:v(e.inputValue)||w('Unexpected type of inputValue! Expected "string", "number" or "Promise", got "'.concat(r(e.inputValue),'"')),gt(t,e),t.type=e.input,t},kt.file=function(t,e){return gt(t,e),t},kt.range=function(t,e){var n=t.querySelector("input"),o=t.querySelector("output");return n.value=e.inputValue,n.type=e.input,o.value=e.inputValue,t},kt.select=function(t,e){if(t.innerHTML="",e.inputPlaceholder){var n=document.createElement("option");n.innerHTML=e.inputPlaceholder,n.value="",n.disabled=!0,n.selected=!0,t.appendChild(n)}return t},kt.radio=function(t){return t.innerHTML="",t},kt.checkbox=function(t,e){var n=B(F(),"checkbox");return n.value=1,n.id=x.checkbox,n.checked=Boolean(e.inputValue),t.querySelector("span").innerHTML=e.inputPlaceholder,t},kt.textarea=function(e,t){if(e.value=t.inputValue,gt(e,t),"MutationObserver"in window){var n=parseInt(window.getComputedStyle(R()).width),o=parseInt(window.getComputedStyle(R()).paddingLeft)+parseInt(window.getComputedStyle(R()).paddingRight);new MutationObserver(function(){var t=e.offsetWidth+o;R().style.width=n<t?t+"px":null}).observe(e,{attributes:!0,attributeFilter:["style"]})}return e};function xt(t,e){var n=F().querySelector("#"+x.content);e.html?(nt(e.html,n),L(n,"block")):e.text?(n.textContent=e.text,L(n,"block")):O(n),function(t,o){var i=F(),e=ht.innerParams.get(t),r=!e||o.input!==e.input;vt.forEach(function(t){var e=x[t],n=st(i,e);yt(t,o.inputAttributes),n.className=e,r&&O(n)}),o.input&&(r&&bt(o),wt(o))}(t,e),y(F(),e.customClass,"content")}function St(t,i){var r=z();if(!i.progressSteps||0===i.progressSteps.length)return O(r);L(r),r.innerHTML="";var a=parseInt(null===i.currentProgressStep?Fe.getQueueStep():i.currentProgressStep);a>=i.progressSteps.length&&w("Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)"),i.progressSteps.forEach(function(t,e){var n=function(t){var e=document.createElement("li");return rt(e,x["progress-step"]),e.innerHTML=t,e}(t);if(r.appendChild(n),e===a&&rt(n,x["active-progress-step"]),e!==i.progressSteps.length-1){var o=function(t){var e=document.createElement("li");return rt(e,x["progress-step-line"]),t.progressStepsDistance&&(e.style.width=t.progressStepsDistance),e}(t);r.appendChild(o)}})}function Pt(t,e){var n=Q();y(n,e.customClass,"header"),St(0,e),function(t,e){var n=ht.innerParams.get(t);if(n&&e.type===n.type&&N())y(N(),e.customClass,"icon");else if(Et(),e.type)if(Tt(),-1!==Object.keys(S).indexOf(e.type)){var o=I(".".concat(x.icon,".").concat(S[e.type]));L(o),y(o,e.customClass,"icon"),E(o,"swal2-animate-".concat(e.type,"-icon"),e.animation)}else g('Unknown type! Expected "success", "error", "warning", "info" or "question", got "'.concat(e.type,'"'))}(t,e),function(t,e){var n=_();if(!e.imageUrl)return O(n);L(n),n.setAttribute("src",e.imageUrl),n.setAttribute("alt",e.imageAlt),T(n,"width",e.imageWidth),T(n,"height",e.imageHeight),n.className=x.image,y(n,e.customClass,"image"),e.imageClass&&rt(n,e.imageClass)}(0,e),function(t,e){var n=U();M(n,e.title||e.titleText),e.title&&nt(e.title,n),e.titleText&&(n.innerText=e.titleText),y(n,e.customClass,"title")}(0,e),function(t,e){var n=J();n.innerHTML=e.closeButtonHtml,y(n,e.customClass,"closeButton"),M(n,e.showCloseButton),n.setAttribute("aria-label",e.closeButtonAriaLabel)}(0,e)}function Bt(t,e){!function(t,e){var n=R();T(n,"width",e.width),T(n,"padding",e.padding),e.background&&(n.style.background=e.background),n.className=x.popup,e.toast?(rt([document.documentElement,document.body],x["toast-shown"]),rt(n,x.toast)):rt(n,x.modal),y(n,e.customClass,"popup"),"string"==typeof e.customClass&&rt(n,e.customClass),E(n,x.noanimation,!e.animation)}(0,e),mt(0,e),Pt(t,e),xt(t,e),ot(0,e),function(t,e){var n=$();M(n,e.footer),e.footer&&nt(e.footer,n),y(n,e.customClass,"footer")}(0,e),"function"==typeof e.onRender&&e.onRender(R())}function At(){return K()&&K().click()}var Et=function(){for(var t=D(),e=0;e<t.length;e++)O(t[e])},Tt=function(){for(var t=R(),e=window.getComputedStyle(t).getPropertyValue("background-color"),n=t.querySelectorAll("[class^=swal2-success-circular-line], .swal2-success-fix"),o=0;o<n.length;o++)n[o].style.backgroundColor=e};function Lt(){var t=R();t||Fe.fire(""),t=R();var e=Z(),n=K(),o=Y();L(e),L(n),rt([t,e],x.loading),n.disabled=!0,o.disabled=!0,t.setAttribute("data-loading",!0),t.setAttribute("aria-busy",!0),t.focus()}function Ot(){return new Promise(function(t){var e=window.scrollX,n=window.scrollY;Ht.restoreFocusTimeout=setTimeout(function(){Ht.previousActiveElement&&Ht.previousActiveElement.focus?(Ht.previousActiveElement.focus(),Ht.previousActiveElement=null):document.body&&document.body.focus(),t()},100),void 0!==e&&void 0!==n&&window.scrollTo(e,n)})}function Mt(t){return Object.prototype.hasOwnProperty.call(It,t)}function Vt(t){return Rt[t]}var jt=[],Ht={},It={title:"",titleText:"",text:"",html:"",footer:"",type:null,toast:!1,
15051customClass:"",customContainerClass:"",target:"body",backdrop:!0,animation:!0,heightAuto:!0,allowOutsideClick:!0,allowEscapeKey:!0,allowEnterKey:!0,stopKeydownPropagation:!0,keydownListenerCapture:!1,showConfirmButton:!0,showCancelButton:!1,preConfirm:null,confirmButtonText:"OK",confirmButtonAriaLabel:"",confirmButtonColor:null,confirmButtonClass:"",cancelButtonText:"Cancel",cancelButtonAriaLabel:"",cancelButtonColor:null,cancelButtonClass:"",buttonsStyling:!0,reverseButtons:!1,focusConfirm:!0,focusCancel:!1,showCloseButton:!1,closeButtonHtml:"&times;",closeButtonAriaLabel:"Close this dialog",showLoaderOnConfirm:!1,imageUrl:null,imageWidth:null,imageHeight:null,imageAlt:"",imageClass:"",timer:null,width:null,padding:null,background:null,input:null,inputPlaceholder:"",inputValue:"",inputOptions:{},inputAutoTrim:!0,inputClass:"",inputAttributes:{},inputValidator:null,validationMessage:null,grow:!1,position:"center",progressSteps:[],currentProgressStep:null,progressStepsDistance:null,onBeforeOpen:null,onOpen:null,onRender:null,onClose:null,onAfterClose:null,scrollbarPadding:!0},qt=["title","titleText","text","html","type","customClass","showConfirmButton","showCancelButton","confirmButtonText","confirmButtonAriaLabel","confirmButtonColor","confirmButtonClass","cancelButtonText","cancelButtonAriaLabel","cancelButtonColor","cancelButtonClass","buttonsStyling","reverseButtons","imageUrl","imageWidth","imageHeigth","imageAlt","imageClass","progressSteps","currentProgressStep"],Rt={customContainerClass:"customClass",confirmButtonClass:"customClass",cancelButtonClass:"customClass",imageClass:"customClass",inputClass:"customClass"},Dt=["allowOutsideClick","allowEnterKey","backdrop","focusConfirm","focusCancel","heightAuto","keydownListenerCapture"],Nt=Object.freeze({isValidParameter:Mt,isUpdatableParameter:function(t){return-1!==qt.indexOf(t)},isDeprecatedParameter:Vt,argsToParams:function(n){var o={};switch(r(n[0])){case"object":s(o,n[0]);break;default:["title","html","type"].forEach(function(t,e){switch(r(n[e])){case"string":o[t]=n[e];break;case"undefined":break;default:g("Unexpected type of ".concat(t,'! Expected "string", got ').concat(r(n[e])))}})}return o},isVisible:function(){return V(R())},clickConfirm:At,clickCancel:function(){return Y()&&Y().click()},getContainer:H,getPopup:R,getTitle:U,getContent:F,getImage:_,getIcon:N,getIcons:D,getCloseButton:J,getActions:Z,getConfirmButton:K,getCancelButton:Y,getHeader:Q,getFooter:$,getFocusableElements:X,getValidationMessage:W,isLoading:function(){return R().hasAttribute("data-loading")},fire:function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return l(this,e)},mixin:function(n){return function(t){function e(){return o(this,e),d(this,u(e).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&c(t,e)}(e,t),a(e,[{key:"_main",value:function(t){return p(u(e.prototype),"_main",this).call(this,s({},n,t))}}]),e}(this)},queue:function(t){var r=this;jt=t;function a(t,e){jt=[],document.body.removeAttribute("data-swal2-queue-step"),t(e)}var s=[];return new Promise(function(i){!function e(n,o){n<jt.length?(document.body.setAttribute("data-swal2-queue-step",n),r.fire(jt[n]).then(function(t){void 0!==t.value?(s.push(t.value),e(n+1,o)):a(i,{dismiss:t.dismiss})})):a(i,{value:s})}(0)})},getQueueStep:function(){return document.body.getAttribute("data-swal2-queue-step")},insertQueueStep:function(t,e){return e&&e<jt.length?jt.splice(e,0,t):jt.push(t)},deleteQueueStep:function(t){void 0!==jt[t]&&jt.splice(t,1)},showLoading:Lt,enableLoading:Lt,getTimerLeft:function(){return Ht.timeout&&Ht.timeout.getTimerLeft()},stopTimer:function(){return Ht.timeout&&Ht.timeout.stop()},resumeTimer:function(){return Ht.timeout&&Ht.timeout.start()},toggleTimer:function(){var t=Ht.timeout;return t&&(t.running?t.stop():t.start())},increaseTimer:function(t){return Ht.timeout&&Ht.timeout.increase(t)},isTimerRunning:function(){return Ht.timeout&&Ht.timeout.isRunning()}});function Ut(){var t=ht.innerParams.get(this),e=ht.domCache.get(this);t.showConfirmButton||(O(e.confirmButton),t.showCancelButton||O(e.actions)),at([e.popup,e.actions],x.loading),e.popup.removeAttribute("aria-busy"),e.popup.removeAttribute("data-loading"),e.confirmButton.disabled=!1,e.cancelButton.disabled=!1}function Ft(){null===P.previousBodyPadding&&document.body.scrollHeight>window.innerHeight&&(P.previousBodyPadding=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")),document.body.style.paddingRight=P.previousBodyPadding+function(){if("ontouchstart"in window||navigator.msMaxTouchPoints)return 0;var t=document.createElement("div");t.style.width="50px",t.style.height="50px",t.style.overflow="scroll",document.body.appendChild(t);var e=t.offsetWidth-t.clientWidth;return document.body.removeChild(t),e}()+"px")}function _t(){return!!window.MSInputMethodContext&&!!document.documentMode}function zt(){var t=H(),e=R();t.style.removeProperty("align-items"),e.offsetTop<0&&(t.style.alignItems="flex-start")}var Wt=function(){var e,n=H();n.ontouchstart=function(t){e=t.target===n||!function(t){return!!(t.scrollHeight>t.clientHeight)}(n)&&"INPUT"!==t.target.tagName},n.ontouchmove=function(t){e&&(t.preventDefault(),t.stopPropagation())}},Kt={swalPromiseResolve:new WeakMap};function Yt(t,e,n,o){n?Jt(t,o):(Ot().then(function(){return Jt(t,o)}),Ht.keydownTarget.removeEventListener("keydown",Ht.keydownHandler,{capture:Ht.keydownListenerCapture}),Ht.keydownHandlerAdded=!1),e.parentNode&&e.parentNode.removeChild(e),G()&&(null!==P.previousBodyPadding&&(document.body.style.paddingRight=P.previousBodyPadding+"px",P.previousBodyPadding=null),function(){if(b(document.body,x.iosfix)){var t=parseInt(document.body.style.top,10);at(document.body,x.iosfix),document.body.style.top="",document.body.scrollTop=-1*t}}(),"undefined"!=typeof window&&_t()&&window.removeEventListener("resize",zt),m(document.body.children).forEac
15051h(function(t){t.hasAttribute("data-previous-aria-hidden")?(t.setAttribute("aria-hidden",t.getAttribute("data-previous-aria-hidden")),t.removeAttribute("data-previous-aria-hidden")):t.removeAttribute("aria-hidden")})),at([document.documentElement,document.body],[x.shown,x["height-auto"],x["no-backdrop"],x["toast-shown"],x["toast-column"]])}function Zt(t){var e=R();if(e&&!b(e,x.hide)){var n=ht.innerParams.get(this);if(n){var o=Kt.swalPromiseResolve.get(this);at(e,x.show),rt(e,x.hide),function(t,e,n){var o=H(),i=pt&&j(e),r=n.onClose,a=n.onAfterClose;if(r!==null&&typeof r==="function"){r(e)}if(i){$t(t,e,o,a)}else{Yt(t,o,ut(),a)}}(this,e,n),o(t||{})}}}function Qt(t){for(var e in t)t[e]=new WeakMap}var $t=function(t,e,n,o){Ht.swalCloseEventFinishedCallback=Yt.bind(null,t,n,ut(),o),e.addEventListener(pt,function(t){t.target===e&&(Ht.swalCloseEventFinishedCallback(),delete Ht.swalCloseEventFinishedCallback)})},Jt=function(t,e){setTimeout(function(){null!==e&&"function"==typeof e&&e(),R()||function(t){delete t.params,delete Ht.keydownHandler,delete Ht.keydownTarget,Qt(ht),Qt(Kt)}(t)})};function Xt(t,e,n){var o=ht.domCache.get(t);e.forEach(function(t){o[t].disabled=n})}function Gt(t,e){if(!t)return!1;if("radio"===t.type)for(var n=t.parentNode.parentNode.querySelectorAll("input"),o=0;o<n.length;o++)n[o].disabled=e;else t.disabled=e}var te=function(){function n(t,e){o(this,n),this.callback=t,this.remaining=e,this.running=!1,this.start()}return a(n,[{key:"start",value:function(){return this.running||(this.running=!0,this.started=new Date,this.id=setTimeout(this.callback,this.remaining)),this.remaining}},{key:"stop",value:function(){return this.running&&(this.running=!1,clearTimeout(this.id),this.remaining-=new Date-this.started),this.remaining}},{key:"increase",value:function(t){var e=this.running;return e&&this.stop(),this.remaining+=t,e&&this.start(),this.remaining}},{key:"getTimerLeft",value:function(){return this.running&&(this.stop(),this.start()),this.remaining}},{key:"isRunning",value:function(){return this.running}}]),n}(),ee={email:function(t,e){return/^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]{2,24}$/.test(t)?Promise.resolve():Promise.resolve(e||"Invalid email address")},url:function(t,e){return/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{2,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(t)?Promise.resolve():Promise.resolve(e||"Invalid URL")}};function ne(t){!function(e){e.inputValidator||Object.keys(ee).forEach(function(t){e.input===t&&(e.inputValidator=ee[t])})}(t),t.showLoaderOnConfirm&&!t.preConfirm&&w("showLoaderOnConfirm is set to true, but preConfirm is not defined.\nshowLoaderOnConfirm should be used together with preConfirm, see usage example:\nhttps://sweetalert2.github.io/#ajax-request"),t.animation=C(t.animation),function(t){t.target&&("string"!=typeof t.target||document.querySelector(t.target))&&("string"==typeof t.target||t.target.appendChild)||(w('Target parameter is not valid, defaulting to "body"'),t.target="body")}(t),"string"==typeof t.title&&(t.title=t.title.split("\n").join("<br />")),lt(t)}function oe(t,e){t.removeEventListener(pt,oe),e.style.overflowY="auto"}function ie(t){var e=H(),n=R();"function"==typeof t.onBeforeOpen&&t.onBeforeOpen(n),me(e,n,t),pe(e,n),G()&&fe(e,t.scrollbarPadding),ut()||Ht.previousActiveElement||(Ht.previousActiveElement=document.activeElement),"function"==typeof t.onOpen&&setTimeout(function(){return t.onOpen(n)})}function re(t,e){"select"===e.input||"radio"===e.input?be(t,e):-1!==["text","email","number","tel","textarea"].indexOf(e.input)&&v(e.inputValue)&&ye(t,e)}function ae(t,e){t.disableButtons(),e.input?ke(t,e):xe(t,e,!0)}function se(t,e){t.disableButtons(),e(k.cancel)}function ue(t,e){t.closePopup({value:e})}function ce(e,t,n,o){t.keydownTarget&&t.keydownHandlerAdded&&(t.keydownTarget.removeEventListener("keydown",t.keydownHandler,{capture:t.keydownListenerCapture}),t.keydownHandlerAdded=!1),n.toast||(t.keydownHandler=function(t){return Be(e,t,n,o)},t.keydownTarget=n.keydownListenerCapture?window:R(),t.keydownListenerCapture=n.keydownListenerCapture,t.keydownTarget.addEventListener("keydown",t.keydownHandler,{capture:t.keydownListenerCapture}),t.keydownHandlerAdded=!0)}function le(t,e,n){for(var o=X(),i=0;i<o.length;i++)return(e+=n)===o.length?e=0:-1===e&&(e=o.length-1),o[e].focus();R().focus()}function de(t,e,n){e.toast?Oe(t,e,n):(Ve(t),je(t),He(t,e,n))}var pe=function(t,e){pt&&j(e)?(t.style.overflowY="hidden",e.addEventListener(pt,oe.bind(null,e,t))):t.style.overflowY="auto"},fe=function(t,e){!function(){if(/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream&&!b(document.body,x.iosfix)){var t=document.body.scrollTop;document.body.style.top=-1*t+"px",rt(document.body,x.iosfix),Wt()}}(),"undefined"!=typeof window&&_t()&&(zt(),window.addEventListener("resize",zt)),m(document.body.children).forEac
15051h(function(t){t===H()||function(t,e){if("function"==typeof t.contains)return t.contains(e)}(t,H())||(t.hasAttribute("aria-hidden")&&t.setAttribute("data-previous-aria-hidden",t.getAttribute("aria-hidden")),t.setAttribute("aria-hidden","true"))}),e&&Ft(),setTimeout(function(){t.scrollTop=0})},me=function(t,e,n){n.animation&&(rt(e,x.show),rt(t,x.fade)),L(e),rt([document.documentElement,document.body,t],x.shown),n.heightAuto&&n.backdrop&&!n.toast&&rt([document.documentElement,document.body],x["height-auto"])},ge=function(t){return t.checked?1:0},he=function(t){return t.checked?t.value:null},ve=function(t){return t.files.length?null!==t.getAttribute("multiple")?t.files:t.files[0]:null},be=function(e,n){function o(t){return we[n.input](i,Ce(t),n)}var i=F();v(n.inputOptions)?(Lt(),n.inputOptions.then(function(t){e.hideLoading(),o(t)})):"object"===r(n.inputOptions)?o(n.inputOptions):g("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(r(n.inputOptions)))},ye=function(e,n){var o=e.getInput();O(o),n.inputValue.then(function(t){o.value="number"===n.input?parseFloat(t)||0:t+"",L(o),o.focus(),e.hideLoading()}).catch(function(t){g("Error in inputValue promise: "+t),o.value="",L(o),o.focus(),e.hideLoading()})},we={select:function(t,e,i){var r=st(t,x.select);e.forEach(function(t){var e=t[0],n=t[1],o=document.createElement("option");o.value=e,o.innerHTML=n,i.inputValue.toString()===e.toString()&&(o.selected=!0),r.appendChild(o)}),r.focus()},radio:function(t,e,a){var s=st(t,x.radio);e.forEach(function(t){var e=t[0],n=t[1],o=document.createElement("input"),i=document.createElement("label");o.type="radio",o.name=x.radio,o.value=e,a.inputValue.toString()===e.toString()&&(o.checked=!0);var r=document.createElement("span");r.innerHTML=n,r.className=x.label,i.appendChild(o),i.appendChild(r),s.appendChild(i)});var n=s.querySelectorAll("input");n.length&&n[0].focus()}},Ce=function(e){var n=[];return"undefined"!=typeof Map&&e instanceof Map?e.forEach(function(t,e){n.push([e,t])}):Object.keys(e).forEach(function(t){n.push([t,e[t]])}),n},ke=function(e,n){var o=function(t,e){var n=t.getInput();if(!n)return null;switch(e.input){case"checkbox":return ge(n);case"radio":return he(n);case"file":return ve(n);default:return e.inputAutoTrim?n.value.trim():n.value}}(e,n);n.inputValidator?(e.disableInput(),Promise.resolve().then(function(){return n.inputValidator(o,n.validationMessage)}).then(function(t){e.enableButtons(),e.enableInput(),t?e.showValidationMessage(t):xe(e,n,o)})):e.getInput().checkValidity()?xe(e,n,o):(e.enableButtons(),e.showValidationMessage(n.validationMessage))},xe=function(e,t,n){(t.showLoaderOnConfirm&&Lt(),t.preConfirm)?(e.resetValidationMessage(),Promise.resolve().then(function(){return t.preConfirm(n,t.validationMessage)}).then(function(t){V(W())||!1===t?e.hideLoading():ue(e,void 0===t?n:t)})):ue(e,n)},Se=["ArrowLeft","ArrowRight","ArrowUp","ArrowDown","Left","Right","Up","Down"],Pe=["Escape","Esc"],Be=function(t,e,n,o){n.stopKeydownPropagation&&e.stopPropagation(),"Enter"===e.key?Ae(t,e,n):"Tab"===e.key?Ee(e,n):-1!==Se.indexOf(e.key)?Te():-1!==Pe.indexOf(e.key)&&Le(e,n,o)},Ae=function(t,e,n){if(!e.isComposing&&e.target&&t.getInput()&&e.target.outerHTML===t.getInput().outerHTML){if(-1!==["textarea","file"].indexOf(n.input))return;At(),e.preventDefault()}},Ee=function(t,e){for(var n=t.target,o=X(),i=-1,r=0;r<o.length;r++)if(n===o[r]){i=r;break}t.shiftKey?le(0,i,-1):le(0,i,1),t.stopPropagation(),t.preventDefault()},Te=function(){var t=K(),e=Y();document.activeElement===t&&V(e)?e.focus():document.activeElement===e&&V(t)&&t.focus()},Le=function(t,e,n){C(e.allowEscapeKey)&&(t.preventDefault(),n(k.esc))},Oe=function(t,e,n){t.popup.onclick=function(){e.showConfirmButton||e.showCancelButton||e.showCloseButton||e.input||n(k.close)}},Me=!1,Ve=function(e){e.popup.onmousedown=function(){e.container.onmouseup=function(t){e.container.onmouseup=void 0,t.target===e.container&&(Me=!0)}}},je=function(e){e.container.onmousedown=function(){e.popup.onmouseup=function(t){e.popup.onmouseup=void 0,t.target!==e.popup&&!e.popup.contains(t.target)||(Me=!0)}}},He=function(e,n,o){e.container.onclick=function(t){Me?Me=!1:t.target===e.container&&C(n.allowOutsideClick)&&o(k.backdrop)}};var Ie=function(t,e,n){e.timer&&(t.timeout=new te(function(){n("timer"),delete t.timeout},e.timer))},qe=function(t,e){if(!e.toast)return C(e.allowEnterKey)?e.focusCancel&&V(t.cancelButton)?t.cancelButton.focus():e.focusConfirm&&V(t.confirmButton)?t.confirmButton.focus():void le(0,-1,1):Re()},Re=function(){document.activeElement&&"function"==typeof document.activeElement.blur&&document.activeElement.blur()};
15051var De,Ne=Object.freeze({hideLoading:Ut,disableLoading:Ut,getInput:function(t){var e=ht.innerParams.get(t||this),n=ht.domCache.get(t||this);return n?B(n.content,e.input):null},close:Zt,closePopup:Zt,closeModal:Zt,closeToast:Zt,enableButtons:function(){Xt(this,["confirmButton","cancelButton"],!1)},disableButtons:function(){Xt(this,["confirmButton","cancelButton"],!0)},enableConfirmButton:function(){h("Swal.enableConfirmButton()","Swal.getConfirmButton().removeAttribute('disabled')"),Xt(this,["confirmButton"],!1)},disableConfirmButton:function(){h("Swal.disableConfirmButton()","Swal.getConfirmButton().setAttribute('disabled', '')"),Xt(this,["confirmButton"],!0)},enableInput:function(){return Gt(this.getInput(),!1)},disableInput:function(){return Gt(this.getInput(),!0)},showValidationMessage:function(t){var e=ht.domCache.get(this);e.validationMessage.innerHTML=t;var n=window.getComputedStyle(e.popup);e.validationMessage.style.marginLeft="-".concat(n.getPropertyValue("padding-left")),e.validationMessage.style.marginRight="-".concat(n.getPropertyValue("padding-right")),L(e.validationMessage);var o=this.getInput();o&&(o.setAttribute("aria-invalid",!0),o.setAttribute("aria-describedBy",x["validation-message"]),A(o),rt(o,x.inputerror))},resetValidationMessage:function(){var t=ht.domCache.get(this);t.validationMessage&&O(t.validationMessage);var e=this.getInput();e&&(e.removeAttribute("aria-invalid"),e.removeAttribute("aria-describedBy"),at(e,x.inputerror))},getProgressSteps:function(){return h("Swal.getProgressSteps()","const swalInstance = Swal.fire({progressSteps: ['1', '2', '3']}); const progressSteps = swalInstance.params.progressSteps"),ht.innerParams.get(this).progressSteps},setProgressSteps:function(t){h("Swal.setProgressSteps()","Swal.update()");var e=s({},ht.innerParams.get(this),{progressSteps:t});St(0,e),ht.innerParams.set(this,e)},showProgressSteps:function(){var t=ht.domCache.get(this);L(t.progressSteps)},hideProgressSteps:function(){var t=ht.domCache.get(this);O(t.progressSteps)},_main:function(t){!function(t){for(var e in t)Mt(i=e)||w('Unknown parameter "'.concat(i,'"')),t.toast&&(o=e,-1!==Dt.indexOf(o)&&w('The parameter "'.concat(o,'" is incompatible with toasts'))),Vt(n=void 0)&&h(n,Vt(n));var n,o,i}(t),R()&&Ht.swalCloseEventFinishedCallback&&(Ht.swalCloseEventFinishedCallback(),delete Ht.swalCloseEventFinishedCallback),Ht.deferDisposalTimer&&(clearTimeout(Ht.deferDisposalTimer),delete Ht.deferDisposalTimer);var e=s({},It,t);ne(e),Object.freeze(e),Ht.timeout&&(Ht.timeout.stop(),delete Ht.timeout),clearTimeout(Ht.restoreFocusTimeout);var n=function(t){var e={popup:R(),container:H(),content:F(),actions:Z(),confirmButton:K(),cancelButton:Y(),closeButton:J(),validationMessage:W(),progressSteps:z()};return ht.domCache.set(t,e),e}(this);return Bt(this,e),ht.innerParams.set(this,e),function(n,o,i){return new Promise(function(t){var e=function t(e){n.closePopup({dismiss:e})};Kt.swalPromiseResolve.set(n,t);Ie(Ht,i,e);o.confirmButton.onclick=function(){return ae(n,i)};o.cancelButton.onclick=function(){return se(n,e)};o.closeButton.onclick=function(){return e(k.close)};de(o,i,e);ce(n,Ht,i,e);if(i.toast&&(i.input||i.footer||i.showCloseButton)){rt(document.body,x["toast-column"])}else{at(document.body,x["toast-column"])}re(n,i);ie(i);qe(o,i);o.container.scrollTop=0})}(this,n,e)},update:function(e){var t=R();if(!t||b(t,x.hide))return w("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.");var n={};Object.keys(e).forEach(function(t){Fe.isUpdatableParameter(t)?n[t]=e[t]:w('Invalid parameter to update: "'.concat(t,'". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js'))});var o=s({},ht.innerParams.get(this),n);Bt(this,o),ht.innerParams.set(this,o),Object.defineProperties(this,{params:{value:s({},this.params,e),writable:!1,enumerable:!0}})}});function Ue(){if("undefined"!=typeof window){"undefined"==typeof Promise&&g("This package requires a Promise library, please include a shim to enable it in this browser (See: https://github.com/sweetalert2/sweetalert2/wiki/Migration-from-SweetAlert-to-SweetAlert2#1-ie-support)"),De=this;for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var o=Object.freeze(this.constructor.argsToParams(e));Object.defineProperties(this,{params:{value:o,writable:!1,enumerable:!0,configurable:!0}});var i=this._main(this.params);ht.promise.set(this,i)}}Ue.prototype.then=function(t){return ht.promise.get(this).then(t)},Ue.prototype.finally=function(t){return ht.promise.get(this).finally(t)},s(Ue.prototype,Ne),s(Ue,Nt),Object.keys(Ne).forEach(function(e){Ue[e]=function(){var t;if(De)return(t=De)[e].apply(t,arguments)}}),Ue.DismissReason=k,Ue.version="8.18.5";var Fe=Ue;return Fe.default=Fe}),void 0!==this&&this.Sweetalert2&&(this.swal=this.sweetAlert=this.Swal=this.SweetAlert=this.Sweetalert2);
15052"undefined"!=typeof document&&function(e,t){var n=e.createElement("style");if(e.getElementsByTagName("head")[0].appendChild(n),n.styleSheet)n.styleSheet.disabled||(n.styleSheet.cssText=t);else try{n.innerHTML=t}catch(e){n.innerText=t}}(document,"@charset \"UTF-8\";
15052.swal2-popup.swal2-toast{flex-direction:row;align-items:center;width:auto;padding:.625em;overflow-y:hidden;box-shadow:0 0 .625em #d9d9d9}.swal2-popup.swal2-toast .swal2-header{flex-direction:row}.swal2-popup.swal2-toast .swal2-title{flex-grow:1;justify-content:flex-start;margin:0 .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{position:static;width:.8em;height:.8em;line-height:.8}.swal2-popup.swal2-toast .swal2-content{justify-content:flex-start;font-size:1em}.swal2-popup.swal2-toast .swal2-icon{width:2em;min-width:2em;height:2em;margin:0}.swal2-popup.swal2-toast .swal2-icon::before{display:flex;align-items:center;font-size:2em;font-weight:700}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-popup.swal2-toast .swal2-icon::before{font-size:.25em}}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{flex-basis:auto!important;width:auto;height:auto;margin:0 .3125em}.swal2-popup.swal2-toast .swal2-styled{margin:0 .3125em;padding:.3125em .625em;font-size:1em}.swal2-popup.swal2-toast .swal2-styled:focus{box-shadow:0 0 0 .0625em #fff,0 0 0 .125em rgba(50,100,150,.4)}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.8em;left:-.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:swal2-toast-show .5s;animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:swal2-toast-hide .1s forwards;animation:swal2-toast-hide .1s forwards}.swal2-popup.swal2-toast .swal2-animate-success-icon .swal2-success-line-tip{-webkit-animation:swal2-toast-animate-success-line-tip .75s;animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-animate-success-icon .swal2-success-line-long{-webkit-animation:swal2-toast-animate-success-line-long .75s;animation:swal2-toast-animate-success-line-long .75s}.swal2-container{display:flex;position:fixed;z-index:1060;
15052top:0;right:0;bottom:0;left:0;flex-direction:row;align-items:center;justify-content:center;padding:.625em;overflow-x:hidden;background-color:transparent;-webkit-overflow-scrolling:touch}.swal2-container.swal2-top{align-items:flex-start}.swal2-container.swal2-top-left,.swal2-container.swal2-top-start{align-items:flex-start;justify-content:flex-start}.swal2-container.swal2-top-end,.swal2-container.swal2-top-right{align-items:flex-start;justify-content:flex-end}.swal2-container.swal2-center{align-items:center}.swal2-container.swal2-center-left,.swal2-container.swal2-center-start{align-items:center;justify-content:flex-start}.swal2-container.swal2-center-end,.swal2-container.swal2-center-right{align-items:center;justify-content:flex-end}.swal2-container.swal2-bottom{align-items:flex-end}.swal2-container.swal2-bottom-left,.swal2-container.swal2-bottom-start{align-items:flex-end;justify-content:flex-start}.swal2-container.swal2-bottom-end,.swal2-container.swal2-bottom-right{align-items:flex-end;justify-content:flex-end}.swal2-container.swal2-bottom-end>:first-child,.swal2-container.swal2-bottom-left>:first-child,.swal2-container.swal2-bottom-right>:first-child,.swal2-container.swal2-bottom-start>:first-child,.swal2-container.swal2-bottom>:first-child{margin-top:auto}.swal2-container.swal2-grow-fullscreen>.swal2-modal{display:flex!important;flex:1;align-self:stretch;justify-content:center}.swal2-container.swal2-grow-row>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container.swal2-grow-column{flex:1;flex-direction:column}.swal2-container.swal2-grow-column.swal2-bottom,.swal2-container.swal2-grow-column.swal2-center,.swal2-container.swal2-grow-column.swal2-top{align-items:center}.swal2-container.swal2-grow-column.swal2-bottom-left,.swal2-container.swal2-grow-column.swal2-bottom-start,.swal2-container.swal2-grow-column.swal2-center-left,.swal2-container.swal2-grow-column.swal2-center-start,.swal2-container.swal2-grow-column.swal2-top-left,.swal2-container.swal2-grow-column.swal2-top-start{align-items:flex-start}.swal2-container.swal2-grow-column.swal2-bottom-end,.swal2-container.swal2-grow-column.swal2-bottom-right,.swal2-container.swal2-grow-column.swal2-center-end,.swal2-container.swal2-grow-column.swal2-center-right,.swal2-container.swal2-grow-column.swal2-top-end,.swal2-container.swal2-grow-column.swal2-top-right{align-items:flex-end}.swal2-container.swal2-grow-column>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container:not(.swal2-top):not(.swal2-top-start):not(.swal2-top-end):not(.swal2-top-left):not(.swal2-top-right):not(.swal2-center-start):not(.swal2-center-end):not(.swal2-center-left):not(.swal2-center-right):not(.swal2-bottom):not(.swal2-bottom-start):not(.swal2-bottom-end):not(.swal2-bottom-left):not(.swal2-bottom-right):not(.swal2-grow-fullscreen)>.swal2-modal{margin:auto}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-container .swal2-modal{margin:0!important}}.swal2-container.swal2-fade{transition:background-color .1s}.swal2-container.swal2-shown{background-color:rgba(0,0,0,.4)}.swal2-popup{display:none;position:relative;box-sizing:border-box;flex-direction:column;justify-content:center;width:32em;max-width:100%;padding:1.25em;border:none;border-radius:.3125em;background:#fff;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-header{display:flex;flex-direction:column;align-items:center}.swal2-title{position:relative;max-width:100%;margin:0 0 .4em;padding:0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;flex-wrap:wrap;align-items:center;justify-content:center;width:100%;margin:1.25em auto 0}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-actions.swal2-loading .swal2-styled.swal2-confirm{box-sizing:border-box;width:2.5em;height:2.5em;margin:.46875em;padding:0;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border:.25em solid transparent;border-radius:100%;border-color:transparent;background-color:transparent!important;color:transparent;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-actions.swal2-loading .swal2-styled.swal2-cancel{margin-right:30px;margin-left:30px}.swal2-actions.swal2-loading :not(.swal2-styled).swal2-confirm::after{content:\"\";display:inline-block;width:15px;height:15px;margin-left:5px;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border:3px solid #999;border-radius:50%;border-right-color:transparent;box-shadow:1px 1px 1px #fff}.swal2-styled{margin:.3125em;padding:.625em 2em;box-shadow:none;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border-radius:.25em;background:initial;background-color:#3085d6;color:#fff;font-size:1.0625em}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#aaa;color:#fff;font-size:1.0625em}.swal2-styled:focus{outline:0;box-shadow:0 0 0 2px #fff,0 0 0 4px rgba(50,100,150,.4)}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1.25em 0 0;padding:1em 0 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-image{max-width:100%;margin:1.25em auto}.swal2-close{position:absolute;z-index:2;top:0;right:0;justify-content:center;width:1.2em;height:1.2em;padding:0;overflow:hidden;transition:color .1s ease-out;border:none;border-radius:0;outline:initial;background:0 0;color:#ccc;font-family:serif;font-size:2.5em;line-height:1.2;cursor:pointer}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-content{z-index:1;justify-content:center;margin:0;padding:0;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em auto}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:100%;transition:border-color .3s,box-shadow .3s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06);color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:0 0 3px #c4e6f5}.swal2-file::-webkit-input-placeholder,.swal2-input::-webkit-input-placeholder,.swal2-textarea::-webkit-input-placeholder{color:#ccc}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::-ms-input-placeholder,.swal2-input::-ms-input-placeholder,.swal2-textarea::-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em auto;background:inherit}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-input[type=number]{max-width:10em}.swal2-file{background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:inherit;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{margin:0 .4em}.swal2-validation-message{display:none;align-items:center;justify-content:center;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:\"!\";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;zoom:normal;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:1.25em auto 1.875em;zoom:normal;border:.25em solid transparent;border-radius:50%;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon::before{display:flex;align-items:center;height:92%;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-warning::before{content:\"!\"}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-info::before{content:\"i\"}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-question::before{content:\"?\"}.swal2-icon.swal2-question.swal2-arabic-question-mark::before{content:\"؟\"}.swal2-icon.swal2-success{border-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;
15052left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.875em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-progress-steps{align-items:center;margin:0 0 1.25em;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;width:2em;height:2em;border-radius:2em;background:#3085d6;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#3085d6}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;width:2.5em;height:.4em;margin:0 -1px;background:#3085d6}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-show.swal2-noanimation{-webkit-animation:none;animation:none}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-hide.swal2-noanimation{-webkit-animation:none;animation:none}.swal2-rtl .swal2-close{right:auto;left:0}.swal2-animate-success-icon .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-animate-success-icon .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-animate-success-icon .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-animate-error-icon{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-animate-error-icon .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}@supports (-ms-accelerator:true){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@-moz-document url-prefix(){.swal2-close:focus{outline:2px solid rgba(50,100,150,.4)}}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}
15052}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.875em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.875em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}
1505250%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-shown{top:auto;right:auto;bottom:auto;left:auto;max-width:calc(100% - .625em * 2);background-color:transparent}body.swal2-no-backdrop .swal2-shown>.swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}body.swal2-no-backdrop .swal2-shown.swal2-top{top:0;left:50%;transform:translateX(-50%)}body.swal2-no-backdrop .swal2-shown.swal2-top-left,body.swal2-no-backdrop .swal2-shown.swal2-top-start{top:0;left:0}body.swal2-no-backdrop .swal2-shown.swal2-top-end,body.swal2-no-backdrop .swal2-shown.swal2-top-right{top:0;right:0}body.swal2-no-backdrop .swal2-shown.swal2-center{top:50%;left:50%;transform:translate(-50%,-50%)}body.swal2-no-backdrop .swal2-shown.swal2-center-left,body.swal2-no-backdrop .swal2-shown.swal2-center-start{top:50%;left:0;transform:translateY(-50%)}body.swal2-no-backdrop .swal2-shown.swal2-center-end,body.swal2-no-backdrop .swal2-shown.swal2-center-right{top:50%;right:0;transform:translateY(-50%)}body.swal2-no-backdrop .swal2-shown.swal2-bottom{bottom:0;left:50%;transform:translateX(-50%)}body.swal2-no-backdrop .swal2-shown.swal2-bottom-left,body.swal2-no-backdrop .swal2-shown.swal2-bottom-start{bottom:0;left:0}body.swal2-no-backdrop .swal2-shown.swal2-bottom-end,body.swal2-no-backdrop .swal2-shown.swal2-bottom-right{right:0;bottom:0}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{background-color:transparent}body.swal2-toast-shown .swal2-container.swal2-shown{background-color:transparent}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}body.swal2-toast-column .swal2-toast{flex-direction:column;align-items:stretch}body.swal2-toast-column .swal2-toast .swal2-actions{flex:1;align-self:stretch;height:2.2em;margin-top:.3125em}body.swal2-toast-column .swal2-toast .swal2-loading{justify-content:center}body.swal2-toast-column .swal2-toast .swal2-input{height:2em;margin:.3125em auto;font-size:1em}body.swal2-toast-column .swal2-toast .swal2-validation-message{font-size:1em}");;
15053/***************************************************************************************************
15054LoadingOverlay - A flexible loading overlay jQuery plugin
15055    Author          : Gaspare Sganga
15056    Version         : 2.1.6
15057    License         : MIT
15058    Documentation   : https://gasparesganga.com/labs/jquery-loading-overlay/
15059***************************************************************************************************/
15060!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof module&&module.exports?e(require("jquery")):e(jQuery)}(function(g,a){"use strict";var o={background:"rgba(255, 255, 255, 0.8)",backgroundClass:"",image:"<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1000 1000'><circle r='80' cx='500' cy='90'/><circle r='80' cx='500' cy='910'/><circle r='80' cx='90' cy='500'/><circle r='80' cx='910' cy='500'/><circle r='80' cx='212' cy='212'/><circle r='80' cx='788' cy='212'/><circle r='80' cx='212' cy='788'/><circle r='80' cx='788' cy='788'/></svg>",imageAnimation:"2000ms rotate_right",imageAutoResize:!0,imageResizeFactor:1,imageColor:"#202020",imageClass:"",imageOrder:1,fontawesome:"",fontawesomeAnimation:"",fontawesomeAutoResize:!0,fontawesomeResizeFactor:1,fontawesomeColor:"#202020",fontawesomeOrder:2,custom:"",customAnimation:"",customAutoResize:!0,customResizeFactor:1,customOrder:3,text:"",textAnimation:"",textAutoResize:!0,textResizeFactor:.5,textColor:"#202020",textClass:"",textOrder:4,progress:!1,progressAutoResize:!0,progressResizeFactor:.25,progressColor:"#a0a0a0",progressClass:"",progressOrder:5,progressFixedPosition:"",progressSpeed:200,progressMin:0,progressMax:100,size:50,maxSize:120,minSize:20,direction:"column",fade:!0,resizeInterval:50,zIndex:2147483647},c={overlay:{"box-sizing":"border-box",position:"relative",display:"flex","flex-wrap":"nowrap","align-items":"center","justify-content":"space-around"},element:{"box-sizing":"border-box",overflow:"visible",flex:"0 0 auto",display:"flex","justify-content":"center","align-items":"center"},element_svg:{width:"50%",height:"50%"},progress_fixed:{position:"absolute",left:"0",width:"100%"},progress_wrapper:{position:"absolute",top:"0",left:"0",width:"100%",height:"100%"},progress_bar:{position:"absolute",left:"0"}},n={count:0,container:a,settings:a,wholePage:a,resizeIntervalId:a,text:a,progress:a},s={animations:["rotate_right","rotate_left","fadein","pulse"],progressPosition:["top","bottom"]},d={animations:{name:"rotate_right",time:"2000ms"},fade:[400,200]};function r(e,s){e=g(e),s.size=b(s.size),s.maxSize=parseInt(s.maxSize,10)||0,s.minSize=parseInt(s.minSize,10)||0,s.resizeInterval=parseInt(s.resizeInterval,10)||0;var t=u(e),a=v(e);if(!1===a){if((a=g.extend({},n)).container=e,a.wholePage=e.is("body"),t=g("<div>",{class:"loadingoverlay"}).css(c.overlay).css("flex-direction","row"===s.direction.toLowerCase()?"row":"column"),s.backgroundClass?t.addClass(s.backgroundClass):t.css("background",s.background),a.wholePage&&t.css({position:"fixed",top:0,left:0,width:"100%",height:"100%"}),void 0!==s.zIndex&&t.css("z-index",s.zIndex),s.image){g.isArray(s.imageColor)?0===s.imageColor.length?s.imageColor=!1:1===s.imageColor.length?s.imageColor={fill:s.imageColor[0]}:s.imageColor={fill:s.imageColor[0],stroke:s.imageColor[1]}:s.imageColor&&(s.imageColor={fill:s.imageColor});var o=x(t,s.imageOrder,s.imageAutoResize,s.imageResizeFactor,s.imageAnimation);"<svg"===s.image.slice(0,4).toLowerCase()&&"</svg>"===s.image.slice(-6).toLowerCase()?(o.append(s.image),o.children().css(c.element_svg),!s.imageClass&&s.imageColor&&o.find("*").css(s.imageColor)):".svg"===s.image.slice(-4).toLowerCase()||"data:image/svg"===s.image.slice(0,14).toLowerCase()?g.ajax({url:s.image,type:"GET",dataType:"html",global:!1}).done(function(e){o.html(e),o.children().css(c.element_svg),!s.imageClass&&s.imageColor&&o.find("*").css(s.imageColor)}):o.css({"background-image":"url("+s.image+")","background-position":"center","background-repeat":"no-repeat","background-size":"cover"}),s.imageClass&&o.addClass(s.imageClass)}if(s.fontawesome){o=x(t,s.fontawesomeOrder,s.fontawesomeAutoResize,s.fontawesomeResizeFactor,s.fontawesomeAnimation).addClass("loadingoverlay_fa");g("<div>",{class:s.fontawesome}).appendTo(o),s.fontawesomeColor&&o.css("color",s.fontawesomeColor)}if(s.custom)o=x(t,s.customOrder,s.customAutoResize,s.customResizeFactor,s.customAnimation).append(s.custom);
vendor: 7,751 bytes, lines 15060-15067
15060if(s.text&&(a.text=x(t,s.textOrder,s.textAutoResize,s.textResizeFactor,s.textAnimation).addClass("loadingoverlay_text").text(s.text),s.textClass?a.text.addClass(s.textClass):s.textColor&&a.text.css("color",s.textColor)),s.progress){o=x(t,s.progressOrder,s.progressAutoResize,s.progressResizeFactor,!1).addClass("loadingoverlay_progress");var r=g("<div>").css(c.progress_wrapper).appendTo(o);a.progress={bar:g("<div>").css(c.progress_bar).appendTo(r),fixed:!1,margin:0,min:parseFloat(s.progressMin),max:parseFloat(s.progressMax),speed:parseInt(s.progressSpeed,10)};var i=(s.progressFixedPosition+"").replace(/\s\s+/g," ").toLowerCase().split(" ");2===i.length&&w(i[0])?(a.progress.fixed=i[0],a.progress.margin=b(i[1])):2===i.length&&w(i[1])?(a.progress.fixed=i[1],a.progress.margin=b(i[0])):1===i.length&&w(i[0])&&(a.progress.fixed=i[0],a.progress.margin=0),"top"===a.progress.fixed?o.css(c.progress_fixed).css("top",a.progress.margin?a.progress.margin.value+(a.progress.margin.fixed?a.progress.margin.units:"%"):0):"bottom"===a.progress.fixed&&o.css(c.progress_fixed).css("top","auto"),s.progressClass?a.progress.bar.addClass(s.progressClass):s.progressColor&&a.progress.bar.css("background",s.progressColor)}s.fade?!0===s.fade?s.fade=d.fade:"string"==typeof s.fade||"number"==typeof s.fade?s.fade=[s.fade,s.fade]:g.isArray(s.fade)&&s.fade.length<2&&(s.fade=[s.fade[0],s.fade[0]]):s.fade=[0,0],s.fade=[parseInt(s.fade[0],10),parseInt(s.fade[1],10)],a.settings=s,t.data("loadingoverlay_data",a),e.data("loadingoverlay",t),t.fadeTo(0,.01).appendTo("body"),p(e,!0),0<s.resizeInterval&&(a.resizeIntervalId=setInterval(function(){p(e,!1)},s.resizeInterval)),t.fadeTo(s.fade[0],1)}a.count++}function i(e,s){var t=u(e=g(e)),a=v(e);!1!==a&&(a.count--,(s||a.count<=0)&&t.animate({opacity:0},a.settings.fade[1],function(){a.resizeIntervalId&&clearInterval(a.resizeIntervalId),g(this).remove(),e.removeData("loadingoverlay")}))}function l(e){p(g(e),!0)}function m(e,s){var t=v(e=g(e));!1!==t&&t.text&&(!1===s?t.text.hide():t.text.show().text(s))}function f(e,s){var t=v(e=g(e));if(!1!==t&&t.progress)if(!1===s)t.progress.bar.hide();else{var a=100*((parseFloat(s)||0)-t.progress.min)/(t.progress.max-t.progress.min);a<0&&(a=0),100<a&&(a=100),t.progress.bar.show().animate({width:a+"%"},t.progress.speed)}}function p(e,t){var s=u(e),a=v(e);if(!1!==a){if(!a.wholePage){var o="fixed"===e.css("position"),r=o?e[0].getBoundingClientRect():e.offset();s.css({position:o?"fixed":"absolute",top:r.top+parseInt(e.css("border-top-width"),10),left:r.left+parseInt(e.css("border-left-width"),10),width:e.innerWidth(),height:e.innerHeight()})}if(a.settings.size){var i=a.wholePage?g(window):e,n=a.settings.size.value;a.settings.size.fixed||(n=Math.min(i.innerWidth(),i.innerHeight())*n/100,a.settings.maxSize&&n>a.settings.maxSize&&(n=a.settings.maxSize),a.settings.minSize&&n<a.settings.minSize&&(n=a.settings.minSize)),s.children(".loadingoverlay_element").each(function(){var e=g(this);if(t||e.data("loadingoverlay_autoresize")){var s=e.data("loadingoverlay_resizefactor");e.hasClass("loadingoverlay_fa")||e.hasClass("loadingoverlay_text")?e.css("font-size",n*s+a.settings.size.units):e.hasClass("loadingoverlay_progress")?(a.progress.bar.css("height",n*s+a.settings.size.units),a.progress.fixed?"bottom"===a.progress.fixed&&e.css("bottom",a.progress.margin?a.progress.margin.value+(a.progress.margin.fixed?a.progress.margin.units:"%"):0).css("bottom","+="+n*s+a.settings.size.units):a.progress.bar.css("top",e.position().top).css("top","-="+n*s*.5+a.settings.size.units)):e.css({width:n*s+a.settings.size.units,height:n*s+a.settings.size.units})}})}}}function u(e){return e.data("loadingoverlay")}function v(e){var s=u(e),t=void 0===s?a:s.data("loadingoverlay_data");return void 0===t?(g(".loadingoverlay").each(function(){var e=g(this),s=e.data("loadingoverlay_data");document.body.contains(s.container[0])||(s.resizeIntervalId&&clearInterval(s.resizeIntervalId),e.remove())}),!1):(s.toggle(e.is(":visible")),t)}function x(e,s,t,a,o){var r=g("<div>",{class:"loadingoverlay_element",css:{order:s}}).css(c.element).data({loadingoverlay_autoresize:t,loadingoverlay_resizefactor:a}).appendTo(e);if(!0===o&&(o=d.animations.time+" "+d.animations.name),"string"==typeof o){var i,n,l=o.replace(/\s\s+/g," ").toLowerCase().split(" ");2===l.length&&h(l[0])&&y(l[1])?(i=l[1],n=l[0]):2===l.length&&h(l[1])&&y(l[0])?(i=l[0],n=l[1]):1===l.length&&h(l[0])?(i=d.animations.name,n=l[0]):1===l.length&&y(l[0])&&(i=l[0],n=d.animations.time),r.css({"animation-name":"loadingoverlay_animation__"+i,"animation-duration":n,"animation-timing-function":"linear","animation-iteration-count":"infinite"})}return r}function h(e){return!isNaN(parseFloat(e))&&("s"===e.slice(-1)||"ms"===e.slice(-2))}function y(e){return-1<s.animations.indexOf(e)}function w(e){return-1<s.progressPosition.indexOf(e)}function b(e){return!(!e||e<0)&&("string"==typeof e&&-1<["vmin","vmax"].indexOf(e.slice(-4))?{fixed:!0,units:e.slice(-4),value:e.slice(0,-4)}:"string"==typeof e&&-1<["rem"].indexOf(e.slice(-3))?{fixed:!0,units:e.slice(-3),value:e.slice(0,-3)}:"string"==typeof e&&-1<["px","em","cm","mm","in","pt","pc","vh","vw"].indexOf(e.slice(-2))?{fixed:!0,units:e.slice(-2),value:e.slice(0,-2)}:{fixed:!1,units:"px",value:parseFloat(e)})}g.LoadingOverlaySetup=function(e){g.extend(!0,o,e)},g.LoadingOverlay=function(e,s){switch(e.toLowerCase()){case"show":r("body",g.extend(!0,{},o,s));break;case"hide":i("body",s);break;case"resize":l("body");break;case"text":m("body",s);break;case"progress":f("body",s)}},g.fn.LoadingOverlay=function(e,s){switch(e.toLowerCase()){case"show":var t=g.extend(!0,{},o,s);return this.each(function(){r(this,t)});case"hide":return this.each(function(){i(this,s)});case"resize":return this.each(function(){l(this)});case"text":return this.each(function(){m(this,s)});case"progress":return this.each(function(){f(this,s)})}},g(function(){g("head").append(["<style>","@-webkit-keyframes loadingoverlay_animation__rotate_right {","to {","-webkit-transform : rotate(360deg);","transform : rotate(360deg);","}","}","@keyframes loadingoverlay_animation__rotate_right {","to {","-webkit-transform : rotate(360deg);","transform : rotate(360deg);","}","}","@-webkit-keyframes loadingoverlay_animation__rotate_left {","to {","-webkit-transform : rotate(-360deg);","transform : rotate(-360deg);","}","}","@keyframes loadingoverlay_animation__rotate_left {","to {","-webkit-transform : rotate(-360deg);","transform : rotate(-360deg);","}","}","@-webkit-keyframes loadingoverlay_animation__fadein {","0% {","opacity   : 0;","-webkit-transform : scale(0.1, 0.1);","transform : scale(0.1, 0.1);","}","50% {","opacity   : 1;","}","100% {","opacity   : 0;","-webkit-transform : scale(1, 1);","transform : scale(1, 1);","}","}","@keyframes loadingoverlay_animation__fadein {","0% {","opacity   : 0;","-webkit-transform : scale(0.1, 0.1);","transform : scale(0.1, 0.1);","}","50% {","opacity   : 1;","}","100% {","opacity   : 0;","-webkit-transform : scale(1, 1);","transform : scale(1, 1);","}","}","@-webkit-keyframes loadingoverlay_animation__pulse {","0% {","-webkit-transform : scale(0, 0);","transform : scale(0, 0);","}","50% {","-webkit-transform : scale(1, 1);","transform : scale(1, 1);","}","100% {","-webkit-transform : scale(0, 0);","transform : scale(0, 0);","}","}","@keyframes loadingoverlay_animation__pulse {","0% {","-webkit-transform : scale(0, 0);","transform : scale(0, 0);","}","50% {","-webkit-transform : scale(1, 1);","transform : scale(1, 1);","}","100% {","-webkit-transform : scale(0, 0);","transform : scale(0, 0);","}","}","</style>"].join(" "))})});;
15061/*
15062* jQuery File Download Plugin v1.4.5
15063*
15064* http://www.johnculviner.com
15065*
15066* Copyright (c) 2013 - John Culviner
15067*
15068* Licensed under the MIT license:
15069*   http://www.opensource.org/licenses/mit-license.php
15070*
15071* !!!!NOTE!!!!
15072* You must also write a cookie in conjunction with using this plugin in the server's response headers containing the file download:
15073* Set-Cookie: fileDownload=true; path=/"
15074* !!!!NOTE!!!!
15075*/
15076
15077(function($, window){
15078	// i'll just put them here to get evaluated on script load
15079	var htmlSpecialCharsRegEx = /[<>&\r\n"']/gm;
15080	var htmlSpecialCharsPlaceHolders = {
15081				'<': 'lt;',
15082				'>': 'gt;',
15083				'&': 'amp;',
15084				'\r': "#13;",
15085				'\n': "#10;",
15086				'"': 'quot;',
15087				"'": '#39;' /*single quotes just to be safe, IE8 doesn't support &apos;, so use &#39; instead */
15088	};
15089
15090$.extend({
15091    //
15092    //$.fileDownload('/path/to/url/', options)
15093    //  see directly below for possible 'options'
15094    fileDownload: function (fileUrl, options) {
15095
15096        //provide some reasonable defaults to any unspecified options below
15097        var settings = $.extend({
15098
15099            //
15100            //Requires jQuery UI: provide a message to display to the user when the file download is being prepared before the browser's dialog appears
15101            //
15102            preparingMessageHtml: null,
15103
15104            //
15105            //Requires jQuery UI: provide a message to display to the user when a file download fails
15106            //
15107            failMessageHtml: null,
15108
15109            //
15110            //the stock android browser straight up doesn't support file downloads initiated by a non GET: http://code.google.com/p/android/issues/detail?id=1780
15111            //specify a message here to display if a user tries with an android browser
15112            //if jQuery UI is installed this will be a dialog, otherwise it will be an alert
15113            //Set to null to disable the message and attempt to download anyway
15114            //
15115            androidPostUnsupportedMessageHtml: "Unfortunately your Android browser doesn't support this type of file download. Please try again with a different browser.",
15116
15117            //
15118            //Requires jQuery UI: options to pass into jQuery UI Dialog
15119            //
15120            dialogOptions: { modal: true },
15121
15122            //
15123            //a function to call while the dowload is being prepared before the browser's dialog appears
15124            //Args:
15125            //  url - the original url attempted
15126            //
15127            prepareCallback: function (url) { },
15128
15129            //
15130            //a function to call after a file download successfully completed
15131            //Args:
15132            //  url - the original url attempted
15133            //
15134            successCallback: function (url) { },
15135
15136            //
15137            //a function to call after a file download request was canceled
15138            //Args:
15139            //  url - the original url attempted
15140            //
15141            abortCallback: function (url) { },
15142
15143            //
15144            //a function to call after a file download failed
15145            //Args:
15146            //  responseHtml    - the html that came back in response to the file download. this won't necessarily come back depending on the browser.
15147            //                      in less than IE9 a cross domain error occurs because 500+ errors cause a cross domain issue due to IE subbing out the
15148            //                      server's error message with a "helpful" IE built in message
15149            //  url             - the original url attempted
15150            //  error           - original error cautch from exception
15151            //
15152            failCallback: function (responseHtml, url, error) { },
15153
15154            //
15155            // the HTTP method to use. Defaults to "GET".
15156            //
15157            httpMethod: "GET",
15158
15159            //
15160            // if specified will perform a "httpMethod" request to the specified 'fileUrl' using the specified data.
15161            // data must be an object (which will be $.param serialized) or already a key=value param string
15162            //
15163            data: null,
15164
15165            //
15166            //a period in milliseconds to poll to determine if a successful file download has occured or not
15167            //
15168            checkInterval: 100,
15169
15170            //
15171            //the cookie name to indicate if a file download has occured
15172            //
15173            cookieName: "fileDownload",
15174
15175            //
15176            //the cookie name to indicate if a file download has occured in Server Back
15177            //
15178            cookieNameResult: "fileDownloadDataResult",
15179
15180            //
15181            //the cookie value for the above name to indicate that a file download has occured
15182            //
15183            cookieValue: "true",
15184
15185            //
15186            //the cookie path for above name value pair
15187            //
15188            cookiePath: "/",
15189
15190            //
15191            //if specified it will be used when attempting to clear the above name value pair
15192            //useful for when downloads are being served on a subdomain (e.g. downloads.example.com)
15193            //
15194            cookieDomain: null,
15195
15196            //
15197            //the title for the popup second window as a download is processing in the case of a mobile browser
15198            //
15199            popupWindowTitle: "Initiating file download...",
15200
15201            //
15202            //Functionality to encode HTML entities for a POST, need this if data is an object with properties whose values contains strings with quotation marks.
15203            //HTML entity encoding is done by replacing all &,<,>,',",\r,\n characters.
15204            //Note that some browsers will POST the string htmlentity-encoded whilst others will decode it before POSTing.
15205            //It is recommended that on the server, htmlentity decoding is done irrespective.
15206            //
15207            encodeHTMLEntities: true
15208
15209        }, options);
15210
15211        var deferred = new $.Deferred();
15212
15213        //Setup mobile browser detection: Partial credit: http://detectmobilebrowser.com/
15214        var userAgent = (navigator.userAgent || navigator.vendor || window.opera).toLowerCase();
15215
15216        var isIos;                  //has full support of features in iOS 4.0+, uses a new window to accomplish this.
15217        var isAndroid;              //has full support of GET features in 4.0+ by using a new window. Non-GET is completely unsupported by the browser. See above for specifying a message.
15218        var isOtherMobileBrowser;   //there is no way to reliably guess here so all other mobile devices will GET and POST to the current window.
15219
15220        if (/ip(ad|hone|od)/.test(userAgent)) {
15221
15222            isIos = true;
15223
15224        } else if (userAgent.indexOf('android') !== -1) {
15225
15226            isAndroid = true;
15227
15228        } else {
15229
15230            isOtherMobileBrowser = /avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|playbook|silk|iemobile|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(userAgent) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|
15230sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-/i.test(userAgent.substr(0, 4));
15231
15232        }
15233
15234        var httpMethodUpper = settings.httpMethod.toUpperCase();
15235
15236        if (isAndroid && httpMethodUpper !== "GET" && settings.androidPostUnsupportedMessageHtml) {
15237            //the stock android browser straight up doesn't support file downloads initiated by non GET requests: http://code.google.com/p/android/issues/detail?id=1780
15238
15239            if ($().dialog) {
15240                $("<div>").html(settings.androidPostUnsupportedMessageHtml).dialog(settings.dialogOptions);
15241            } else {
15242                alert(settings.androidPostUnsupportedMessageHtml);
15243            }
15244
15245            return deferred.reject();
15246        }
15247
15248        var $preparingDialog = null;
15249
15250        var internalCallbacks = {
15251
15252            onPrepare: function (url) {
15253
15254                //wire up a jquery dialog to display the preparing message if specified
15255                if (settings.preparingMessageHtml) {
15256
15257                    $preparingDialog = $("<div>").html(settings.preparingMessageHtml).dialog(settings.dialogOptions);
15258
15259                } else if (settings.prepareCallback) {
15260
15261                    settings.prepareCallback(url);
15262
15263                }
15264
15265            },
15266
15267            onSuccess: function (url, data) {
15268
15269                //remove the perparing message if it was specified
15270                if ($preparingDialog) {
15271                    $preparingDialog.dialog('close');
15272                }
15273
15274                settings.successCallback(url, data);
15275
15276                deferred.resolve(url);
15277            },
15278
15279            onAbort: function (url) {
15280
15281                //remove the perparing message if it was specified
15282                if ($preparingDialog) {
15283                    $preparingDialog.dialog('close');
15284                };
15285
15286                settings.abortCallback(url);
15287
15288                deferred.reject(url);
15289            },
15290
15291            onFail: function (responseHtml, url, error) {
15292
15293                //remove the perparing message if it was specified
15294                if ($preparingDialog) {
15295                    $preparingDialog.dialog('close');
15296                }
15297
15298                //wire up a jquery dialog to display the fail message if specified
15299                if (settings.failMessageHtml) {
15300                    $("<div>").html(settings.failMessageHtml).dialog(settings.dialogOptions);
15301                }
15302
15303                settings.failCallback(responseHtml, url, error);
15304
15305                deferred.reject(responseHtml, url);
15306            }
15307        };
15308
15309        internalCallbacks.onPrepare(fileUrl);
15310
15311        //make settings.data a param string if it exists and isn't already
15312        if (settings.data !== null && typeof settings.data !== "string") {
15313            settings.data = $.param(settings.data);
15314        }
15315
15316
15317        var $iframe,
15318            downloadWindow,
15319            formDoc,
15320            $form;
15321
15322        if (httpMethodUpper === "GET") {
15323
15324            if (settings.data !== null) {
15325                //need to merge any fileUrl params with the data object
15326
15327                var qsStart = fileUrl.indexOf('?');
15328
15329                if (qsStart !== -1) {
15330                    //we have a querystring in the url
15331
15332                    if (fileUrl.substring(fileUrl.length - 1) !== "&") {
15333                        fileUrl = fileUrl + "&";
15334                    }
15335                } else {
15336
15337                    fileUrl = fileUrl + "?";
15338                }
15339
15340                fileUrl = fileUrl + settings.data;
15341            }
15342
15343            if (isIos || isAndroid) {
15344
15345                downloadWindow = window.open(fileUrl);
15346                downloadWindow.document.title = settings.popupWindowTitle;
15347                window.focus();
15348
15349            } else if (isOtherMobileBrowser) {
15350
15351                window.location(fileUrl);
15352
15353            } else {
15354
15355                //create a temporary iframe that is used to request the fileUrl as a GET request
15356		$iframe = $("<iframe style='display: none' src='"+fileUrl+"'></iframe>").appendTo("body");
15357            }
15358
15359        } else {
15360
15361            var formInnerHtml = "";
15362
15363            if (settings.data !== null) {
15364
15365                $.each(settings.data.replace(/\+/g, ' ').split("&"), function () {
15366
15367                    var kvp = this.split("=");
15368
15369                    //Issue: When value contains sign '=' then the kvp array does have more than 2 items. We have to join value back
15370                    var k = kvp[0];
15371                    kvp.shift();
15372                    var v = kvp.join("=");
15373                    kvp = [k, v];
15374
15375                    var key = settings.encodeHTMLEntities ? htmlSpecialCharsEntityEncode(decodeURIComponent(kvp[0])) : decodeURIComponent(kvp[0]);
15376                    if (key) {
15377                        var value = settings.encodeHTMLEntities ? htmlSpecialCharsEntityEncode(decodeURIComponent(kvp[1])) : decodeURIComponent(kvp[1]);
15378                    formInnerHtml += '<input type="hidden" name="' + key + '" value="' + value + '" />';
15379                    }
15380                });
15381            }
15382
15383            if (isOtherMobileBrowser) {
15384
15385                $form = $("<form>").appendTo("body");
15386                $form.hide()
15387                    .prop('method', settings.httpMethod)
15388                    .prop('action', fileUrl)
15389                    .html(formInnerHtml);
15390
15391            } else {
15392
15393                if (isIos) {
15394
15395                    downloadWindow = window.open("about:blank");
15396                    downloadWindow.document.title = settings.popupWindowTitle;
15397                    formDoc = downloadWindow.document;
15398                    window.focus();
15399
15400                } else {
15401
15402                    $iframe = $("<iframe style='display: none' src='about:blank'></iframe>").appendTo("body");
15403                    formDoc = getiframeDocument($iframe);
15404                }
15405
15406                formDoc.write("<html><head></head><body><form method='" + settings.httpMethod + "' action='" + fileUrl + "'>" + formInnerHtml + "</form>" + settings.popupWindowTitle + "</body></html>");
15407                $form = $(formDoc).find('form');
15408            }
15409
15410            $form.submit();
15411        }
15412
15413
15414        //check if the file download has completed every checkInterval ms
15415        setTimeout(checkFileDownloadComplete, settings.checkInterval);
15416
15417
15418        function checkFileDownloadComplete() {
15419            //has the cookie been written due to a file download occuring?
15420
15421            var cookieValue = settings.cookieValue;
15422            if(typeof cookieValue == 'string') {
15423                cookieValue = cookieValue.toLowerCase();
15424            }
15425
15426            var lowerCaseCookie = settings.cookieName.toLowerCase() + "=" + cookieValue;
15427
15428            if (document.cookie.toLowerCase().indexOf(lowerCaseCookie) > -1) {
15429
15430                let dataCallBack = getCookieValue(settings.cookieNameResult);
15431
15432                //execute specified callback
15433                internalCallbacks.onSuccess(fileUrl, dataCallBack);
15434
15435                //remove cookie
15436                var cookieData = settings.cookieName + "=; path=" + settings.cookiePath + "; expires=" + new Date(0).toUTCString() + ";";
15437                if (settings.cookieDomain) cookieData += " domain=" + settings.cookieDomain + ";";
15438                document.cookie = cookieData;
15439
15440                var cookieData = settings.cookieNameResult + "=; path=" + settings.cookiePath + "; expires=" + new Date(0).toUTCString() + ";";
15441                if (settings.cookieDomain) cookieData += " domain=" + settings.cookieDomain + ";";
15442                document.cookie = cookieData;
15443
15444               
15445
15446                //remove iframe
15447                cleanUp(false);
15448
15449                return;
15450            }
15451
15452            //has an error occured?
15453            //if neither containers exist below then the file download is occuring on the current window
15454            if (downloadWindow || $iframe) {
15455
15456                //has an error occured?
15457                try {
15458
15459                    var formDoc = downloadWindow ? downloadWindow.document : getiframeDocument($iframe);
15460
15461                    if (formDoc && formDoc.body !== null && formDoc.body.innerHTML.length) {
15462
15463                        var isFailure = true;
15464
15465                        if ($form && $form.length) {
15466                            var $contents = $(formDoc.body).contents().first();
15467
15468                            try {
15469                                if ($contents.length && $contents[0] === $form[0]) {
15470                                    isFailure = false;
15471                                }
15472                            } catch (e) {
15473                                if (e && e.number == -2146828218) {
15474                                    // IE 8-10 throw a permission denied after the form reloads on the "$contents[0] === $form[0]" comparison
15475                                    isFailure = true;
15476                                } else {
15477                                    throw e;
15478                                }
15479                            }
15480                        }
15481
15482                        if (isFailure) {
15483                            // IE 8-10 don't always have the full content available right away, they need a litle bit to finish
15484                            setTimeout(function () {
15485                                internalCallbacks.onFail(formDoc.body.innerHTML, fileUrl);
15486                                cleanUp(true);
15487                            }, 100);
15488
15489                            return;
15490                        }
15491                    }
15492                }
15493                catch (err) {
15494
15495                    //500 error less than IE9
15496                    internalCallbacks.onFail('', fileUrl, err);
15497
15498                    cleanUp(true);
15499
15500                    return;
15501                }
15502            }
15503
15504
15505            //keep checking...
15506            setTimeout(checkFileDownloadComplete, settings.checkInterval);
15507        }
15508
15509        //gets an iframes document in a cross browser compatible manner
15510        function getiframeDocument($iframe) {
15511            var iframeDoc = $iframe[0].contentWindow || $iframe[0].contentDocument;
15512            if (iframeDoc.document) {
15513                iframeDoc = iframeDoc.document;
15514            }
15515            return iframeDoc;
15516        }
15517
15518        function cleanUp(isFailure) {
15519
15520            setTimeout(function() {
15521
15522                if (downloadWindow) {
15523
15524                    if (isAndroid) {
15525                        downloadWindow.close();
15526                    }
15527
15528                    if (isIos) {
15529                        if (downloadWindow.focus) {
15530                            downloadWindow.focus(); //ios safari bug doesn't allow a window to be closed unless it is focused
15531                            if (isFailure) {
15532                                downloadWindow.close();
15533                            }
15534                        }
15535                    }
15536                }
15537
15538                //iframe cleanup appears to randomly cause the download to fail
15539                //not doing it seems better than failure...
15540                //if ($iframe) {
15541                //    $iframe.remove();
15542                //}
15543
15544            }, 0);
15545        }
15546
15547
15548        function htmlSpecialCharsEntityEncode(str) {
15549            return str.replace(htmlSpecialCharsRegEx, function(match) {
15550                return '&' + htmlSpecialCharsPlaceHolders[match];
15551        	});
15552        }
15553        var promise = deferred.promise();
15554        promise.abort = function() {
15555            cleanUp();
15556            $iframe.attr('src', '').html('');
15557            internalCallbacks.onAbort(fileUrl);
15558        };
15559        return promise;
15560
15561        function getCookieValue(name) {
15562            const value = `; ${document.cookie}`;
15563            const parts = value.split(`; ${name}=`);
15564            if (parts.length === 2) return parts.pop().split(';').shift();
15565        }
15566    }
15567});
15568
15569})(jQuery, this || window);
15570;
15571/*! jquery.cookie v1.4.1 | MIT */
15572!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?a(require("jquery")):a(jQuery)}(function(a){function b(a){return h.raw?a:encodeURIComponent(a)}function c(a){return h.raw?a:decodeURIComponent(a)}function d(a){return b(h.json?JSON.stringify(a):String(a))}function e(a){0===a.indexOf('"')&&(a=a.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return a=decodeURIComponent(a.replace(g," ")),h.json?JSON.parse(a):a}catch(b){}}function f(b,c){var d=h.raw?b:e(b);return a.isFunction(c)?c(d):d}var g=/\+/g,h=a.cookie=function(e,g,i){if(void 0!==g&&!a.isFunction(g)){if(i=a.extend({},h.defaults,i),"number"==typeof i.expires){var j=i.expires,k=i.expires=new Date;k.setTime(+k+864e5*j)}return document.cookie=[b(e),"=",d(g),i.expires?"; expires="+i.expires.toUTCString():"",i.path?"; path="+i.path:"",i.domain?"; domain="+i.domain:"",i.secure?"; secure":""].join("")}for(var l=e?void 0:{},m=document.cookie?document.cookie.split("; "):[],n=0,o=m.length;o>n;n++){var p=m[n].split("="),q=c(p.shift()),r=p.join("=");if(e&&e===q){l=f(r,g);break}e||void 0===(r=f(r))||(l[q]=r)}return l};h.defaults={},a.removeCookie=function(b,c){return void 0===a.cookie(b)?!1:(a.cookie(b,"",a.extend({},c,{expires:-1})),!a.cookie(b))}});;
15573/**
15574 * 
15575 */
15576//toastr.options.timeOut = 4000;
15577//toastr.options.closeButton = true;
15578//toastr.options.positionClass = "toast-bottom-left";
15579
15580var configCongViec = {
15581    urlCheckMHDNextStep: '/MauHoaDonDeXuat/CheckMHDNextStep',
15582    urlFilterMauHoaDon: '/MauHoaDonDeXuat/FilterMauHoaDon',
15583    urlTaoYeuCauSuaMau: '/MauHoaDonDeXuat/TaoYeuCauSuaMau',
15584    urlTaoYeuCauThietKeMoi: '/MauHoaDonDeXuat/TaoYeuCauThietKeMoi',
15585    urlLuuMauHoaDon: '/MauHoaDonDeXuat/luuMau',
15586    urlSaveAndSendEmail: '/MauHoaDonDeXuat/saveAndSendEmail',
15587    urlViewSuaMau: '/MauHoaDonDeXuat/_ViewSuaMauHoaDon',
15588    urlViewMauDaChinhSua: '/MauHoaDonDeXuat/ViewMauDaChinhSua',
15589    urlQuanLyCongViec: '/MauHoaDonDeXuat',
15590    urlGetXlstData: "/MauHoaDonDeXuat/getXSLTData",
15591    urlGenInvoiceInfo: "/MauHoaDonDeXuat/GenInvoiceInfo",
15592    urlDownloadMauDaSuaPDF: '/MauHoaDonDeXuat/DownloadMauDaSuaPDF',
15593    urlDownloadMauDaSuaImage: '/MauHoaDonDeXuat/DownloadMauDaSuaImage',
15594    urlGetKyHieuTienTo: '/MauHoaDonDeXuat/GetKyHieuTienTo',
15595    isKhachHang: true,
15596    pageSize: 3
15597}
15598
15599var notifyObj = {
15600    success: function (success) {
15601        $.notify({ message: success }, { type: 'success' });
15602    },
15603    danger: function (danger) {
15604        $.notify({ message: danger }, { type: 'danger' });
15605    },
15606    info: function (info) {
15607        $.notify({ message: info }, { type: 'info' });
15608    },
15609    warning: function (warning) {
15610        $.notify({ message: warning }, { type: 'warning' });
15611    }
15612}
15613function callApi(method, urls, formData, async = true) {
15614    return new Promise((resolve, reject) => {
15615        $.ajax({
15616            type: method,
15617            url: urls,
15618            contentType: false,
15619            processData: false,
15620            async: async,
15621            data: formData,
15622            success: function (data) {
15623                loading(false);
15624                resolve(data);
15625            },
15626            error: function (err) {
15627
15628                loading(false);
15629                reject(err);
15630            }
15631            , fail: function (err) {
15632                loading(false);
15633            }
15634        });
15635    });
15636}
15637
15638var IsThongTu = {
15639    TT32: 0,
15640    TT68: 1,
15641    TT92: 2,
15642    TT78: 3,
15643    ND70: 5
15644}
15645
15646
15647function confirmDialog(message) {
15648    return new Promise((resolve, reject) => {
15649        BootstrapDialog.show({
15650            title: 'Thông báo',
15651            message: message,
15652            closable: true,
15653            closeByBackdrop: false,
15654            closeByKeyboard: true,
15655            buttons: [{
15656                label: '<i class="icon-thuchien"></i> Thực hiện',
15657                cssClass: 'btn-primary btnfixwidth',
15658                data: {
15659                    js: 'btn-confirm'
15660                },
15661                action: function () {
15662                    $('.bootstrap-dialog-close-button').trigger('click');
15663                    resolve();
15664                }
15665            }, {
15666                icon: 'icon-close', label: 'Đóng',
15667                cssClass: 'btn-primary btnfixwidth btn-white',
15668                data: {
15669                    js: 'btn-confirm'
15670                },
15671                action: function () {
15672                    $('.bootstrap-dialog-close-button').trigger('click');
15673                    reject();
15674                }
15675            }]
15676        });
15677    });
15678}
15679
15680function alertDialog(message, type = "info") {
15681    Swal.fire({
15682        title: 'Thông báo',
15683        html: '<div class="swal2-icon swal2-' + type + ' swal2-animate-warning-icon" style="display: flex;"></div>' +
15684            '<div class="notify-text">' + message + '</div>',
15685        type: type,
15686        showCancelButton: true,
15687        showConfirmButton: false,
15688        cancelButtonText: '<i class="icon-close"></i> Đóng',
15689        customClass: {
15690            container: 'lbl-new notify-info',
15691            cancelButton: 'btn btnfixwidth btn-white',
15692        }
15693    }).then((result) => {
15694        if (result.value) {
15695            Swal.close();
15696        } else if (result.dismiss === Swal.DismissReason.cancel) {
15697            Swal.close();
15698        }
15699    });
15700}
15701
15702function readXmlFile(file) {
15703    if (file.name.indexOf('.xslt') >= 0 || file.name.indexOf('.xsl') >= 0) {
15704        return new Promise((resolve, reject) => {
15705            var fileReader = new FileReader();
15706            fileReader.readAsText(file);
15707            fileReader.onload = () => resolve(fileReader.result);
15708            fileReader.onerror = error => reject(error);
15709        });
15710    }
15711    else {
15712        alert('File không hợp lệ. Vui lòng chọn đúng định dạng file!');
15713        return new Promise(resolve => {
15714            resolve("File không hợp lệ");
15715        });
15716    }
15717}
15718function loading(status) {
15719    if (status) {
15720        if ($(".loading-container").length === 0) {
15721            $('html').append("<div class='loading-container'><div class='loading'><div></div>");
15722        }
15723    }
15724    else {
15725        $(".loading-container").remove();
15726    }
15727}
15728
15729function getUrlParameterByName(name) {
15730    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
15731    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
15732        results = regex.exec(location.search);
15733    return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
15734}
15735
15736function GetObjectSearch() {
15737    var obj = {
15738        dateFrom: $("#txtDateFrom").val().split("/").reverse().join("-"),
15739        dateTo: $("#txtDateTo").val().split("/").reverse().join("-"),
15740        region: $("input[name=groupRegion]:checked").val()
15741    };
15742    var d = new Date();
15743    if (obj.dateFrom === '') obj.dateFrom = (d.getFullYear() + "/" + (d.getMonth() + 1) + "/1");
15744    if (obj.dateTo === '') obj.dateTo = (d.getFullYear() + "/" + (d.getMonth() + 1) + "/" + d.getDate());
15745    obj.dateFrom += " 00:00:00";
15746    obj.dateTo += " 23:59:00";
15747    return obj;
15748}
15749
15750function loadingBC(status) {
15751    if (status) {
15752        if ($(".loading-container").length == 0) {
15753            $('html').append("<div class='loading-container'><div class='loading'><div></div>");
15754        }
15755    }
15756    else {
15757        $(".loading-container").remove();
15758    }
15759}
15760
15761function GetKyHieu(isSBL) {
15762    if (isSBL != true) {
15763        let maLoaiHoaDon = ($("#hdnLOAI_HOA_DON").val() != null ? $("#hdnLOAI_HOA_DON").val() : $('#LoaiHoaDonCbo').val());
15764        isSBL = (maLoaiHoaDon == "10" || maLoaiHoaDon == "11" || maLoaiHoaDon == "13");
15765    }
15766
15767    var kiTuDau = $("#kyHieuMau").val();
15768    var kiTuCuoi = $("#KY_HIEU").val();
15769    var kyHieuFull70 = $.trim($('#year').val()) + $('#kyHieuMauHauTo').val();
15770    if (kiTuCuoi?.length === 1) {
15771        kiTuCuoi = "00" + kiTuCuoi;
15772    } else if (kiTuCuoi?.length === 2) {
15773        kiTuCuoi = "0" + kiTuCuoi;
15774    } else if (kiTuCuoi?.length === 0) {
15775        kiTuCuoi = "000";
15776    }
15777    if (isSBL != null && isSBL == true) {
15778        if ($('#IS_TT68').val() == "5") return kyHieuFull70;
15779        return kiTuDau + "-" + kiTuCuoi;
15780    }
15781    return kiTuDau + "/" + kiTuCuoi;
15782}
15783
15784function getKyHieuFull() {
15785    if ($('#IS_TT68').val() == "3" && ($('#LoaiHoaDonCbo').val() == 7 || $('#hdnLOAI_HOA_DON').val() == 7)) {
15786        return $("#kyHieuMauTienTo37").val() + '/' + $('#year37').val() + '/' + $('#kyHieuMauHauTo37').val();
15787    }
15788    return $('#MAU_SO_HAU_TO').val() + $.trim($('#year').val()) + $('#kyHieuMauHauTo').val() + $('#kyHieuMauTienTo').val();
15789}
15790
15791function FillMauSoKyHieu() {
15792    if ($('#IS_TT68').val() == "3" && ($('#LoaiHoaDonCbo').val() == 7 || $('#hdnLOAI_HOA_DON').val() == 7)) {
15793        var kyhieu = $("#kyHieuMauTienTo37").val() + '/' + $('#year37').val() + '/' + $('#kyHieuMauHauTo37').val();
15794        binddingValue('txt_invoiceSeries', kyhieu);
15795        $('#kyHieuFull37').text(kyhieu);
15796    }
15797    else if ($('#IS_TT68').val() == "5") {
15798        var kyhieu = $.trim($('#year').val()) + $('#kyHieuMauHauTo').val();
15799        $('#kyHieuFull70').text(kyhieu);
15800    }
15801    else {
15802        var mausokyhieu = $('#MAU_SO').val() + getKyHieuFull();
15803        $('#kyHieuFull').text(mausokyhieu);
15804        binddingValue('txt_invoiceSeries', mausokyhieu);
15805        return mausokyhieu;
15806    }
15807}
15808
15809function FillMauSoKyHieu37() {
15810    var kyhieu = $("#kyHieuMauTienTo37").val() + '/' + $('#year37').val() + '/' + $('#MAU_SO_HAU_TO37').val();
15811
15812    binddingValue('txt_invoiceSeries', kyhieu);
15813    $('#kyHieuFull37').text(kyhieu);
15814}
15815
15816function createSuaHoaDonRequest(isInsert = false) {
15817    var formData = new FormData();
15818    formData.append("MaMau", $('#maHoaDonDuocChon').val() ? $('#maHoaDonDuocChon').val() : $('#groupItem').find("li.checked").data("mamau"));
15819    if ($('#IS_TT68').val() == IsThongTu.TT78 && $('#LoaiHoaDonCbo').val() == 7) {
15820        formData.append("MauSo", $("#MAU_SO").val());
15821        formData.append("KyHieuTienTo", $("#kyHieuMauTienTo37").val());
15822        formData.append("KyHieuHauTo", $("#kyHieuMauHauTo37").val());
15823        formData.append("NamPhatHanh", $("#year37").val());
15824        formData.append("KyHieu", getKyHieuFull());
15825    }
15826    else if ($('#IS_TT68').val() == IsThongTu.TT78) {
15827        formData.append("MauSo", $("#MAU_SO").val());
15828        formData.append("KyHieuTienTo", $("#kyHieuMauTienTo").val());
15829        formData.append("KyHieuHauTo", $("#kyHieuMauHauTo").val());
15830        formData.append("NamPhatHanh", $("#year").val());
15831        formData.append("MauSoHauTo", $("#MAU_SO_HAU_TO").val());
15832        formData.append("KyHieu", getKyHieuFull());
15833    }
15834    else if ($('#IS_TT68').val() == IsThongTu.ND70) {
15835        formData.append("KyHieuHauTo", $("#kyHieuMauHauTo").val());
15836        formData.append("MauSo", $("#MAU_SO").val());
15837        formData.append("NamPhatHanh", $("#year").val());
15838        formData.append("KyHieu", GetKyHieu());
15839    }
15840    else {
15841        formData.append("MauSo", $("#MAU_SO").val());
15842        formData.append("KyHieuTienTo", $("#kyHieuMau").val());
15843        formData.append("KyHieuHauTo", $("#year").val());
15844        formData.append("KyHieu", GetKyHieu());
15845    }
15846
15847    formData.append("IS_TT68", $("#IS_TT68").val());
15848    formData.append("TenMau", $("#TEN_MAU").val());
15849    formData.append("STT", $("#txtSTT").val());
15850    formData.append("NguonHoaDon", $('#NguonHoaDonCbo').val() === "0" || $('#NguonHoaDonCbo').val() === "1" ? "MG" : "MDTK");
15851    formData.append("LoaiHoaDon", $('#LoaiHoaDonCbo').val());
15852    formData.append("NgonNgu", $('#NgonNguCbo').val());
15853    formData.append("KhoGiay", $('#KhoGiayCbo').val());
15854    formData.append("LoaiTrang", $('#LoaiTrangCbo').val());
15855    formData.append("IsInsert", isInsert);
15856    formData.append("KhoiTaoIdString", $('#maKhoiTaoId').val());
15857    return formData;
15858}
15859
15860
15861function ValidateFileUpload(selector, selectorFileName) {
15862    //Upload file import lên để lấy cấu hình sheet
15863    //Check file extension
15864    var fileUpload = $(selector)[0].files[0];
15865    var fileExtension = ['jpg', 'pdf', 'png', 'xls', 'xlsx', 'xps', 'xslt', 'doc', 'docx', 'xls', 'csv'];
15866    if ($.inArray(fileUpload.name.split('.').pop().toLowerCase(), fileExtension) === -1) {
15867        notifyObj.warning('File lựa chọn không đúng định dạng. Vui lòng chọn các file có định dạng jpg, pdf, png, xls, xlsx, xps, xslt, doc, docx.');
15868    } else {
15869        $(selectorFileName).val(fileUpload.name);
15870        var formdata = new FormData();
15871        formdata.append(fileUpload.name, fileUpload);
15872        formdata.append('fileName', fileUpload.name);
15873        callApi('POST', '/MauHoaDonDeXuat/GetDataPrevew', formdata).then(function (result) {
15874            if (result.code != 1) {
15875                notifyObj.warning(result.msg);
15876            }
15877        }, function (error) {
15878            console.log(error);
15879        });
15880    }
15881}
15882
15883function KhoiTaoToDB() {
15884    loading(true);
15885
15886    callApi('POST', '/thiet-ke-mau/khoi-tao/' + $('#maKhoiTaoId').val()).then(
15887        function (data) {
15888            if (data.code === 1) {
15889                notifyObj.success(data.msg);
15890                setTimeout(() => {
15891                    window.location.href = data.directLink;
15892                },
15893                    2000);
15894            }
15895            else {
15896                notifyObj.warning(data.msg);
15897            }
15898            loading(false);
15899        },
15900        function (err) {
15901            console.log(err);
15902            loading(false);
15903        }
15904    );
15905}
15906
15907function KhoiTao() {
15908    luuMau(false);
15909    if (validateMHD()) {
15910        if (SaveThongTinMR()) {
15911            KhoiTaoToDB();
15912        }
15913    }
15914}
15915
15916function GuiYeuCauHoTro(type = 0) {
15917    var eleValidate = type === 0 ? 'Frm_YeuCauMoiMHD #GHI_CHU' : 'Frm_YeuCauChinhSuaMHD #GHI_CHU';
15918
15919    if (validateAlert(validateYeuCau(eleValidate))) {
15920        //lấy thông tin kí hiệu mẫu số, loại hóa đơn
15921        var formData = new FormData();
15922        formData.append("MaMau", $('#maHoaDonDuocChon').val() ? $('#maHoaDonDuocChon').val() : $('#groupItem').find("li.checked").data("mamau"));
15923        formData.append("MauSo", $("#MAU_SO").val());
15924        formData.append("KyHieuTienTo", $("#kyHieuMau").val());
15925        formData.append("KyHieuHauTo", $("#KY_HIEU").val());
15926        formData.append("KyHieu", GetKyHieu());
15927        formData.append("TenMau", $("#TEN_MAU").val());
15928        formData.append("STT", $("#txtSTT").val());
15929        formData.append("NguonHoaDon", $('#NguonHoaDonCbo').val() === "0" || $('#NguonHoaDonCbo').val() === "1" ? "MG" : "MDTK");
15930        formData.append("LoaiHoaDon", $('#LoaiHoaDonCbo').val());
15931        formData.append("NgonNgu", $('#NgonNguCbo').val());
15932        formData.append("KhoGiay", $('#KhoGiayCbo').val());
15933        formData.append("LoaiTrang", $('#LoaiTrangCbo').val());
15934        formData.append("IsInsert", $('#Frm_YeuCauMoiMHD').length > 0);
15935        formData.append('GhiChu', type === 0 ? $('#Frm_YeuCauMoiMHD #GHI_CHU').val() : $('#Frm_YeuCauChinhSuaMHD #GHI_CHU').val());
15936
15937        var fileThietKe = $('[name=FileThietKe]');
15938        fileThietKe = type === 1 && $('#maHoaDonDuocChon').length === 0 ? fileThietKe[1].files[0] : fileThietKe[0].files[0];
15939        formData.append('FileThietKe', fileThietKe);
15940
15941        var link = type === 0 ? configCongViec.urlTaoYeuCauThietKeMoi : configCongViec.urlTaoYeuCauSuaMau;
15942
15943        callApi('POST', link, formData).then(
15944            function (data) {
15945                if (data.code === 1) {
15946                    EnableKhoiPhuc(false);
15947                    notifyObj.success(data.msg);
15948                    $("#popup_YeuCauMoiMHD").modal('hide');
15949
15950                    setTimeout(() => {
15951                        if (data.url)
15952                            window.location.href = data.url;
15953                    }, 2000);
15954                } else { notifyObj.warning(data.msg); }
15955            },
15956            function (err) {
15957                console.log(err);
15958            }
15959        );
15960    }
15961};
15962//Show video nhiều trang
15963$(document).ready(function () {
15964    var isShowpopoverVideo = $.cookie('isShowpopoverVideo');
15965    $(".btn-SPVideoXuLy").popover({
15966        html: true,
15967        content: function () {
15968            var content = $(this).attr("data-popover-content");
15969            var html = $(content).children(".popover-content").html()
15970            return html;
15971        },
15972        title: function () {
15973            var content = $(this).attr("data-popover-content");
15974            return $(content).children(".popover-title").html();
15975        }
15976    }).on("show.bs.popover", function () {
15977        $(this).data("bs.popover").tip().css("width", "300px");
15978        $(this).data("bs.popover").tip().css("max-width", "300px");
15979    }).on("shown.bs.popover", function () {
15980        $('.not-show-video').prop('checked', $.cookie('isShowpopoverVideo') == "true");
15981    });
15982
15983
15984    $(document).on('click', ".not-show-video", function (e) {
15985        if (isShowpopoverVideo == undefined) {
15986            $.cookie('isShowpopoverVideo', $(this).prop('checked'), { expires: 1000, path: '/' });
15987        } else {
15988            $.removeCookie('isShowpopoverVideo', { path: '/' });
15989            $.cookie('isShowpopoverVideo', $(this).prop('checked'), { expires: 1000, path: '/' });
15990        }
15991        isShowpopoverVideo = $.cookie('isShowpopoverVideo');
15992        if (isShowpopoverVideo == "true") {
15993            $(".btn-SPVideoXuLy").popover('hide');
15994        }
15995    })
15996
15997    $(document).on('shown.bs.modal', '#XyLyHoaDonModal', function () {
15998        if (isShowpopoverVideo == "false" || isShowpopoverVideo == undefined) {
15999            $(".btn-SPVideoXuLy").popover('show');
16000        }
16001    })
16002
16003    $(document).on('shown.bs.modal', '#chonHoaDonXuLy', function () {
16004        if (isShowpopoverVideo == "false" || isShowpopoverVideo == undefined) {
16005            $(".btn-SPVideoXuLy").popover('show');
16006        }
16007    })
16008
16009
16010    $("body").on("click", function (e) {
16011        $(".btn-SPVideoXuLy").each(function () {
16012            if (!$(this).is(e.target) && $(this).has(e.target).length === 0 && $(".popover").has(e.target).length === 0) {
16013                $(this).popover('hide')
16014            }
16015        })
16016    })
16017});
16018
16019$(document).ready(function () {
16020
16021    // chỉnh height tự động của site
16022    var heightWindow = $(document).height() - 45;
16023    if ($('#side').width() < heightWindow) {
16024        $("#side").attr('style', 'min-height:' + heightWindow + 'px !important');
16025    }
16026
16027    if (!document.body.classList.contains("[email protected]")) {
16028        sessionStorage.removeItem("[email protected]");
16029    }
16030
16031    $(".selectpicker:not(.bs-select-hidden):not(.selectpicker-noSearch)").selectpicker({
16032        liveSearch: true,
16033        showSubtext: true
16034    });
16035   
16036    setContentDanhMuc();
16037});
16038$(".table-responsive").find("table").on("draw.dt", function () {
16039    ModifyCheckbox();
16040});
16041
16042$(document).on('click', 'form button[type="submit"]', function (e) {
16043    var formid = $(this).closest('form').attr('id');
16044    if (formid != null && formid != undefined) {
16045        var valid = $('#' + formid)[0].checkValidity();
16046        if (valid) {
16047            loaddingByEinvoice(true);
16048            e.preventDefault();
16049            setTimeout(function () {
16050                $('#' + formid).submit();
16051            }, 500);
16052        }
16053    }
16054});
16055$(document).on('click', 'form .submit-skip', function (e) {
16056    $("#submitskip").val('true');
16057});
16058
16059function callShowToolTipFull(str) {
16060    var container = '<div class = "fix" style="page-break-inside: avoid " xmlns:hnx="http://www.w3.org/2000/09/xmldsig#" xmlns:exsl="http://exslt.org/common" xmlns:inv="http://laphoadon.gdt.gov.vn/2014/09/invoicexml/v1">';
16061    container += '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">';
16062    container += '<title>Bạn cần trợ giúp?</title>';
16063    container += '<meta name="viewport" content="width=device-width, initial-scale=1.0">';
16064    container += '<meta http-equiv="X-UA-Compatible" content="IE=Edge">';
16065    container += '<style type="text/css">body{ background-color: #eeeeee;} .fix{min-height: calc(100vh - 170px);margin: auto;margin-top: 20px;padding: 15px 15px 15px 15px;border-radius: 5px;box-shadow: 0px 0px 5px #ccc;background-color: white;max-width: 1080px;} .container { height: calc(100% - 120px);font-size: 14px;line-height: 20px;font-family: "Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;padding: 40px;border-radius: 5px; margin: 20px;position: relative;display: table;color: #000;text-align: justify;}img{max-width:700px;margin-bottom:15px}</style>';
16066    container += '<div class="container">' + str + '</div></div>';
16067    var tab = window.open('', '_blank');
16068    tab.document.write(container);
16069}
16070
16071function callShowToolTipFullEmail(str) {
16072    var container = '<div class = "fix" style="page-break-inside: avoid " xmlns:hnx="http://www.w3.org/2000/09/xmldsig#" xmlns:exsl="http://exslt.org/common" xmlns:inv="http://laphoadon.gdt.gov.vn/2014/09/invoicexml/v1">';
16073    container += '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">';
16074    container += '<title>Bạn cần trợ giúp?</title>';
16075    container += '<meta name="viewport" content="width=device-width, initial-scale=1.0">';
16076    container += '<meta http-equiv="X-UA-Compatible" content="IE=Edge">';
16077    container += '<style type="text/css">body{ background-color: #eeeeee;margin: 0; padding: 0; height: 100%; overflow: hidden;} .fix{min-height: calc(100vh - 170px);margin: auto;margin-top: 20px;padding: 15px 15px 15px 15px;border-radius: 5px;box-shadow: 0px 0px 5px #ccc;background-color: white;max-width: 1080px;} .container { position: absolute; left: 0; right: 0; bottom: 0; top: 0;}img{max-width:700px;margin-bottom:15px}</style>';
16078    container += '<div class="container">' + str + '</div></div>';
16079    var tab = window.open('', '_blank');
16080    tab.document.write(container);
16081}
16082
16083function setContentDanhMuc() {
16084    var href = window.location.href;
16085    const heightScreen = $(window).height() - 40;
16086    const heightNavMenu = $(".navbar-top").height();
16087    const heightHeadMenu = $("#fix .row .headMenu").height();
16088    var minHeight = heightScreen - heightNavMenu - heightHeadMenu;
16089    if (href.indexOf("quan-ly-danh-muc") > -1) {
16090        $(".contentFix.box-shadow-border, #demoCssCha").css("min-height", (minHeight + 7) + "px");
16091        $("#demoCssCha").css("height", "auto");
16092    } else if (href.indexOf("quan-ly-gui-email") > -1 || href.indexOf("quan-ly-gui-sms") > -1 || href.indexOf("danh-sach-bien-ban-hoa-don") > -1
16093        || href.indexOf("danh-sach-hoa-don-dien-tu") > -1
16094        || href.indexOf("kho-hoa-don") > -1
16095        || href.indexOf("kho-tin-nhan") > -1
16096        || href.indexOf("danh-sach-don-hang") > -1
16097        || href.indexOf("quan-ly-ky-hoa-don") > -1
16098        || href.indexOf("danh-sach-hoa-don-dien-tu") > -1
16099        || href.indexOf("danh-sach-bien-ban-hoa-don") > -1
16100        || href.indexOf("danh-sach-thong-bao-dieu-chinh-thong-tin-hoa-don") > -1
16101    ) {
16102        $("#demoCssCha").css("min-height", minHeight + "px");
16103    } else if (href.indexOf("quan-ly-ky-hoa-don") > -1) {
16104        $("#demoCssCha").css("min-height", (minHeight + 30) + "px");
16105    } else if (href.indexOf("/bao-cao/") > -1
16106        || href.indexOf("danh-sach-phat-hanh-hoa-don") > -1
16107        || href.indexOf("mau-hoa-don-da-tao") > -1
16108        || href.indexOf("mau-hoa-don") > -1
16109        || href.indexOf("danh-sach-giu-lai-hoa-don") > -1
16110    ) {
16111        $(".content-bao-cao, .contentFix.box-shadow-border").css("min-height", minHeight + "px");
16112    } else if (href.indexOf("countuser") > -1
16113    ) {
16114        $(".content-bao-cao, .contentFix.box-shadow-border").css("min-height", (minHeight + 15) + "px");
16115    }
16116}
16117
16118$(document).ready(function () {
16119    // set border-color input success
16120    $('#formgr').on('success.field.bv', function (e, data) {
16121        data.element.attr('style', 'border-color: #468847 !important');
16122    });
16123    $('#formgr').on('error.field.bv', function (e, data) {
16124        data.element.attr('style', 'border-color: #b94a48 !important');
16125    });
16126
16127    //ẩn warning cua datatable
16128    if ($.fn.dataTable !== undefined)
16129        $.fn.dataTable.ext.errMode = 'throw';
16130
16131    $('.datepicker').datepicker({ format: "dd/mm/yyyy", autoclose: true, todayHighlight: true }).on('changeDate', function (ev) {
16132        if ($("#formgr").length > 0) {
16133            //$("#formgr").data('bootstrapValidator').revalidateField($(this).attr('id'));
16134        }
16135    });
16136    $('.datepickerndc').datepicker({ format: "dd/mm/yyyy", autoclose: true, todayHighlight: true });
16137    // đóng thông báo (lỗi hoặc success) sau một khoảng thời gian
16138    closeAlert();
16139    // sẽ reload page khi sử dụng back của browser.(issure resubmit form)
16140    if ($('#isReload').val() === 'yes') {
16141        location.reload(true);
16142    } else {
16143        $('#isReload').val('yes');
16144    }
16145
16146    $('#dock').Fisheye(
16147        {
16148            maxWidth: 40,
16149            items: 'a',
16150            itemsText: 'span',
16151            container: '.dock-container',
16152            itemWidth: 40,
16153            proximity: 90,
16154            halign: 'center'
16155        }
16156    );
16157
16158});;

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.